Упорядочить слова в строке по алфавиту - 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;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д