Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка строк, Ошибки при сортировке 
V
    Опции темы
try_to_get
  Дата 21.4.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Вводится, например 5 строк, в каждой строке могут быть любые символы. Затем вводится номер символа, например от 1 до 80. И по номеру символа нужно отсортировать 5 строк по убыванию или возрастанию. Вывод отсортированных строк.

Сделал вроде все правильно.
Код

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main(){
  const int n = 5;
  char line[n][80];
  char l[1][80];
  int k;
  for(int i=0; i<5; ++i){
    cout << "\nEnter line: ";
    gets(line[i]);
  }
  do{
    cout << "\nEnter the number of character between 0 and 79 ";
    cin >> k;
  }while((k<0)||(k>79));
  for(int i=0;i<n;++i){
    for(int j=0;j<n-i;++j){
      if(int(line[j][k])>int(line[j+1][k])){
        strcpy(l[0],line[j]);
        strcpy(line[j],line[j+1]);
        strcpy(line[j+1],l[0]);
      }
    }
  }
  for(int f=0;f<n;++f){
    cout << endl << *(line+f) << endl;
  }
  getch();
}




Запустил программу.
Она то правильно сортирует, то вместо некоторой строки выводит не то что должно быть (и вообще это не вводилось!).
Иногда пишет ошибку, если присутствуют пробелы, еще когда в стоки вводишь разное кол-во символов.
Может быть, не те функций я применяю, подскажите, как это исправить, что бы все корректно работало.

Заранее благодарю!


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
ama_kid
Дата 21.4.2007, 20:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 2
Всего: 95



попробуй организовать цикл сортировки попроще... К примеру типа такого:
Код
  for(int i=0;i<n;++i){
    for(int j=i;j<n;j++){
      if(int(line[j][k])<int(line[i][k])){
        strcpy(l[0],line[j]);
        strcpy(line[j],line[i]);
        strcpy(line[i],l[0]);
      }
    }
  }



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
try_to_get
  Дата 21.4.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Спасибо ama_kid.
Все работает.


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.