В строке найти 5-символьные слова и цифровое значение - C (СИ)
Формулировка задачи:
Здравствуйте, требуется помощь в решение задачи.
Написать программу, обрабатывающую введенный пользователем текст, состоящий из слов, записанных через пробелы. Длина текста не больше 255 символов. В тексте могут быть использованы любые символы. Словом считать последовательность символов, не содержащую пробел. Необходимо введенный текст вывести на экран до и после его преобразования, выполнив все задания, указанные в индивидуальном задании.
ИЗ:Сформировать строку, в которую включить только 5-символьные слова, в которых литеры расположены "по возрастанию". Найти первое цифровое слово и возвести его значение в квадрат.
Пока что реализовал нахождение цифрового слова, но никак не могу возвести его в квадрат. +затык по поиску 5 символьных слов, мне бы хоть алгоритм понять...
Помогите пожайлуста
//--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <stdlib.h> #include <stdlib.h> //--------------------------------------------------------------------------- short int in_array(char *mass,char serch) { short int i; for(i=0;mass[i]!='\0';i++) { if(mass[i]==serch)/*Функция поиска символов*/ { return 1; } } return 0; } #pragma argsused int main(int argc, char* argv[]) { int i,j,m,k=0,f=0,p=0, glasn=0, sogl=0,schet=0,n; char s[254]; char cha[] = {"qwertyuiopasdfghjklzxcvbnm"}; char nums[] = {"0123456789"}; char s1[254][254]; printf ("vvedite tekst <255\n"); gets (s); j=0; n=0; for(i = 0; i <strlen(s); i++) { if (s[i] != ' ') { s1[n][j] = s[i]; j++; } else { n++; j=0; } } for(i = 0; i <= n; i++)/*Поиск цифрового слова*/ { m=0; for(j = 0; j < strlen(s1[i]); j++) { if (in_array(cha,s1[i][j])) { m++; } } if (m==0) { for(k=0;k<strlen(s1[i]);k++) { while (p==0) { p=1; printf("%c", s1[i][k]*s1[i][k]);/*А тут мне нужна ваша помощь по возведению в квадрат*/ } } } } getch (); return 0; } //---------------------------------------------------------------------------
P.S. Работаю в Borland C++ Builder 6
Решение задачи: «В строке найти 5-символьные слова и цифровое значение»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> bool issorted(const char* str) { for (int i = 0; str[i + 1] != '\0'; i++) if (str[i] > str[i + 1]) return false; return true; } int main(int argc, char argv[]) { static char str[256] = "apple fruit 1234567 orange 987654321 abcde lemon fghij tea jklmn\0"; int n = 0; static char* words[256] = { 0 }; for (int i = 0; str[i] != '\0'; i++) if (isspace(str[i]) || str[i+1] == '\0') { int pos = i - 1; char* wd = new char[256]; while (!isspace(str[pos]) && pos >= 0) pos--; int count = 0; int l = pos + 1; while (!isspace(str[l]) && str[l] != '\0') wd[count++] = str[l++]; wd[count] = '\0'; if (count == 5 && issorted(wd)) { words[n] = new char[256]; strcpy(words[n++], wd); } } char output[256] = { 0 }; for (int r = 0; words[r] != NULL; r++) { strcat(output, words[r]); if (words[r+1] != NULL) strcat(output, " "); } printf("string = %s\noutput = %s\n\n", str, output); int r = 0; for (int i = 0; str[i] != '\0'; i++) { if (!isdigit(str[i])) continue; int n = 0; char* digits = new char[256]; while (isdigit(str[i]) && str[i] != '\0') digits[n++] = str[i++]; digits[n] = '\0'; printf("%d %s\n", r, digits); r++; } printf("\n"); _getch(); return 0; }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Ищет в строке слова, состоящие из 5 символов, и сохраняет их в массив words. В каждом слове сначала проверяется, является ли оно отсортированным. Если слово отсортировано, оно добавляется в массив words.
- Создает новую строку output, в которую добавляются все найденные слова из массива words, разделенные пробелами.
- Выводит исходную строку и полученную строку output.
- Ищет в исходной строке цифры, сохраняет их в отдельные строки и выводит их. Список действий:
- Включаются необходимые заголовочные файлы.
- Определяется функция, которая проверяет, является ли строка отсортированной.
- Определяется основная функция программы.
- В основной функции инициализируются необходимые переменные.
- В цикле обрабатывается каждый символ исходной строки.
- Если текущий символ является пробелом или концом строки, то предыдущее слово добавляется в массив words.
- Если текущий символ является цифрой, то он добавляется в отдельную строку, которая затем выводится на экран.
- Завершается основная функция программы.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д