Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе - C (СИ)
Формулировка задачи:
Информация передается в программу через файл. Результат работы программы сохраняется в выходном файле, а также выводится на экран.
Определить переменную "студент", содержащую следующие поля: имя, фамилия, отчество студента, название института, номер группы. Данные считать из текстового файла. Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе.
Входные данные:
Липкин Андрей Сергеевич МГУ 160150
Малинова Алиса Степановна УрГэу 320015
Кириллов Михаил Игоревич МГУ 160150
Новикова Ольга Андреевна МГУ 160250
Решение задачи: «Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе»
textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <windows.h> /*чтобы в консоли выводились русские символы*/
#define size 100
typedef struct
{
char famly[20];
char fName[20];
char sName[20];
char univer[20];
char group[20];
} Student;
void find(FILE *fo, Student *stud, char *gr, char *inst, int n)
{
int i, j;
for (i = 0; i < n; i++)
{
j = 0;
while (j < n)
{
if (i == j)
{
j++;
}
if ((strcmp(stud[i].group, stud[j].group) == 0) && (strcmp(stud[i].univer, stud[j].univer) == 0))
{
printf("%s %s %s %s %s\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);
printf("%s %s %s %s %s\n", stud[j].famly, stud[j].fName, stud[j].sName, stud[j].univer, stud[j].group);
j++;
}
else {
j++;
}
}
}
}
int main()
{
SetConsoleOutputCP(1251); /*устанавливает кодировку ВЫВОДА на консоль*/
SetConsoleCP(1251); /*устанавливает кодировку ВВОДА из консоли И ИЗ РЕДАКТОРА КОДА*/
setlocale(LC_ALL, "Russian");
int n = 0;
int i,j;
char inst[20]; /*название института для поиска*/
char gr[20]; /*номер группы для поиска*/
char filename[50]; /*имя файла*/
//char *gr, *inst;
FILE *fp; /*исходный файл*/
FILE *fo;
Student stud[size];
printf("Программа предназначена для нахождения студентов, учащихся в одном институте и в одной группе\n");
printf("Введите имя исходного файла/ путь к файлу\n");
/* scanf("%s", filename);
fp = fopen(filename, "r"); */
fp = fopen("C:\\Users\\Ekaterina\\Desktop\\fin3.txt", "r");
if (fp == NULL)
{
perror("Error opening file");
return 0;
}
else
{
printf("Файл открыт для чтения\n");
printf("Информация, считанная из файла\n\n");
for (i = 0; !feof(fp); i++)
{
fscanf(fp, "%s %s %s %s %s\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);
printf("%s %s %s %s %s\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);
n++;
}
}
printf("\n");
printf("Введите имя результирующего файла/ путь к файлу\n");
/* scanf("%s", filename);
fo = fopen(filename, "w+");*/
fo = fopen("C:\\Users\\Ekaterina\\Desktop\\fon.txt", "w+");
if (fo == NULL)
{
perror("Error opening file");
return 0;
}
else
{
printf("Файл открыт для записи\n");
printf("Информация, записанная в файл\n\n");
find(fo, stud, gr, inst, n);
}
system("pause");
return 0;
}