Упорядочить слова в строке по алфавиту - C (СИ)

Узнай цену своей работы

Формулировка задачи:

. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.

Решение задачи: «Упорядочить слова в строке по алфавиту»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4.  
  5. int main(int argc, char** argv[])
  6. {
  7. setlocale(LC_ALL, "Russian");
  8.   char str[65];
  9.   char lexem[20][65];
  10.   puts("Введите строку:");
  11.   gets(str);
  12. int q=0;
  13.   char *pch = strtok (str," "); //во втором параметре указаны разделители (пробел, запятая, точка)
  14.   int i=0;
  15.   while (pch != NULL) //пока есть лексемы
  16.   {
  17.             strcpy(lexem[i],pch);
  18.       pch = strtok (NULL, " ");
  19.       i++;
  20.       q++;
  21.   }
  22.     char words[q][65];
  23.     char sorted_mass[q];
  24.     for (i=0;i!=q;i++){
  25.     strcpy(words[i],lexem[i]);
  26.      //printf("%s \n",words[i]);
  27.   }
  28. int x, j, A[q], c;
  29. for(x=0;x<q;x++){
  30.         A[x]=words[x][0];
  31.         }// ввод массива A
  32. for ( i = 0; i < q-1; i ++ ){
  33.  for ( j = q-2; j >= i; j -- ){
  34.  if ( A[j] > A[j+1] )
  35.  {
  36.  c = A[j]; A[j] = A[j+1];
  37.  A[j+1] = c;
  38.  }
  39.  }
  40.  sorted_mass[i]= A[i];
  41. }
  42. for(j=0;j!=q; j++){
  43. for(i=0;i!=q;i++)
  44.     {
  45.     if((sorted_mass[j]==words[i][0])&&(isalpha(words[i][0])))
  46.         {
  47.          printf("%s \n",words[i]);
  48.          words[i][0]=0;
  49.         }
  50.     }
  51. }
  52. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы