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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
#1

операция повторения - C++

16.07.2011, 12:29. Просмотров 1352. Ответов 16
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int match, win, ni, por;
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win; 
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else
        cout << "Не лги мне!";
        cin >> ni; 
        cout<<"Введите количество поражений: ";
        cin >> por; 
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
        system("pause");
        return 0;
}
Здесь, если ввести количество матчей 5 , а количество побед 6 - это будет ложью. Собственно и появляется сообщение "Не лги мне!".
Но как сделать, так чтобы после сообщения "Не лги мне!" программа вновь начиналась с самого начала.

вот что надо на примере:

Введите Количество матчей: 5
Введите количество побед: 6 // в 5 матчах 6 раз пока никто не побеждал, значит это ошибка.
Не лги мне!
Введите количество матчей: 5
Введите количество побед: 4
Введите количество ничьих: 0
Введите количество поражений: 1
Команда набрала 12 очков
...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 12:30     операция повторения #2
Сделай все в цикле
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 12:31  [ТС]     операция повторения #3
Цитата Сообщение от zuq Посмотреть сообщение
Сделай все в цикле
а как это ?
михаилъ
2 / 2 / 1
Регистрация: 09.07.2010
Сообщений: 5
16.07.2011, 12:33     операция повторения #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    int match, win, ni, por;
    while(true){
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win; 
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else
        cout << "Не лги мне!";
        cin >> ni; 
        cout<<"Введите количество поражений: ";
        cin >> por; 
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
        system("pause");
        }
        system("pause");
        return 0;
}
Как вариант, вместо бесконечного условия можно задать выход по определенной клавише.
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 12:38     операция повторения #5
Немного подругому... При сообщении "не лги мне" должно начинаться заново. Как-то так
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int match, win, ni, por;
    while(true) {
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win;
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else {
        cout << "Не лги мне!" << endl;
        continue;
        }
        cin >> ni;
        cout<<"Введите количество поражений: ";
        cin >> por;
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
    }
        system("pause");
        return 0;
}
Добавлено через 3 минуты
И еще - если нужно повторять цикл только после "не лги мне", то можно сделать в конце цикла выход из него
C++
1
2
3
cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
break;
    }
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
16.07.2011, 12:38     операция повторения #6
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
#include <iostream>
using namespace std;
 
int main()
{  while()
{
    int match, win, ni, por;
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win; 
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else
        cout << "Не лги мне!";
        break;
        cin >> ni; 
        cout<<"Введите количество поражений: ";
        cin >> por; 
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
     }
        system("pause");
        return 0;
}
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 12:40  [ТС]     операция повторения #7
Цитата Сообщение от zuq Посмотреть сообщение
Немного подругому... При сообщении "не лги мне" должно начинаться заново. Как-то так
да, получается, НО программа после всех операций не останавливается, а вновь и вновь повторяется
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 12:40     операция повторения #8
Morgan-S23, вот
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int match, win, ni, por;
    while(true) {
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win;
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else {
        cout << "Не лги мне!" << endl;
        continue;
        }
        cin >> ni;
        cout<<"Введите количество поражений: ";
        cin >> por;
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
        break;
    }
        system("pause");
        return 0;
}
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 12:40  [ТС]     операция повторения #9
Цитата Сообщение от zuq Посмотреть сообщение
И еще - если нужно повторять цикл только после "не лги мне", то можно сделать в конце цикла выход из него
вот теперь понятно. спасибо
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 12:41     операция повторения #10
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
вот теперь понятно. спасибо
Для "спасибо" есть соответствующая кнопочка
Kastaneda
Форумчанин
Эксперт С++
4259 / 2791 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
16.07.2011, 12:54     операция повторения #11
А почему кол-во побед проверяется, а кол-во поражений и ничьих нет? Ведь если поражений больше, чем кол-во матчей минус (кол-во побед + кол-во ничьих), то тоже получается ложь. С ничьими тоже нужна аналогичная проверка.
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 13:04  [ТС]     операция повторения #12
Цитата Сообщение от zuq Посмотреть сообщение
Для "спасибо" есть соответствующая кнопочка
ну тохда придется и ещё одну мелочь подсказать))
с первым мы справились. а как быть с другими ?
если пользователь вводит количество ничьих 10000 ?
я замутил так
C++
1
if ( match - win >= ni)
теперь же я не могу заставить программу заново спрашивать сколько ничьих, если пользователь врет.

вот как получается:

Введите количество матчей: 5
Введите количество побед: 3
Введите количество ничих 999 // врет же!

вот тут надо, чтобы опять спрашивала, сколько ничьих

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
А почему кол-во побед проверяется, а кол-во поражений и ничьих нет? Ведь если поражений больше, чем кол-во матчей минус (кол-во побед + кол-во ничьих), то тоже получается ложь. С ничьими тоже нужна аналогичная проверка.
это я думал, что сам сделаю)) понадеялся на себя.
ложь или правда я определяю, но вот как сделать чтобы при ошибке вновь спрашивала я пока не знаю
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 13:05     операция повторения #13
Запускай цикл заново continue; если не правильно
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 13:07  [ТС]     операция повторения #14
Цитата Сообщение от zuq Посмотреть сообщение
Запускай цикл заново continue; если не правильно
попробывал уже, не получается. Может ты вставишь ? а то я, наверное неправильно как то вставил. Хотя я 3 раза переставлял
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
16.07.2011, 13:11     операция повторения #15
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int match, win, ni, por;
    while(true) {
    cout<<"Введите количество матчей: ";
        cin >> match;
        cout<<"Введите количество побед: ";
        cin >> win;
        if ( win <= match)
        cout<<"Введите количество ничих: ";
        else {
        cout << "Не лги мне!" << endl;
        continue;
        }
        cin >> ni;
        if ( match - win >= ni) {
            cout << "ololo";
            continue;
        }
        cout<<"Введите количество поражений: ";
        cin >> por;
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
        break;
    }
        system("pause");
        return 0;
}
Kastaneda
Форумчанин
Эксперт С++
4259 / 2791 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
16.07.2011, 13:15     операция повторения #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(){
    locale::global(locale(""));// для русского языка
    int match, win, ni, por;
    while(cout<<"Введите количество матчей (для выхода введите 'q'): " && cin >> match){
        while(cout<<"Введите количество побед: " && cin >> win &&
            !(win<=match) && cout<<"Не лги мне!\n");
        while(cout<<"Введите количество ничих: " && cin >> ni &&
            !(ni<=match-win) && cout<<"Не лги мне!\n");
        while(cout<<"Введите количество поражений: " && cin >> por &&
            !(por==match-win-ni) && cout<<"Не лги мне!\n");
        cout<<"Команда набрала  " << win * 3 + ni <<" очков"<<endl;
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2011, 13:37     операция повторения
Еще ссылки по теме:

Найти повторения слов в строке C++
C++ Оператор повторения
C++ Структуры повторения while, do / while
C++ Числа которые имели повторения
C++ Составить прогрумму с ператорами повторения do while, while, for

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

Или воспользуйтесь поиском по форуму:
Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
16.07.2011, 13:37  [ТС]     операция повторения #17
по любому не получается

Добавлено через 17 минут
нашёл выход.
можно написать вот так
C++
1
if (win <= match && match - win >= ni)
думаю приписать так же кол поражений не составит труда. всем спасибо
Yandex
Объявления
16.07.2011, 13:37     операция повторения
Ответ Создать тему
Опции темы

Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru