Создание консольного приложения
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Для создания текстового файла в консольном приложении используем функцию fprintf(). Текст программы может иметь следующий вид:

. . .

#include <stdio.h>

#include <io.h>

. . .

struct TZap{

char FIO[30];

double s_b;

} Zap;

int size = sizeof(TZap);

FILE *Fz, *Ft;

char File_Zap[] = "zapisi.dat";

char File_Rez[] = "rezult.txt";

void Out(TZap);

 

void main()

{

     int kod, D_f, i=0, j, kol;

     long len;

     TZap st, *mas_Z;

Ft = fopen(File_Rez, "w");

     while(true) {

   puts("\n Create – 1\n Add – 2\n View – 3\n Sort – 4\n EXIT – 0");

   scanf("%d", &kod);

   switch(kod) {

         case 1:

                   if ((Fz=fopen(File_Zap,"wb"))==NULL) {

                            puts("\n Create ERROR!");

                            return;

                   }

                   fclose(Fz);

                   printf("\n Create New File %s !\n",File_Zap);

         break;

         case 2:

                   Fz = fopen(File_Zap,"ab");

                   printf("\n F.I.O. – ");

                   fflush(stdin);                 

                                 gets(Zap.FIO);

                   printf(" Ball – ");       

                                 scanf("%lf", &Zap.s_b);

                   fwrite(&Zap, size, 1, Fz);

                   fclose(Fz);

         break;

         case 3:

                   if ((Fz=fopen(File_Zap,"rb"))==NULL) {

                            puts("\n Open ERROR!");

                            return;

                   }

// Вывод на экран

                   printf("\n\t--------- Informations ---------");

// Запись такой же информации в текстовый файл Ft

                   fprintf(Ft,"\n\t--------- Informations ---------");

                   while(1) {

                          if(!fread(&Zap,size,1,Fz)) break;

                           Out(Zap);

                   }

                   fclose(Fz);

         break;

         case 4:

                   Fz = fopen(File_Zap,"rb");

                   D_f = fileno(Fz);

                                 len = filelength(D_f);

                                 kol = len/size;

                                 mas_Z = new TZap[kol];

// Считываем записи из файла в динамический массив

                   for (i=0; i < kol; i++)                        

                            fread((mas_Z+i), size, 1, Fz);

                   fclose(Fz);

                            printf("\n\t----- S O R T -----\n");

                            fprintf(Ft,"\n\t----- S O R T -----\n");

                            for (i=0; i < kol-1; i++)

                                      for (j=i+1; j < kol; j++)

                                                         if (mas_Z[i].s_b > mas_Z[j].s_b) {

                                                    st = mas_Z[i];

                                                              mas_Z[i] = mas_Z[j];

                                                              mas_Z[j] = st;

                                                         }

                                    for (i=0; i<kol; i++) 

                                                     Out(mas_Z[i]);

                           delete []mas_Z;

                   break;

         case 0:

                   fclose(Ft);

                   return;

       }

}

}

//----------------- Функция вывода одной записи на экран и в файл --------------------

void Out(TZap z)

{

printf("\n %20s , %6.3lf .", z.FIO,z.s_b);

fprintf(Ft, "\n %20s , %6.3lf .", z.FIO, z.s_b);

}

 

Первоначально выбав пункт «1», создаем файл с именем zapisi.dat, который будет располагаться в текущем каталоге (созданной папке). Затем, выбирая пункт «2», последовательно вводим 4 записи. Выбрав пункт «3», просматриваем содержимое файла, а сортированные записи выведем на экран (запишем в файл), выбрав пункт «4». Результаты выполнения программы могут иметь вид:

8.4. Индивидуальные задания

Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».

Каждая запись должна содержать следующую информацию о студентах:

– фамилия и инициалы;

– год рождения;

– номер группы;

– оценки за семестр: по физике, математике, информатике, химии;

– средний балл.

Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.

Содержимое всего файла и результаты решения индивидувльного задания записать в текстовый файл.

 

1. Распечатать анкетные данные студентов, сдавших сессию на 8, 9 и 10.

2. Распечатать анкетные данные студентов-отличников, фамилии которых начинаются с интересующей вас буквы.

3. Распечатать анкетные данные студентов-отличников из интересующей вас группы.

4. Распечатать анкетные данные студентов, фамилии которых начинаются с буквы А, и сдавших математику на 8 или 9.

5. Распечатать анкетные данные студентов, имеющих оценки 4 или 5 по физике и оценку больше 8 по остальным предметам.

6. Распечатать анкетные данные студентов интересующей вас группы. Фамилии студентов начинаются с букв В, Г и Д.

7. Распечатать анкетные данные студентов, не имеющих оценок меньше 4 по информатике и математике.

8. Вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего среднего балла.

9. Вычислить общий средний балл всех студентов и распечатать список студентов интересующей вас группы, имеющих средний балл выше общего среднего балла.

10. Распечатать анкетные данные студентов интересующей вас группы, имеющих неудовлетворительную оценку (меньше 4).

11. Распечатать анкетные данные студентов интересующей вас группы, имеющих оценку 9 или 10 по информатике.

12. Распечатать анкетные данные студентов, имеющих оценки 7 или 8 по физике и оценки 9 или 10 по высшей математике.

13. Вычислить общий средний балл студентов интересующей вас группы и распечатать список студентов этой группы, имеющих средний балл выше общего.

14. Распечатать анкетные данные студентов-отличников интересующей вас группы.

15. Распечатать анкетные данные студентов интересующей вас группы, имеющих средний балл выше введенного с клавиатуры.

16. Распечатать анкетные данные студентов интересующей вас группы, имеющих оценку 8 по физике и оценку 9 по высшей математике.



Дата: 2018-11-18, просмотров: 411.