Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе - 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;
}

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


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

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

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