Вывести на печать все ее слова в порядке: все однобуквенные, двухбуквенные, трехбуквенные - 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();
}