В строке найти 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.
- Если текущий символ является цифрой, то он добавляется в отдельную строку, которая затем выводится на экран.
- Завершается основная функция программы.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д