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

  1. Здание: Есть страна о которой сказано 1)название 2)население 3) площадь. Нужно отсортировать по спаданию количества населения.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47            #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

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

#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;
 
}

СДЕЛАЙТЕ РЕПОСТ

13   голосов, оценка 4.308 из 5



Похожие ответы
  1. Дали лабу,писать можно только на C. С ним не особо знаком. Вопрос такой. После чтения всех символов из файла, мне нужно отсортировать полученное по алфавиту. Пробую обычным пузырьком, но после него у меня компиль(Visual Studio 2017) ругается на free(text). Немного не понимаю, как я порчу кучу. Может я торможу, подскажите пожалуйста.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 //19. Задан текстовый файл F1, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены, и переписать новый текст в файл F2. #include #include #include #include #include #include   void bubble(char *i, int n);   void main(void) {     SetConsoleCP(1251);     SetConsoleOutputCP(1251);       char *text = NULL;     int size = 0;     FILE *f;     f = fopen("F:\Input.txt", "r");       if (f != NULL)     {         fseek(f, 0, SEEK_END);         size = ftell(f);         fseek(f, 0, SEEK_SET);           text = (char*)malloc(size * sizeof(char));         fread(text, size, 1, f);     }     fclose(f);       bubble(text, strlen(text));     printf("%s", text);       f = fopen("F:\Output.txt", "w");     fwrite(text, 1, size, f);       free(text);     fclose(f);     _getch(); }   void bubble(char *i, int n) {     int a, b;     char t;       for (a = 0; a < n; a++)         for (b = n - 1; b >= a; b--)         {             if (i[b - 1] > i[b])             {                 t = i[b - 1];                 i[b - 1] = i[b];                 i[b] = t;             }         }   }

  1. Нужна помощь. Нужно написать код для сортировки строк, с клавиатуры вводится наименование города и популяция. Задача отсортировать в алфавитном порядке города. Вот сам код в СИ.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include #include #include "struct.h"     void inputTown(struct town*pt); void printTown(struct town*pt); void sortTown(struct town*pt);   int main(int argc, char**argv) {     struct town Towns[10];       for(int i = 0; i < 10; i++){         inputTown(&Towns[i]);     }         sortTown(&Towns);         for(int i = 0; i < 10; i++){         printTown(&Towns[i]);     }       getchar();     return 0; }   void inputTown(struct town*pt) {     printf("Input netx town.\n");     printf("Name: ");     gets_s(pt->name, NAMELENGHT);       printf("Population: ");     scanf_s("%d", &pt->population);     getchar();     return; }   void printTown(struct town*pt) {     printf("town: %s, population:%d\n", pt->name, pt->population); }   void sortTown(struct town*pt) {     char tmp[80];     char*ptr = tmp;       for (int i = 0; i < NAMELENGHT - 1; i++)                     //сортировка выбором         for (int j = i; j < NAMELENGHT; j++) {             if (strcmp(pt[i].name, pt[j].name) > 0)             {                 *ptr = pt[i].name;//[80]                 int x = pt[i].population;                 strncpy_s(pt[i].name, NAMELENGHT, pt[j].name, strlen(pt[j].name));                 pt[i].population = pt[j].population;                 strncpy_s(pt[j].name, NAMELENGHT, ptr, strlen(ptr));                 pt[j].population = x;             }         } }собственно вроде ошибка где то в функции sortTown, либо может неверно аргумент отправляю в функцию. Подскажите где ошибка пожалуйста.

  1. Не получается сделать сортировку, уже много чего перепробовал, помогите пожалуйстаC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include struct uchs {     char klass[20];     int year;     char name[20];     int str;     char rasp[150];   }; int main() {     int i;     int s;     struct uchs arr[100]; //100 ГґГ*ìèëèé Г¬Г*êñèìóì     int count_uch = 0; //Г±Г·ГҐГІГ·ГЁГЄ ГґГ*ìèëèé     int d = 8;     //int j, k;     int a = 0;     int fh = _open("file.dat", _O_RDWR | _O_BINARY); //ïðîâåðÿåì, Г±ГіГ№ГҐГ±ГІГўГіГҐГІ ëè ГґГ*éë         if (fh == -1)     {   //åñëè Г*ГҐ Г±ГіГ№ГҐГ±ГІГўГіГҐГІ, ñîçäГ*ГҐГ¬           fh = _creat("file.dat", _S_IREAD | _S_IWRITE);         if (fh == -1)             return 1;     }     //ïîêГ* Г*ГҐ ГЄГ®Г*ГҐГ¶ ГґГ*éëГ* ñ÷èòûâГ*ГҐГ¬ ГЁГ*ГґГі Гў Г¬Г*Г±Г±ГЁГў ñòðóêòóð     while (!_eof(fh))     {         _read(fh, &arr[count_uch], sizeof arr[count_uch]);         count_uch++;  //óâåëè÷èâГ*ГҐГ¬ Г°Г*çìåðГ*îñòü Г¬Г*Г±Г±ГЁГўГ* Г*Г* 1 Г± ГЄГ*æäûì Г±Г·ГЁГІГ*Г*Г*ûì ýëåìåГ*òîì     }     do     {         setlocale(LC_ALL, "Rus");         system("cls"); //î÷èñòêГ* ГЅГЄГ°Г*Г*Г*         printf("1: ÄîáГ*ГўГЁГІГј Г§Г*ГЇГЁГ±Гј\n2: Âûâåñòè ГЁГ*ôîðìГ*öèþ Г® ГўГ±ГҐГµ ГіГ·ГҐГ*ГЁГЄГ*Гµ\n 3: îòñîðòèðîâГ*ГІГј:\n0: Г‡Г*êðûòü ïðîãðГ*ììó\nÂûáåðèòå ГЇГіГ*ГЄГІ: ");         scanf("%d", &d);         switch (d) //ìåГ*Гѕ         {                 case 1: {                     setlocale(LC_ALL, "Rus");                     //äîáГ*âëåГ*ГЁГҐ Г*îâîé Г§Г*ГЇГЁГ±ГЁ                     printf("Ââåäèòå èìÿ/ГґГ*ìèëèþ: ");                     fflush(stdin);                     gets(arr[count_uch].name);                         printf("Ââåäèòå ГЄГ«Г*Г±Г± ГіГ·ГҐГ*ГЁГЄГ*: ");                     fflush(stdin);                     gets(arr[count_uch].klass);                     printf("Ââåäèòå ñêîëüêî ëåò ГіГ·ГҐГ*ГЁГЄГі: ");                     fflush(stdin);                     scanf("%d", &arr[count_uch].year);                       printf("Ââåäèòå ñêîëüêî äåГ*ГҐГЈ Г*Г* ГЄГ*ðòî÷êå Гі ГіГ·ГҐГ*ГЁГЄГ*: ");                     fflush(stdin);                     scanf("%d", &arr[count_uch].str);                     printf("Ââåäèòå Г°Г*Г±Г±ГЇГЁГ±Г*Г*ГЁГҐ ГіГ·ГҐГ*ГЁГЄГ*: ");                     fflush(stdin);                     gets(arr[count_uch].rasp);                     count_uch++;                     break; }                                         case 2: {setlocale(LC_ALL, "Rus");                     for (i = 0; i arr[j].year)                           {                               uchs s_arr = arr[count_uch];                               arr[i] = arr[j];                               arr[j] = s_arr;                           }                       }                   }                   _getch();                   break; }                   }           }         while (d != 0);         return 0;     }

  1. нужно отсортировать каждую строку двумерной матрицы по возростанию. если можно с объяснением.Добавлено через 54 минуты примерно имею следующий код:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include   int main(void) {         int a[2][4];     int i, j, z,k,y;     printf(" vvedite massiv: \n");     for (i = 0; i < 2; i++)     for (k = 0; k < 4; k++)         scanf("a[%d][%d]", &a[i][k]);     for (i = 0; i < 1; i++)     {         z = a[i];         for (j = i - 1; j >= 0; j--)             if (z < a[j]) {                 a[j + 1] = a[j];                 a[j] = z;             }     }      for (i = 1; i < 2; i++)         {         y = a[i];         for (j = i - 1; j >= 0; j--)             if (y < a[j]) {                 a[j + 1] = a[j];                 a[j] = y;             }     }     printf("\n otsortirovannyi massiv: \n", a[i]);     for (i = 0; i < 2; i++)     for (k = 0; k < 4; k++)         printf("%d%d\n", a[i][j]);

  1. Привет всем. Подскажите, как можно сортануть элементы списка. Есть список книг и нужно упорядочить их по количеству страниц. Вот пример:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include #include   int main (void) {     typedef struct list     {         char *name;         int pages;         struct list *next;     } list;         list *book1, *book2,*book3;     book1 = book2 = book3 = NULL;         book1 = malloc(sizeof(list));     book1->pages = 200;     book1->next = NULL;         book2 = malloc(sizeof(list));     book2->pages = 150;     book2->next = NULL;         book3 = malloc(sizeof(list));     book3->pages = 300;     book3->next = NULL;         book1->next = book2;     book2->next = book3;     book3->next = NULL;         list *ptr1;     ptr1 = book1;         list *ptr2;     ptr2 = book1;         while(ptr1!=NULL)     {         while(ptr2!=NULL)         {             if(ptr2->next->pages < ptr2->pages)             {                 list *minbook;                 minbook=ptr2->next;                 ptr2->next=ptr2;                 ptr2=minbook;             }                             ptr2=ptr2->next;         }                 ptr1=ptr1->next;     }         ptr1=ptr2;     while(ptr1!=0)     {         printf("%d\n",ptr1->pages);     } }

  1. вот код, задача отсортировать массив по возрастанию, а он ,вместо отсортированного массива, выводит в ответ одни нулиC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include #include #include #include main(){ clrscr(); float mass_q[100]; int n; printf("Vvedite N ");scanf("%d", &n); printf("\n\n"); for (int i=0;i0)pol++;     if(mass_q[i]<0)otrit++;}     printf("\n\n\notritsatelnyh=%d\n\n\n",otrit);     // bylo pokazano skolko otritsat eleventow     int tmp;     for(i=0;i

  1. Уважаемые программист, помогите пожалуйста отсортировать книги за ценой по возрастанию их стоимости. Заранее спасибоC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #include #include int main() {     int i, T, j ;   int s;     union book{         char avtor[50];         int stranitsi;         int price;         char name[50];     };     setlocale(LC_ALL, "rus");       printf(" введите количество книг: ", T);     scanf("%d", &T);     union book kni[T];     for(i=0; i kni[i+1].price)             {   s=kni[i].price;                 kni[i].price=kni[i+1].price;                 kni[i+1].price=s;             }         for(i=0; i

  1. нужно на си : Отсортировать строки матрицы А(6х7) в порядке убывания.

  1. Надо ввести набор слов и отсортировать их в алфавитном порядке. Помогите, пожалуйста!!!

  1. Есть задание: отсортировать по возрастанию массив, заданный в виде файла. Задание необходимо выполнить двумя способами: с использованием классических массивов и с помощью указателей. Помогите, пожалуйста.