Упорядочить слова в строке по алфавиту - C (СИ)
Формулировка задачи:
. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.
Решение задачи: «Упорядочить слова в строке по алфавиту»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main(int argc, char** argv[])
{
setlocale(LC_ALL, "Russian");
char str[65];
char lexem[20][65];
puts("Введите строку:");
gets(str);
int q=0;
char *pch = strtok (str," "); //во втором параметре указаны разделители (пробел, запятая, точка)
int i=0;
while (pch != NULL) //пока есть лексемы
{
strcpy(lexem[i],pch);
pch = strtok (NULL, " ");
i++;
q++;
}
char words[q][65];
char sorted_mass[q];
for (i=0;i!=q;i++){
strcpy(words[i],lexem[i]);
//printf("%s \n",words[i]);
}
int x, j, A[q], c;
for(x=0;x<q;x++){
A[x]=words[x][0];
}// ввод массива A
for ( i = 0; i < q-1; i ++ ){
for ( j = q-2; j >= i; j -- ){
if ( A[j] > A[j+1] )
{
c = A[j]; A[j] = A[j+1];
A[j+1] = c;
}
}
sorted_mass[i]= A[i];
}
for(j=0;j!=q; j++){
for(i=0;i!=q;i++)
{
if((sorted_mass[j]==words[i][0])&&(isalpha(words[i][0])))
{
printf("%s \n",words[i]);
words[i][0]=0;
}
}
}
}