@PHASMO
born to code

Как отсортировать массив?

помогите пожалуйста. язык Си
задание:
1) Создать Массив с именами городов. (Города даны изначально)
2) Создать Массив с кол-вом людей в них проживающих. (инфу взял из Wiki)
3) Написать функцию, которая принимает два массива на вход, и выводит данные в виде таблицы.
4) Написать функцию, которая принимает два массива на вход, и выводит отсортированную таблицу городов в порядке убывания населения.
Я вот отсортировал массив (количество населения) но когда я сортирую массив городов то оно двигает только первую букву названия города (пример: вместо Moscow выводит, Toscow вместо New-York выводит Мew-York)
как сделать так чтобы оно передвигало все слово а не только первую букву?
может я не правильно начал решать задание?? я уже не знаю что с ним делать...
вот код:
#include <stdio.h>
#include <stdlib.h>

int func (int len, int peoples[], int count, char citys[][len] )
{
  
  char tmp1[count][len];


  for(int i = 0 ; i < count - 1; i++) 
  { 
    for(int j = 0 ; j < count - i - 1 ; j++) 
    {  
      if(peoples[j] < peoples[j+1])
      {           
        int tmp = peoples[j];
        peoples[j] = peoples[j+1] ;
        peoples[j+1] = tmp; 

        
        for (int r = 0; r < count ;r++)
        {
          tmp1[count][r] = *citys[j]; 
          *citys[j] = *citys[j+1] ;
          *citys[j+1] = tmp1[count][r]; 
        }
      }
    }
  }

  return 0;
}

int main ()
{
	char cities[][10]={ {"Moscow"},{"New-York"},{"London"},{"Minsk"} ,{"Kiev"},{"Warsaw"},{"Berlin"},{"Tokio"},{"Hong-Kong"} };
	int people[] = {12330126, 8400000, 8500000, 1836808, 2893000, 1700536, 3950887, 13370198, 7071576};
	int length = sizeof cities / sizeof cities[0];
  
  func(sizeof(cities[0]), people, length, cities); 

  for (int k = 0; k < length;k++)
  {
  	printf("In town - %-10s %s %-9d peoples\n",cities[k],"lives", people[k]);
  }  
	return 0;
}
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
ThePyzhov
@ThePyzhov
iOS Ninja
Первый аргумент в вашей функции, как я понимаю, подразумевает длину слова?
Если да, то sizeof строки не зависит от ее реальной длины.

Во внутреннем цикле, когда вы пытаетесь поменять слова местами, у вас не изменяется переменная j.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы