Дано предложение. Расположить слова в порядке возрастания числа букв в них - C (СИ)
Формулировка задачи:
Помогите пожалуйста с задачей: Дано предложение. Расположить слова в порядке возрастания числа букв в них.
Заранее спасибо кто откликнется
Решение задачи: «Дано предложение. Расположить слова в порядке возрастания числа букв в них»
textual
Листинг программы
- /*Дано предложение. Расположить слова в порядке возрастания числа букв
- */
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define SIZE 1024 //max length of text
- #define LEN 20 //max length of word
- char **ArrayOfWords(char *s, int &num, int &rows)
- { char **arr, *word;
- int i, N;
- N = strlen(s) / 2;
- arr = (char**) malloc(N);
- for (i = 0; i<N; i++)
- arr[i] = (char*) malloc(LEN);
- word = strtok (s," ,.-");
- strcpy(arr[0], word);
- i = 1;
- while (word != NULL)
- { word = strtok (NULL, " ,.-");
- if (word == NULL) break;
- strcpy(arr[i], word);
- i++;
- }
- rows = N; //max number of words
- num = i; //real number of words
- return arr;
- }
- void Swap (char *a, char *b)
- { char *temp = (char*) malloc (LEN);
- strcpy(temp, a);
- strcpy(a, b);
- strcpy(b, temp);
- }
- void Sorted (char **arr, int num)
- { int i, j;
- for (i = 0; i<num-1; i++)
- for (j = i+1; j<num; j++)
- if (strlen(arr[i]) > strlen(arr[j]))
- Swap (arr[i], arr[j]);
- }
- int main()
- { char buf[SIZE], **arr;
- int i, M = 0, rows = 0; //M - real number of words
- printf("Your string:\n");
- fgets(buf, SIZE, stdin);
- buf[strlen(buf) - 1] = '\0';
- arr = ArrayOfWords(buf, M, rows);
- Sorted (arr, M);
- printf("\n\nThe words sorted:\n");
- for (i = 0; i<M; i++)
- puts(arr[i]);
- getchar();
- return 0;
- }
Объяснение кода листинга программы
В данном коде на языке C представлена функция, которая принимает в качестве параметров строку, указатель на количество слов и указатель на количество строк.
Функция сначала разбивает входную строку на слова, используя разделители ,.-
, затем выделяет память под массив указателей на слова.
Далее функция сортирует полученный массив слов в порядке возрастания длины слов.
В основной функции программы вызывается функция ArrayOfWords для разбиения входной строки на слова и подсчета количества слов.
Затем вызывается функция Sorted для сортировки слов.
Наконец, с помощью цикла выводятся отсортированные слова.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д