Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Оцените код "Змейки" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнивает ли значения функция srtcmp, если они введены русскими буквами? http://www.cyberforum.ru/cpp-beginners/thread1242982.html
Сравнивает ли значения функция srtcmp,если они введены русскими буквами?
C++ Пользователь ввел три целых числа, расположить эти числа в порядке убывания #include<iostream.h> main() { int a,b,c,max,min,aver; cout<<"enter a "; cin>>a; cout<<"enter b "; cin>>b; cout<<"enter c "; cin>>c; http://www.cyberforum.ru/cpp-beginners/thread1242976.html
Зашифровать картинку или любой другой файл XOR шифрованием C++
Привет. Мне нужно зашифровать картинку, или любой другой файл XOR шифрованием. Как сделать текст я знаю, но вот как картинку? Открывать же ее в бинарном виде? Подскажите пжл. Спасибо.
"Или" в регулярном выражении C++
Пусть есть регулярное выражение вида "expression1|expression2|expression3|expression4" сравнивающее текст с четырьмя различными вариантами. Как в std::regex/boost::regex вытрясти из регулярного...
C++ Неполадка с default в switch-case - вывод срабатывает дважды http://www.cyberforum.ru/cpp-beginners/thread1242969.html
Здравствуйте! Такая вот ерундовая проблема, но хотелось бы узнать почему происходит именно так =) Есть функция, проверяющая корректность ввода уравнения. Если уравнение не соответствует шаблону,...
C++ Объявление целых типов с буквой - что означает эта буква? Всем здрасти! Объясните пожалуйста, что значит следующее объявление: int a = 4000u; В чем разница от обычного объявления? Что это за идентификатор u? подробнее

Показать сообщение отдельно
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471
15.08.2014, 23:13
Цитата Сообщение от Aspirin Посмотреть сообщение
И правда, я упустил этот момент, я хотел поставить там break после того, как выполнится условие.
Хотя не вижу не чего плохого в такой ситуации)
В вечный цикл мы не попадём. как выяснилось. при выполнении условия size сравняется с i, потом выполнится i++, после чего i станет больше size и произойдёт выход из цикла. Если это то, что ты хотел, тогда самое оно.

++++++++++++++++++++++++++++++++++++++++++++++++++++++

Теперь по рациональности. Повременим пока с break. Смотри, насколько я понял, цель этого кода, в КАЖДОЙ итерации при выполнении условия увеличивать i на 1. Действительно, ты проверяешь одно условие,
C++
1
i<size
следом второе
C++
1
!((block[0].x == block[i].x) && (block[0].y == block[i].y)))
(обрати внимание на восклицательный знак, у тебя его нет, а в моём объяснении он необходим!)

и при истинности каждого из этих условий инкременируешь i. Но уже за нас всё придумано. Два условия нужно объединить в одно, вот так:

C++
1
(i<size)&&(!((block[0].x == block[i].x) && (block[0].y == block[i].y)))
И проверять их в цикле вот так:
C++
1
2
3
    i= 3;
    while ((i<size)&&(!((block[0].x == block[i].x) && (block[0].y == block[i].y))))
       i++;
++++++++++++++++++++++++++++++++++++++++++++++

Наконец, последнее, по size. Если цель size=i, выйти из цикла, тогда действительно либо break, либо, если использовать мой вариант ВООБЩЕ обходимся без этого приравнивания. Если действительно есть необходимость приравнять size к i ПОМИМО выхода из цикла, тогда пишем так:

C++
1
2
3
4
    i= 3;
    while ((i<size)&&(!((block[0].x == block[i].x) && (block[0].y == block[i].y))))
       i++;
    size= 1;
Это значит, что как только условие, которое
C++
1
((block[0].x == block[i].x) && (block[0].y == block[i].y))
выполнится, произойдёт выход из цикла и только ПОСЛЕ этого size приравняется к i, (если в этом будет необходимость, а если нет убери эту строку и всё.)

Добавлено через 5 минут
............
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru