Заменить найденное слово в введенном тексте на порядковые числа в алфавите - C (СИ)
Формулировка задачи:
Добрый день
очень нужна помощь по поводу работы с массивом
1)как искать слово во всех строках а не только в первой
2)как заменить найденное слово в введенном тексте на порядковые числа в алфавите
3)в строк в которой не было найдено слово ввести слово которое искали после 2го слова в строке
(или может есть где-нибудь подобные задания?)
заранее благодарен
#include <stdio.h> #include <string.h> #define MAX 11 #define LEN 80 char text[MAX][LEN]; int d[LEN]; char word[LEN]; char w; int i; int main(void) { register int t, i, j; printf("exit void str.\n"); for(t=0; t<MAX; t++) { printf("%d: ", t); gets(text[t]); if(!*text[t]) break; } for(i=0; i<t; i++) { for(j=0; text[i][j]; j++) putchar(text[i][j]); putchar('\n'); } gets(word); if (strstr(*text,word) != NULL) printf("The word \"%s\" found\n",word); for(int i = 0; i < strlen(word); ++i) ; printf("\n%s\n", word); w=strlen(word); for(i=0;i<w;i++) { if(word[i]=='a') d[i]=1; if(word[i]=='b') d[i]=2; if(word[i]=='c') d[i]=3; f(word[i]=='d') d[i]=4; if(word[i]=='e') d[i]=5; if(word[i]=='f') d[i]=6; if(word[i]=='g') d[i]=7; if(word[i]=='h') d[i]=8; if(word[i]=='i') d[i]=9; if(word[i]=='j') d[i]=10; if(word[i]=='k') d[i]=11; if(word[i]=='l') d[i]=12; if(word[i]=='m') d[i]=13; if(word[i]=='n') d[i]=14; if(word[i]=='o') d[i]=15; if(word[i]=='p') d[i]=16; if(word[i]=='q') d[i]=17; if(word[i]=='r') d[i]=18; if(word[i]=='s') d[i]=19; if(word[i]=='t') d[i]=20; if(word[i]=='u') d[i]=21; if(word[i]=='v') d[i]=22; if(word[i]=='w') d[i]=23; if(word[i]=='x') d[i]=24; if(word[i]=='y') d[i]=25; if(word[i]=='z') d[i]=26; } for(i=0;i<w;i++) printf("%d ",d[i]); printf("\n"); printf("%s%s\n%S%S\n", d, strcpy(*text,word )); return 0; }
Решение задачи: «Заменить найденное слово в введенном тексте на порядковые числа в алфавите»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #define MAX 11 #define LEN 80 char *chr2str(char *word) { char result[(strlen(word)*4+3)]; char *ptr; int i = 0; char charF, charS, temp; //int n; ptr = word; i = 0; while(*ptr) { if(isalpha(*ptr)) { temp = toupper(*ptr)-64; charF = temp / 10 + 48; charS = temp % 10 + 48; result[i] = '['; result[++i] = charF; result[++i] = charS; result[++i] = ']'; } else { result[i] = *ptr; } i++; ptr++; } result[i] = '\0'; char *rptr = malloc(strlen(result) + 1); if(!rptr) { puts("Error: lack of memory"); exit(1); } strcpy(rptr, result); return rptr; } void swap(char *text, char *word, int flag) { char *ptr, *ptr2; ptr = strtok(text, " "); if (ptr) { if (!strcmp(ptr, word)) { ptr2 = chr2str(word); if (flag) printf("%c", ' '); printf("%s", ptr2); free(ptr2); } else { if(flag) printf("%c", ' '); printf("%s", ptr); } swap(NULL, word, 1); } } int main(void) { char text[MAX][LEN]; char word[LEN]; register int t, i; char *ptr; puts("Enter text <exit void str>."); for (t=0; t<MAX; t++) { printf("%d: ", t); i = 0; while(i<LEN) { text[t][i] = getchar(); if (text[t][i]=='\n') { text[t][i] = '\0'; } if (text[t][i]=='\0') break; i++; } if(!*text[t]) break; } printf("\nEnter word: "); scanf("%s", word); puts(""); for (i=0; i<t; i++) { if (strstr(text[i], word) != NULL) { swap(text[i], word, 0); puts(""); } else { if (ptr = strtok(text[i], " ")) printf("%s", ptr); if (ptr = strtok(NULL, " ")) { printf(" %s", ptr); printf(" <%s>", word); } while (ptr = strtok(NULL, " ")) printf(" %s", ptr); puts(""); } } return 0; }
Объяснение кода листинга программы
- Предполагается, что задача заключается в замене найденного слова в введенном тексте на порядковые числа в алфавите.
- В коде используются стандартные библиотеки: iostream, cctype, string.
- Вектор
MAX
содержит количество строк вводимого текста, аLEN
- максимальную длину строки. - Функция
chr2str
преобразует символ в строку, представляющую его порядковый номер в алфавите. - Функция
swap
ищет указанное слово в строке и заменяет его на строку, представляющую его порядковый номер в алфавите. - В функции
main
вводится текст и указывается слово для поиска. - Введенный текст хранится в массиве строк
text
. - Для каждой строки текста проверяется наличие указанного слова.
- Если слово найдено, то оно заменяется на строку, представляющую его порядковый номер в алфавите.
- Если слово не найдено, то оно выводится в оригинальной форме.
- Оставшиеся слова в строке выводятся без изменений.
- В конце программы выводится результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д