Выяснить, имеются ли в школе однофамильцы - 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. Вот список действий, которые выполняются в этом коде:

  1. Включаются необходимые заголовочные файлы.
  2. Определяется структура данных rec, которая содержит поля для имени, фамилии, класса и бога.
  3. Создается массив структур rec с именем array и размером 100.
  4. Открывается файл new1.txt для чтения с помощью функции fopen.
  5. В цикле while происходит чтение данных из файла new1.txt с помощью функции fscanf. Данные сохраняются в массиве array.
  6. Файл new1.txt закрывается с помощью функции fclose.
  7. Выводится сообщение Однофамильцы:.
  8. В двух вложенных циклах for происходит сравнение фамилий в массиве array. Если фамилии совпадают, то выводится информация об однофамильцах.
  9. Программа ожидает нажатия клавиши с помощью функции getch.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы