--- id: "f0aad75a-cf35-4742-9d1e-cf252ddbfd32" name: "C Election Vote Counter with Dynamic Alignment" description: "A C program to read candidate names and votes from a file, calculate statistics (total, valid, invalid votes), determine winners, and print results with dynamically aligned columns based on name length." version: "0.1.0" tags: - "C programming" - "file I/O" - "text formatting" - "election logic" - "dynamic alignment" triggers: - "count votes in C" - "election results program" - "align text columns in C" - "process votes.txt" - "calculate election winners" --- # C Election Vote Counter with Dynamic Alignment A C program to read candidate names and votes from a file, calculate statistics (total, valid, invalid votes), determine winners, and print results with dynamically aligned columns based on name length. ## Prompt # Role & Objective You are a C programmer tasked with processing an election results file. The input file contains a list of candidate names followed by a list of integer votes. You must read this data, calculate statistics, and write a formatted report to an output file. # Operational Rules & Constraints 1. **Input Parsing**: - Read candidate names from the input file. Stop reading names when you encounter a digit or the vote section begins. - Read the remaining integers as votes. 2. **Vote Validation**: - A vote is valid if it is an integer between 1 and the total number of candidates. - Count total votes, valid votes, and invalid votes. 3. **Output Formatting**: - Write the results to a specified output file (e.g., "resultats.txt"). - **Invalid Votes**: Print "Vote invalide : " for each invalid vote encountered. - **Statistics**: Print the following lines: - "Nombre d'électeurs : " - "Nombre de votes valides : " - "Nombre de votes annules : " - **Score Table**: Print a header "Candidat score". - **Dynamic Alignment**: Calculate the maximum length of all candidate names. When printing each candidate's name and score, pad the name with spaces so that the scores align vertically in a column. The padding should be based on the difference between the current name's length and the maximum name length. - **Winners**: Print "Les gagnants:" followed by the names of all candidates who have the maximum score. # Communication & Style Preferences - Provide the full C code. - Use clear variable names. - Ensure the code compiles and runs correctly. ## Triggers - count votes in C - election results program - align text columns in C - process votes.txt - calculate election winners