Вывести на печать все ее слова в порядке: все однобуквенные, двухбуквенные, трехбуквенные - C (СИ)

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

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

Дана текстовая строка. Вывести на печать все ее слова в таком порядке: все однобуквенные, потом все двухбуквенные, потом все трехбуквенные и т.д. до слова максимальной длины, используя функции strtok, strlen.
#include <locale.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    printf("Задание 10. Вариант 1.\nВведите текст: ");
    char TEXT[100];
    gets(TEXT);
 
    char *p = strtok(TEXT," ");
    char *slova[100];
 
    int i = 0;
    int k = 0;
 
    while(p)
    {
        slova[i++] = p;
        k++;
        printf("%s \n",p);
        p = strtok(NULL," ");
    }
 
    printf("\nКоличество слов: %i\n", k);//работае идеально..
 
    int counter = 0;
    char result[100]; // В этот массив будет занесены слова отсортированные от min длины до max длины
 
    for(int j = 0; j < k; j++) //Не рабочая сортировка
    {
        if (strlen(slova[j]) < strlen(slova[j++]) && (j+1 <= k))
        {
        
            result[counter] = (char)slova[j];
        }
          
    }
        for (int j = 0; j < k; j++)
        {
            result[j]=result[counter];
            printf("%s ", result[j]);
        }
        _getch();
}
вот мои попытки...сортировка почему то не работает((

Решение задачи: «Вывести на печать все ее слова в порядке: все однобуквенные, двухбуквенные, трехбуквенные»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    static char psz[256] = "\0";
    printf("Enter a string: "); gets(psz);
 
    char** words = new char*[256];
    memset((void*)words, 0x00, 256);
 
    char* token = strtok(psz," "); 
    for (int i = 0; (token != NULL) && (i < 256); i++)
    {
        words[i] = new char[256];
        strcpy(words[i], token);
        token = strtok(NULL," ");
    }
 
    int max_len = 0;
    for (int n = 0; words[n] != NULL; n++)
        max_len = strlen(words[n]) > max_len ? 
            strlen(words[n]) : max_len;
 
    for (int k = 1; k <= max_len; k++)
        for (int q = 0; words[q] != NULL; q++)
            if (strlen(words[q]) == k)
                printf("%s\n",words[q]);
 
   _getch();
}

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


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

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

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