Я делаю программу для проверки дыр в вводе текста пользователем … Отверстия — это такие символы, как ‘A’, ‘B’, ‘P’ и т. Д … Но в цикле появляется ошибка
Я разместил полный код ниже .. Помогите найти ошибку
#include <iostream>
#include <cstring>
#ifdef __cplusplus__
#include <cstdlib>
#else
#include <stdlib.h>
#endif
using namespace std;
int main()
{
label:
cout << "Enter Number of test Case : ";
int tc;
cin >> tc;
int * hls = new int [tc];
hls = {0};
if(tc > 40)
{
if (system("CLS")) system("clear");
goto label;
}
char *str = new char [tc];
for(int a = 0; a < tc; ++a)
{
cout << "Enter your " << a+1 << " text : ";
cin >> str[a];
}
for(a = 0; a < tc; ++a) // getting error in this line.
{
for(int b = 0; b < strlen(str[a]); ++b)
{
switch(str[b])
{
case 'A' :
case 'D' :
case 'O' :
case 'Q' :
case 'P' :
++hls[b];
break;
case 'B' : hls[b] += 2;
break;
default :
break;
}
}
}
if (system("CLS")) system("clear");
for(a = 0; a < tc; ++a)
cout << hls[a] << endl;
return 0;
}
Ваш a
не объявляется в области видимости второго цикла for.
a
существует только в теле цикла for:
for(int a = 0; a < tc; ++a)
{
cout << "Enter your " << a+1 << " text : ";
cin >> str[a];
}
Сейчас a
больше не существует, но вы все равно пытаетесь его использовать:
for(a = 0; a < tc; ++a) // getting error in this line.
(Вы также попробуете это использовать позже)
Либо объявить int a;
в теле main()
поэтому он остается в области видимости, или (лучше) просто объявлять его в каждом последующем цикле for, как вы это делали в первом цикле.
Есть и другие проблемы с кодом, но вы спросили об этом. 🙂
Других решений пока нет …