Вывести на печать все ее слова в порядке: все однобуквенные, двухбуквенные, трехбуквенные - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д