"Дан текст, содержащий n строк. Для каждого из слов указать, сколько раз оно встречается в тексте." Фишка в том, что происходит выход за пределы стека. Всплывает предупреждение:"Stack around the variable 'b' was corrupted".
| Код | int main() { SetConsoleOutputCP(1251); SetConsoleCP(1251); int i = 0, j = 0; int n = 1;//изначальное количество лексем char text[1000]; char *leks;//string или всё нормально? char a[1000][20];//тут тоже не уверена int b[1000]; bool bln; gets_s(text); for (i = 0; i < 1000; i++) b[i] = 0; leks = strtok(text, " ,.?!");//находим первую лексему//текст - char strcpy(a[i], leks);//заносим в массив лексему b[i]++;//одна лексема есть, и ее кол-во = 1 strcpy(leks, strtok(NULL, " ,.-"));//переходим к новой лексеме while (leks != NULL)//пока лексема существует { bln = 0; for (i = 0; (i < n)&&(bln==0); i++) { if (strcmp(leks, a[i])==0) //если значение новой лексемы = значению i leks a[i] { b[i]++;//плюсуем в счётчик i-ой лексемы единицу bln = 1;//true } } if (bln = 0)//если не тру { strcpy(a[i + 1], leks);//создаем новую лексему в новом элементе массива n++;//теперь неповторяющихся лексем на одну больше } leks= strtok(NULL, " ,.-");//переход к новой лексеме } //вывести на экран 2 соответсвующих массива for (i = 0; i < n; i++) { puts(a[i]);//printf("%c", a[i]); printf("%d", b[i]); } system("pause"); return 0; }
|
|