#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();
}
Сортировка слов по алфавиту
Помогите отсортировать слова за алфавитом.
Не проще ли использовать 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();
}
#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();
}
Что я делаю не так?
Код:
#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;
}
#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;
}