Сформировать файл “stud”. Напечатать список студентов мужского пола с указанием их возраста. Проблема с кодировкой - C (СИ)
Формулировка задачи:
Задача
Сформировать файл “stud”, имеющий следующую структуру: фамилия студента, пол(буква), год рождения. Напечатать список студентов мужского пола с указанием их возраста. Решение:#include <stdio.h> #include <string.h> #define N 1 struct swed { char fio[31]; char pl; int god; }; int main() { struct swed d[N]; FILE * f; int i, t, k; if((f = fopen("D:\\f.txt", "wb")) != NULL) { for(i = 0; i < N; i++) { printf("prizv: "); gets(d[i].fio); printf("pol : "); d[i].pl = getchar(); printf("god r.: "); scanf("%d", &d[i].god); puts(""); fflush(stdin); } { fwrite(d, sizeof(swed), N, f); fclose(f); } } if((f = fopen("D:\\f.txt", "rb")) != NULL) { fread(d, sizeof(swed), N, f); t = k = 0; for(i = 0; i < N; i++) { if(d[i].pl == 'm') { printf("%s\t( %d )\n", d[i].fio, 2014 - d[i].god); t += 2014 - d[i].god; k++; } } if(k > 0) printf("\Seredniy vik = %g\n", (float)t / k); fclose(f); } return 0; }
Решение задачи: «Сформировать файл “stud”. Напечатать список студентов мужского пола с указанием их возраста. Проблема с кодировкой»
#include <stdio.h> #include <string.h> #define N 2 struct swed { char fio[31]; char pl; int god; }; int main() { struct swed d[N]; FILE *fin, *fout; int i, t, k; if((fin = fopen("D:\\f.txt", "wb")) != NULL) { for(i = 0; i < N; i++) { printf("prizv: "); gets(d[i].fio); printf("pol : "); d[i].pl = getchar(); printf("god r.: "); scanf("%d", &d[i].god); puts(""); fflush(stdin); } fwrite(d, sizeof(swed), N, fin); fclose(fin); } if((fout = fopen("D:\\f.txt", "rb")) != NULL) { fread(d, sizeof(swed), N, fout); t = k = 0; for(i = 0; i < N; i++) { if(d[i].pl == 'm') { printf("%s\t( %d )\n", d[i].fio, 2014 - d[i].god); t += 2014 - d[i].god; k++; } } if(k > 0) printf("Seredniy vik = %lf\n", (double)t / k); fclose(fout); } getchar(); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C.
Структура данных swed
определена для представления информации о студентах. Каждый элемент структуры содержит имя студента (максимум 30 символов), пол студента и возраст студента.
В функции main() создается два массива структур swed
- один для чтения данных из файла и один для записи данных в файл.
Затем происходит открытие файла D:\\f.txt
для записи (режим wb
).
Далее, в цикле, происходит заполнение массива структур swed
данными, введенными пользователем.
После заполнения массива, данные записываются в файл.
Затем, файл закрывается.
После этого, файл открывается для чтения (режим rb
).
Затем, в цикле, происходит чтение данных из файла в массив структур swed
.
Далее, для каждого элемента массива проверяется пол студента. Если пол студента мужской, выводится имя студента и его возраст (2014 - возраст).
Также, подсчитывается средний возраст студентов.
Наконец, файл закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д