Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C++] Целые числа |
Автор: Unionuser 25.6.2011, 23:23 |
Пожалуйста помогите мне написать прогу.Вот задания:. Даны целые числа С1.....С95 . Имеются ли в последовательности с1....с95 : а) два идущих подряд нулевых члена; б) три идущих подряд нулевых члена? Заранее спасибо |
Автор: triclosan 25.6.2011, 23:51 |
http://forum.vingrad.ru/forum/topic-332535.html |
Автор: bsa 26.6.2011, 18:18 |
Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
Автор: Сыроежка 26.6.2011, 19:36 |
Поспешил - людей насмешил! Сделал типичную ошибку, написав выражения if ( p[i] == p[i+1] == 0 ) return (1 ); и if ( p[i] == p[i+1] == p[i+2] == 0 ) return (1 ); Правильно будет if ( ( p[i] == 0 ) && ( p[i] == p[i+1] ) ) return (1 ); и if ( ( p[i] == 0 ) && ( p[i] == p[i+1] ) && ( p[i+1] == p[i+2] ) ) return (1 ); |
Автор: iff 27.6.2011, 21:19 | ||
Сыроежка, Вы имеете в виду, что выражение
не будет откомпилировано, то тогда всё понятно. (По скольку я не знаю - позволяет ли синтаксис записывать такие условия) А если вы считаете, что здесь ошибка в логике алгоритма, то тогда, первый вариант будет работать. Это ненулевые могут быть не равны друг другу, а нулевые равны друг другу (все являются нулями). |
Автор: Сыроежка 28.6.2011, 18:48 | ||
Нет, это выражение будет компилироваться, но оно некорректное! Я просто, когда его писал, спутал с оператором присваивания. Почему исходное выражение некорректно? Поясню. Его можно переписать в виде ( Var1 == Var2 ) == Var3 результатом операции ( Var1 == Var2 ) в С будет целочисленный тип со значением либо 1 (если равенство выполняется ) либо 0 (если равенство не выполняется. В С++ соответсвтенно либо true либо false. В результате при выполнении второй операции вы сравниваете либо 1 == var3 либо 0 == var3 А это не то, что мы себе представляли! ![]() |