Отсортировать страны по площади - C (СИ)
Формулировка задачи:
Здравствуйте!
Задача
Создать файл записей с перечисленными в варианте полями. Выполнить сортировку этого файла по указанному признаку.
Мой вариант:
Поля: страна, столица, общая площадь. Сортировка: по площади
Я вот сделала программу, но в файл записывает немного не так:
В файл идет вот такая запись:
Strana France
Stolica ParisPloshad 4578Strana Russia
Stolica MoscowPloshad 10000
Помогите пожалуйста
#include<stdio.h> #include<string.h> #include<io.h> #define N 2 int main (void) { FILE *fp; struct tab { char strana[10]; char stolica[10]; unsigned ploshad; }; struct tab strani[N+1]; int i,f,j,p; clrscr(); for(i=0;i<N;i++) { printf("Vvedite nazvanie strani[%d]\n",i+1); scanf("%s",&strani[i].strana); printf("Vvedite stolicu strani\n"); scanf("%s",&strani[i].stolica); printf("Vvedite ploshad strani\n"); scanf("%u",&strani[i].ploshad); } do { p=0; for(i=0;i<N-1;i++) if(strani[i].ploshad>strani[i+1].ploshad) { strcpy(strani[N+1].strana,strani[i].strana); strcpy(strani[i].strana,strani[i+1].strana); strcpy(strani[i+1].strana,strani[N+1].strana); strcpy(strani[N+1].stolica,strani[i].stolica); strcpy(strani[i].stolica,strani[i+1].stolica); strcpy(strani[i+1].stolica,strani[N+1].stolica); strani[N+1].ploshad=strani[i].ploshad; strani[i].ploshad=strani[i+1].ploshad; strani[i+1].ploshad=strani[N+1].ploshad; p=1; } } while(p==1); for(i=0;i<N;i++) { printf("Strana %s\n",strani[i].strana); printf("Stolicu strani %s\n",strani[i].stolica); printf("Ploshad strani %u\n",strani[i].ploshad); } if ((fp=fopen("file.txt","a+"))==NULL) { printf("Ne mogy otkrit' file.\n"); exit(1); } for(i=0;i<N;i++) { fprintf(fp,"Strana %s\n",strani[i].strana); fprintf(fp,"Stolica %s",strani[i].stolica); fprintf(fp,"Ploshad %u",strani[i].ploshad); } fclose(fp); return 0; }
Решение задачи: «Отсортировать страны по площади»
textual
Листинг программы
fprintf(fp,"Strana %s",strani[i].strana); fprintf(fp,"Stolica %s",strani[i].stolica); fprintf(fp,"Ploshad %u\n",strani[i].ploshad);
Объяснение кода листинга программы
- В данном коде используется функция
fprintf
, которая предназначена для форматированного вывода данных в файл. fp
- это файловый указатель, который указывает на файл, в который производится запись.strani[i]
- это массив структур, который содержит информацию о странах. Каждая структураstrani
содержит три поля:strana
(название страны),stolica
(столица страны) иploshad
(площадь страны).i
- это индекс, который используется для обращения к каждому элементу массиваstrani
.- В каждой итерации цикла
fprintf
выводит в файл название страны (strana
), столицу (stolica
) и площадь (ploshad
) соответствующей страны. - После вывода каждого набора данных, функция
fprintf
добавляет символ новой строки (\n
), чтобы перейти на следующую строку. - В результате выполнения данного кода, в файл будет записан список стран, отсортированных по площади.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д