output(tv, k); //вывод массива телевизоров на экран

search(tv, goroda, k, &kg); //формирование массива городов

printf("Result:\n%d cities with the lowest price of the TV:\n",kg);

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

puts(goroda[i]);

return 0;

}

Задача 4.2. Модифицировать программу таким образом, чтобы она вводила структуры из текстового файла и записывала результаты в файл.

В решении данной задачи приведены те описания данных и функции, которые будут отличаться от предыдущей задачи. На месте остальных функций расположены комментарии.

/* подключение библиотек, шаблоны структур, объявление констант аналогично первой части */

//формирование массива городов также аналогично части 1

//замена символа '\n' на '\0'

void zamena(char *str)

{ char *s; //указатель на текущий символ

s=str;

while (*s!='\n') s++;

*s='\0';

}

void input (tvSet *tv, int *k) //чтение данных из файла

{ char s[81]; int i;

FILE *fin;

printf("Enter input-file name: "); gets(s);

fin=fopen(s, "r");

if (fin==NULL)

{ printf ("No such file\n");

getchar();

}

Else

{ //на первой строке в файле расположено число структур

fscanf(fin, "%d", k);

FCLR; //пропуск символов до конца строки файла

for(i=0; i<*k; i++)

{ //каждое поле структуры занимает в файле отдельную строку

fgets(tv[i].name, Lmax, fin); zamena(tv[i].name);

fscanf(fin, "%d", &tv[i].price);

fscanf(fin, "%d", &tv[i].diag);

FCLR;

tv[i].color=fgetc(fin);

fgets(s, Lmax, fin);

fgets(tv[i].pr.gorod, Lmax, fin); zamena(tv[i].pr.gorod);

fgets(tv[i].pr.zavod, Lmax, fin); zamena(tv[i].pr.zavod);

fgets(tv[i].pr.fam, Lmax, fin);

}

fclose(fin);

}

}

//вывод данных на экран и формирование массива городов- аналогично

//предыдущей задаче

Main()

{ tvSet tv[Kmax];

int k, kg=0, i;

char goroda[Kmax][Lmax];

FILE *fout;

input(tv, &k); //ввод массива структур из файла

Output(tv, k); //вывод массива структур на экран

search(tv, goroda, k, &kg); //поиск городов

//вывод результата на экран и в файл

fout=fopen("result.txt", "w");

printf("Result:\n%d cities with the lowest price of the TV:\n", kg);

fprintf(fout, "Result:\n%d cities with the lowest price of the TV:\n",kg);

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

{

puts(goroda[i]);

fprintf(fout, "%s\n", goroda[i]);

}

fclose(fout);

puts("Results saved in file: \"result.txt\"");

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: