Выяснить, имеются ли в школе однофамильцы - C (СИ)
Формулировка задачи:
Помогите исправить ошибку.Почему он не вводит данные в массив.
Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл f, содержащий сведения об учениках школы.
Выяснить, имеются ли в школе однофамильцы.
Программный код:
#include <stdio.h> #include <stdlib.h> #define n 10 int main() {struct rec {char name[15]; char fam[15]; char kl[15]; char god[15]; unsigned long int zip;}; struct rec array[n]; int i,c,j; FILE *pf; pf=fopen("new1.txt","w"); printf("Vvedite kolichestvo uchenikov:\n"); scanf("%d",&c); for(i=1;i<c; ++i) {printf("Vvedite famili:\n"); scanf("%s",fam[i]); printf("Vvedite imya:\n"); scanf("%s",name[i]); printf("Vvedite klass:\n"); scanf("%d",kl[i]); printf("Vvedite god:\n"); scanf("%d",god[i]); } printf("Odnofamily:\n"); for(i=1;i<c; ++i) for(i=1;i<c; ++i) if (array[i].fam == array[j].fam; i!=j) printf("%s%s",array[i].fam, array[i].name); fclose(pf); system("PAUSE"); return 0; }
Решение задачи: «Выяснить, имеются ли в школе однофамильцы»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> main() { struct rec { char name[15], fam[15], kl[15], god[15]; }; rec array[100]; FILE *f; int i, c=0, j; f = fopen("new1.txt","r"); while (! feof(f)) { fscanf(f,"%s",array[c].fam); fscanf(f,"%s",array[c].name); fscanf(f,"%s",array[c].kl); fscanf(f,"%s",array[c].god); c++; } fclose(f); printf("Однофамильцы:\n"); for (i=0; i<=c; i++) for (j=i+1; j<c; j++) if (strcmp(array[i].fam, array[j].fam) == 0) printf("%s %s %s %s - %s %s %s %s\n",array[i].fam, array[i].name, array[i].kl, array[i].god, array[j].fam, array[j].name, array[j].kl, array[j].god); getch(); }
Объяснение кода листинга программы
В этом коде используется язык программирования C. Вот список действий, которые выполняются в этом коде:
- Включаются необходимые заголовочные файлы.
- Определяется структура данных
rec
, которая содержит поля для имени, фамилии, класса и бога. - Создается массив структур
rec
с именемarray
и размером 100. - Открывается файл
new1.txt
для чтения с помощью функцииfopen
. - В цикле
while
происходит чтение данных из файлаnew1.txt
с помощью функцииfscanf
. Данные сохраняются в массивеarray
. - Файл
new1.txt
закрывается с помощью функцииfclose
. - Выводится сообщение
Однофамильцы:
. - В двух вложенных циклах
for
происходит сравнение фамилий в массивеarray
. Если фамилии совпадают, то выводится информация об однофамильцах. - Программа ожидает нажатия клавиши с помощью функции
getch
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д