
Другие языки программирования и технологии
Си++Куда поставить break, чтобы в ответе не выводились многочисленные "нет" и "да".

Логику работы надо детальнее продумывать а не "куда что-то добавить чтоб оно само все чудом заработало?".
Есть цикл, который определяет наличие слов заканцивающихся на "к". Согласитесь, что дать однозначный ответ что в тексте нет таких слов можно только после того как просмотрен весь текст до конца и ни одного слова не нашли. Ведь так?
С другой стороны дать ответ что в тексте присутствуют такие слова можно сразу после того как нашли первое подходящее по условию слово.
Отсюда имеем следующий принцип работы: надо пройти весь текст, проверяя каждое слово, если слово заканчивается на "к", то пишем что нашли и выходим из цикла. Если же дошли до конца цикла ни разу не найдя слово - тогда ответ "нет".
Для того чтоб запомнить нашли слово или не нашли удобно будет использовать переменную типа bool. Ее инициализируем перед циклом значением false и это будет означать что слово пока еще не нашли.
bool found = false;
for (//бла-бла-бла цикл
{
if (//тут условие что нашли слово заканчивающеся на "к"
{
found = true;
break;
}
}
if (found)
printf("да");
else
printf("нет");
Есть цикл, который определяет наличие слов заканцивающихся на "к". Согласитесь, что дать однозначный ответ что в тексте нет таких слов можно только после того как просмотрен весь текст до конца и ни одного слова не нашли. Ведь так?
С другой стороны дать ответ что в тексте присутствуют такие слова можно сразу после того как нашли первое подходящее по условию слово.
Отсюда имеем следующий принцип работы: надо пройти весь текст, проверяя каждое слово, если слово заканчивается на "к", то пишем что нашли и выходим из цикла. Если же дошли до конца цикла ни разу не найдя слово - тогда ответ "нет".
Для того чтоб запомнить нашли слово или не нашли удобно будет использовать переменную типа bool. Ее инициализируем перед циклом значением false и это будет означать что слово пока еще не нашли.
bool found = false;
for (//бла-бла-бла цикл
{
if (//тут условие что нашли слово заканчивающеся на "к"
{
found = true;
break;
}
}
if (found)
printf("да");
else
printf("нет");
Александр Бессонов
Мне бы ваши мозги) Спасибо большое!
Короче это какой то пиндец, а не код... Без обид, сам так писал, а может и пишу (сам еще для себя на досуге обучаюсь).
1) Стиль написания очень похож на СИ, но не С++, хотя компилятор С++ сможет его скомпилировать.
2) Количество символов, считываемых gets(), не ограничивается. Поэтому программист должен сам следить за тем, чтобы не выйти за границы массива, на который указывает str. То есть возможный рассадник ошибок. Выход fgets() http://youngcoder.ru/lessons/9/simvolnie_stroki_vvod_i_vyvod.php
3)char const * const del = " ,.?;"; //(константный указатель на константную переменную типа чар) в таком случае будет создана точно одна строка, при #define будет две строки и зависеть от компилятора, а в частности при оптимизации компилятор допрет что можно одну строку сделать или нет
4)
bool found = false;
for(char *p = strtok(str, del); p; p = strtok(NULL, del)
{
if(p[strlen(p) - 1] == 'k') //нахрена тут какой то gol[i], зачем еще и дополнительный цикл
{
found = true;
break;
}
}
if(found)
{
puts("Yes");
}
else
{
puts("No");
}
// последнее if else можно попробовать так записать puts(found ? "Yes" : "No");
5) Почему у вас отступы 16 -19 строки сбились влево? Так тяжелее читать. Тяжело потратить несколько секунд на формирование нормальных отступов?
https://ru.wikipedia.org/wiki/Отступ_(программирование)
1) Стиль написания очень похож на СИ, но не С++, хотя компилятор С++ сможет его скомпилировать.
2) Количество символов, считываемых gets(), не ограничивается. Поэтому программист должен сам следить за тем, чтобы не выйти за границы массива, на который указывает str. То есть возможный рассадник ошибок. Выход fgets() http://youngcoder.ru/lessons/9/simvolnie_stroki_vvod_i_vyvod.php
3)char const * const del = " ,.?;"; //(константный указатель на константную переменную типа чар) в таком случае будет создана точно одна строка, при #define будет две строки и зависеть от компилятора, а в частности при оптимизации компилятор допрет что можно одну строку сделать или нет
4)
bool found = false;
for(char *p = strtok(str, del); p; p = strtok(NULL, del)
{
if(p[strlen(p) - 1] == 'k') //нахрена тут какой то gol[i], зачем еще и дополнительный цикл
{
found = true;
break;
}
}
if(found)
{
puts("Yes");
}
else
{
puts("No");
}
// последнее if else можно попробовать так записать puts(found ? "Yes" : "No");
5) Почему у вас отступы 16 -19 строки сбились влево? Так тяжелее читать. Тяжело потратить несколько секунд на формирование нормальных отступов?
https://ru.wikipedia.org/wiki/Отступ_(программирование)
Евгений Узун
Из-за дебильной рекламы mail.ru только сейчас увидел этот ответ.
Похож на мой https://www.ideone.com/i6MXyQ
Сорян что почти повторился
Похож на мой https://www.ideone.com/i6MXyQ
Сорян что почти повторился
Похожие вопросы
- написал прогу на си с использованием рандома. всё работает, но всегда выводятся одни и те же числа.
- Массив Си. Почему если я ввожу asd то в консоль выводятся dasd?
- Вопрос о работе программы на языке СИ. Каким будет ответ?
- Как из си++ сделать си?)... подробнее
- Разница между Си и Си++
- Какие преимущества сохранил Ассемблер к Си?
- Си или Си шарп (С#)???
- Почему php-код( т. е. теги кода) выводится в браузере, а не исполняется?
- как в delphi сделать чтобы при нажатии на определенную кнопку выводился другой символ??
- помоги с СИ++..