Другие языки программирования и технологии
Почему программа не работает? помогите пожалуйста(Си)
Дана строка из не более чем 30 слов, в каждом слове не более 8 букв. Слова разделены запятой, за последним-точка. Вывести слова встречающиеся более одного раза( допусти если я ввожу : зщ,зщ,жд,зщ,жд,ор. То программа должна вывести зщ зд). Использовать двумерный массив #include <stdlib.h>#include <conio.h>#include<iostream>int main(){ char ch; int i,j, k, n, m, l, c, f; char str[30][8], b[15][8]; for(m=0; m<15; m++) {for (j=0;j<8;j++) /* для каждого i присвоить a = 0; */b[m][j]=0;}m=0; i=0; ch='\0'; while(ch!='.') {scanf("%c",&ch); j=0; while(ch!=','&&ch!='.') { str[j]=ch; scanf("%c",&ch); j++; } str[j]='\0'; i++; } i=n;for(i=0;i<n;i++)>[j]==str[k][j]&&f!='\0'&&f!=1;j++) { if(str[j]=='\0'&&str[k][j]=='\0') { for (l=0;l<=15&&f!=1;l++) { for(j=0;str[j]==b[l][j]&&f!=1;j++) if(str[j]=='\0') f=1;} if (l==15&&f==0) { for(j=0;str[j]!='\0';j++) b[m][j]=str[j]; m++; } } } } } for (m=0,j=0;m<=15&&b[m][j]!='0';m++) { for(j=0;b[m][j]!='\0';j++) printf("%c ", b[m][j]); } getch();}
Очень жуткая программа. Я понимаю, что давать нормальные имена переменным многие новички считают излишеством, а потом долго удивляются, откуда взялась логическая ошибка и как вообще такое получилось.
Ну а подобные куски кода:
while(ch!=','&&ch!='.')
{
str[j]=ch;
scanf("%c",&ch);
j++;
}
очень любят кулхацкеры, так как это готовый загрузчик вредоносного кода для срыва стека. В правильном коде всегда должна проверяться возможность переполнения целевого массива.
Вот это вообще супер: for(i=0;i<n;i++)>[j]==str[k][j]&&f!='\0'&&f!=1;j++) такой код и в ночном кошмаре не приснится. Да и вообще не понятно, как такое могло скомпилироваться (ИМХО там скобки не хватает) .
А это зачем?
for(j=0;b[m][j]!='\0';j++)
printf("%c ", b[m][j]);
Для вывода строк, завершающихся '\0' используется символ форматирования %s
Вот что нужно для распечатки массива b:
for( m = 0; m < 15; m++ )
{
printf( "%s\n", b[m] );
}
Я далеко не уверен, что нашел тут все ошибки, но к сожалению мылру никак не озаботится хотя бы сохранением форматирования исходников, а слипшийся код затрудняет понимание замысла авторов.
Ну а подобные куски кода:
while(ch!=','&&ch!='.')
{
str[j]=ch;
scanf("%c",&ch);
j++;
}
очень любят кулхацкеры, так как это готовый загрузчик вредоносного кода для срыва стека. В правильном коде всегда должна проверяться возможность переполнения целевого массива.
Вот это вообще супер: for(i=0;i<n;i++)>[j]==str[k][j]&&f!='\0'&&f!=1;j++) такой код и в ночном кошмаре не приснится. Да и вообще не понятно, как такое могло скомпилироваться (ИМХО там скобки не хватает) .
А это зачем?
for(j=0;b[m][j]!='\0';j++)
printf("%c ", b[m][j]);
Для вывода строк, завершающихся '\0' используется символ форматирования %s
Вот что нужно для распечатки массива b:
for( m = 0; m < 15; m++ )
{
printf( "%s\n", b[m] );
}
Я далеко не уверен, что нашел тут все ошибки, но к сожалению мылру никак не озаботится хотя бы сохранением форматирования исходников, а слипшийся код затрудняет понимание замысла авторов.
а почему она (программа) в данном виде вообще должна работать?
Вы её скопировали откуда-то? Тут словно кусок программы выкинули.. .
Никакого баланса скобок.. .
что означает эта строка?
for ( i = 0; i < n; i++ ) > [j] == str[k][j] && f != '\0' && f != 1; j++ )
Вы её скопировали откуда-то? Тут словно кусок программы выкинули.. .
Никакого баланса скобок.. .
что означает эта строка?
for ( i = 0; i < n; i++ ) > [j] == str[k][j] && f != '\0' && f != 1; j++ )
Похожие вопросы
- Программа для PascalABC Помогите пожалуйста!
- Непойму почему программа не работает (Задача по информатике(Pascal))
- Скажите почему программа не работает? Это язык С++!
- Как обрезать из фотошопа фото. Я не могу с фотошопам работать помогите пожалуйста обрезать фото
- Элементарная задачка, но почему такой ответ получается? Помогите пожалуйста!
- Помогите пожалуйста создать программу "Таймер" на СИ. Заранее всем благодарен!)
- Помогите пожалуйста составить программу на СИ++. Заранее всем БЛАГОДАРЕН!
- Язык Си. Помогите пожалуйста написать простую программу.
- Помогите, пожалуйста, написать программу на языке Си
- Вопрос по языку Си. Почему в тесте написано, что эта программа будет работать?