Дан символьный массив, образованный из слов, разделенных пробелами. С использованием процедур и функций выполнить: Подсчитать количество слов в тексте; проверить, есть ли в тексте заданное слово; поменять местами два слова текста с заданными номерами; вставить новое слово после указанного и выдать на печать указанное слово текста.
| Код | #include <cstdio> #include <stdio.h> #include <string.h> #include <windows.h> #include<iostream>
#define STRLEN 255 #define LEN 1000
int main(void){ charstr[STRLEN], wrd[STRLEN], *p; size_tcount_all, count_word;
SetConsoleCP(1251); SetConsoleOutputCP(1251);
printf("Massiv: "); fgets(str, sizeof(str), stdin); if ( p = strrchr(str, '\n') ) *p = '\0'; printf("Slovo: "); fgets(wrd, sizeof(wrd), stdin); if ( p = strrchr(wrd, '\n') ) *p = '\0';
count_all = count_word = 0; for ( p = strtok(str, " "); p != NULL; p = strtok(NULL, " ") ){ ++count_all; if ( !strcmp(p, wrd) ) ++count_word; } printf("Vsegoslov: %d\n", count_all); printf("Slovo \"%s\" vstretilos %d raz(a)\n", wrd, count_word);
return 0;}
char sin[LEN] = {'\0'}; charsout[LEN] = {'\0'}; char *p; char swap[LEN]; char a[LEN / 10][LEN];
int k = -1, i, l, r;
printf("Vveditemassiv: "); gets(sin); p = strtok(sin, " "); while(p) { k++; strcpy(a[k], p); p = strtok(NULL, " "); } printf("\nVveditenomeraslovdlyaobmena(l <= r): "); scanf("%d %d", &l, &r); if(l > r) { printf("\n\nInput ERROR! Program close!"); return 1; } strcpy(swap, a[l - 1]); strcpy(a[l - 1], a[r - 1]); strcpy(a[r - 1], swap); for(i = 0; i< k; i++) { strcat(sout, a[i]); strcat(sout, " "); } strcat(sout, a[k]); printf("\n\nMassiv: %s", sout); return 0; }
|
Подсчитывание количества слов в тексте, проверку заданного слова и смещение двух слов с заданными номерами, я смог сделать (а остальное я не понял, как можно реализовать), но компилятор выдаёт ошибку... |