Отсортировать страны по спаданию количества населения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здание: Есть страна о которой сказано 1)название 2)население 3) площадь. Нужно отсортировать по спаданию количества населения.
           #include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
struct kraina
{
    char kraina[100];
    int naselennia;
    int ploshcha [200];
 
};
 
int main(void)
{
  struct kraina  Kr[100],  char c, char s,int i, int n, int tmp,  nKr = 0;
  do
  {
      printf("Vvedit nazvy krainu ");
      gets(Kr[nKr].kraina);
      printf("Vvedit naselennia ");
      scanf("%d", & Kr[nKr].naselennia);
      getchar();
      printf("Vvedit ploshchy ");
      scanf("%d", & Kr[nKr].ploshcha);
 
      nKr++;
      printf("continue?(y/n) or sort?(s/n)");
      scanf("%c", &c);
      getchar();
      scanf("%s", &s) ;
      getchar();
 
  } while(c == 'y' || c == 'Y');
     if(c=='s' || c=='Y')
     {   for(i=0; i<nKr; i++)
        if (Kr[i].n<Kr[i+i].n)
        tmp = Kr[i];
        Kr[i] = nKr[i+1] ;
         Kr[i+1] = tmp; 
printf("%/n", Kr[i].nazva);
         }
 
        getch();
      return 0;
 
}

Решение задачи: «Отсортировать страны по спаданию количества населения»

textual
Листинг программы
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
struct kraina
{
    char kraina[100];
    int naselennia;
    int ploshcha;
 
};
 
int main(void)
{
  struct kraina  Kr[100];
  char c='n',s;
  int i,n,j,tmp,nKr = 0;
  do
  {
      printf("Vvedit nazvy krainu ");
      scanf("%s",&Kr[nKr].kraina);
      //gets(Kr[nKr].kraina);
      printf("Vvedit naselennia ");
      scanf("%d", & Kr[nKr].naselennia);
      //getchar();
      printf("Vvedit ploshchy ");
      scanf("%d", & Kr[nKr].ploshcha);
      nKr++;
      printf("continue?(y/n) or sort?(s/n)");
      scanf("%s", &c);
     // getchar();
     // scanf("%s", &s) ;
     // getchar();
 
  } while(c == 'y' || c == 'Y');
     if(c=='s' || c=='n')
     {   
        
     for(j=0;j<nKr;j++)
     {
        for(i=0; i<nKr; i++)
        {
            if (Kr[i].naselennia<Kr[i+1].naselennia)
                {
                    tmp = Kr[i].naselennia;
                    Kr[i].naselennia = Kr[i+1].naselennia ;
                    Kr[i+1].naselennia = tmp; 
                    //printf("%d\n", Kr[i].naselennia);
                }
            
        }
     }
     
        
    }
 for(i=0; i<nKr; i++)
    printf("%d\n", Kr[i].naselennia);
 
 
        getch();
      return 0;
 
}

Объяснение кода листинга программы

Код начинается с объявления структуры kraina, которая содержит поля kraina (название страны) и naselennia (население). Затем объявляется переменная nKr, которая отслеживает количество заполненных записей. В основном цикле программы с помощью функции scanf вводится информация о странах (название, население, площадь). Если введена буква 's' или 'n', то выполняется сортировка массива по населению в порядке убывания. Для этого используется вложенный цикл for, который сравнивает население соседних стран и меняет их местами при необходимости. После сортировки выводится отсортированный список населения стран.

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


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

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

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