Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
Iron Brain
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
1

Как правильно реализовать цикл while с логическим ИЛИ

05.02.2015, 18:29. Просмотров 433. Ответов 4
Метки нет (Все метки)

Дана простая задача с использованием цикла do while:
Игра начинается с числа 1. За ход можно умножить имеющееся число на любое натуральное число от 2 до 9. Выигрывает тот, кто первым получит число, большее 1000.

Проблема в том, что цикл продолжается до тех пор пока и первый, и второй игрок не наберут 1000. К примеру, если первый игрок набрал уже более 1000 очков, а второй меньше 1000, то цикл продолжается пока второй игрок не наберет очков больше 1000. Хотя в строке 28 стоит логическое ИЛИ. В чем ошибка?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h> 
#include<iostream>
#include <time.h>
 
 
int main(void)
{
    setlocale(LC_ALL, "rus");
 
    int user1 = 1, user2 = 1;
    int i=0;
    int sum;
    int total1=1;
    int total2 = 1;
    srand(time(NULL));
 
    do{
        sum = rand() % (9 - 2 + 1) + 2;
        total1 += user1*sum;
        printf("user1 = %d + (%d * %d) = %d\n", user1, user1, sum, total1);
        user1 += user1*sum;
 
        sum = rand() % (9 - 2 + 1) + 2;
        total2 += user2*sum;
        printf("user2 = %d + (%d * %d) = %d\n\n", user2, user2, sum, total2);
        user2 += user2*sum;
        ++i;
    }   while (user1 <= 1000 || user2 <= 1000);
 
    
    if (user1 > user2){
        printf("Выиграл user1 с счётом %d\n", user1);
    }
 
    else{
        printf("Выиграл user2 с счётом %d\nИгра завершилась в %d ходов.\n\n", user2, i);
    }
    system("pause");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2015, 18:29
Ответы с готовыми решениями:

Столкновение объектов. Как правильно реализовать?
Здравствуйте! Пишу игру в танчики. Borland C++ 3.1. Сейчас реализовал...

Как правильно реализовать бесконечный цикл?
Господа, такой вопрос. Я совсем ещё нуб в шарпе, да и в программировании...

Как правильно создать цикл или функцию
Добрый день! Подскажите пожалуйста, хочу сделать цикл или функцию что бы...

Цикл: Как реализовать цикл или что-то другое, чтобы возвращаться в окно редактирования с помощью букв "Y" и"N".
Как реализовать цикл или что-то другое чтобы не возвращаться в окно...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор?
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы...

4
Jewbacabra
Эксперт PHP
3735 / 3086 / 1356
Регистрация: 24.04.2014
Сообщений: 9,355
05.02.2015, 18:52 2
Цитата Сообщение от Iron Brain Посмотреть сообщение
в строке 28 стоит логическое ИЛИ. В чем ошибка?
В том, что нужно логическое И
0
Iron Brain
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
05.02.2015, 19:04  [ТС] 3
Jewbacabra, спасибо, все работает. Но почему там нужно логическое И? Логическое И требуется, когда необходимо убедиться в выполнении сразу двух условий, а логическое ИЛИ, когда необходимо убедиться в выполнении любого из двух условий.
0
Jewbacabra
Эксперт PHP
3735 / 3086 / 1356
Регистрация: 24.04.2014
Сообщений: 9,355
05.02.2015, 19:15 4
Iron Brain, цикл закончится, когда выражение в while будет false. С ИЛИ false будет только если оба условия false; В случае с И достаточно хотя бы 1 условию стать false
1
korvin_
2295 / 1797 / 334
Регистрация: 28.04.2012
Сообщений: 6,276
05.02.2015, 19:15 5
Цитата Сообщение от Iron Brain Посмотреть сообщение
И требуется, когда необходимо убедиться в выполнении сразу двух условий, а логическое ИЛИ, когда необходимо убедиться в выполнении любого из двух условий.
do { ... } while (...) выполняется пока условие истинно. Соответственно, при использовании ИЛИ, цикл будет выполняться пока хотя бы один из игроков имеет меньше тысячи очков.
1
05.02.2015, 19:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2015, 19:15

Цикл: правильно или нет?
Знающие люди, подскажите пожалуйста... Есть такая задачка:...

Разница между логическим ИЛИ (||) и побитовым включающим ИЛИ (|)
Даны три целых числа: A, B, C.Проверить истинность высказываний: «Ровно два...

Не правильно работает цикл for while или я чего то не понимаю
Здравствуйте. Происходит очень странная вещь. Помогите пожалуйста кто сможет. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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