Дано предложение. Расположить слова в порядке возрастания числа букв в них - 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 для сортировки слов. Наконец, с помощью цикла выводятся отсортированные слова.

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


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

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

6   голосов , оценка 4 из 5
Похожие ответы