Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка слов по алфавиту

55K
24 ноября 2010 года
mieRz
6 / / 17.03.2010
Помогите отсортировать слова за алфавитом.

Я пробовал так, вот код:
Код:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<iostream.h>
const int n=3; //lines
const int m=10; //symbols

void main()
{
 clrscr();

 char words[n][m],tmp[n][m];
 int i,N=1;


 for(i=0;i<n;i++) {
  cout<<"Enter "<<N++<<" word: ";
  gets(words);
 }

 //sort
  for(i=0;i<n;i++) {
   for(int j=0;j<m;j++) {
    if(words[j] > words[i+1][j]) {
     strcpy(tmp,words[i+1]);
     strcpy(words[i+1],words);
     strcpy(words,tmp);
    }
  }
 }

 cout<<"\nResult:"<<endl;
 for(i=0;i<n;i++) {
  puts(words);
 }


 cout<<"\nPress \"Enter\" to continue...";
 getchar();
}

Ток сортирует не очень корректно.
9.0K
25 ноября 2010 года
grag63
71 / / 23.01.2006
Не проще ли использовать qsort?
55K
25 ноября 2010 года
mieRz
6 / / 17.03.2010
пробовал и qsort не получается
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

void main ()
{
  clrscr();

  char text[2][20];
  int n;
  for(n=0; n<2; n++) {
   gets(text[n]);
  }

  for (n=0; n<2; n++) {
  qsort (text[n], 2, sizeof(char), compare);
     printf ("%s ",text[n]);
  }
  getch();
}

Что я делаю не так?
6.0K
25 ноября 2010 года
artyom-tyanutov
107 / / 10.07.2006
Код:
#include <iostream>
#include <stdlib.h>
#include <string.h>

int cmp(const void* arg1, const void* arg2)
{
    char* s1 = *static_cast<char**>(const_cast<void*>(arg1));
    char* s2 = *static_cast<char**>(const_cast<void*>(arg2));
    return strcmp(s1,s2);
}

int main(int argc, char* argv[])
{
    char* s1="abcdefg";
    char* s2="abcddfg";
    char* s3="abbdefg";
    char* s4="aacdefg";
    char* s5="abccefg";
   
    const int strings_count = 5;
   
    char* strings[strings_count]={
        s1,s2,s3,s4,s5
    };
   
    qsort(strings, 5, sizeof(char*), cmp);
   
    for(int i=0; i<strings_count; i++){
        std::cout << strings << std::endl;
    }
   
    return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог