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

Не выходит из цикла while - C++

Восстановить пароль Регистрация
 
Евгений89
 Аватар для Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
29.09.2012, 20:27     Не выходит из цикла while #1
почему при нажатии (-1) не выходит из цикла?

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
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <iomanip>
 
using namespace std
 
 
int main()
{
    float sum,sred,rashod,emkost;
    int counter, pyt;
 
     setlocale(LC_ALL,"rus");
    
    sum = 0;
    counter = 0;
 
    cout <<"Введите расход бензина и пройденый путь(-1, если ввод закончен): ";
    cin >> rashod;
    cout << "Введите пройденый путь: ";
    cin >> pyt;
 
    emkost = pyt/rashod;
    cout<< "Для этой емкости получено миль/галон: " <<emkost;
    cout <<"\n";
 
    while (rashod!=-1 ){
    counter++;  
    cout <<"Введите расход бензина и(-1, если ввод закончен): ";
    cin >> rashod;
    cout << "Введите пройденый путь: ";
    cin >> pyt;
    
    emkost = pyt/rashod;
    sum+=emkost;
    cout<< "Для этой емкости получено миль/галон: " <<emkost;
    cout <<"\n";
    } 
 
    if (counter!=0){ //что бы не было деления на ноль
    sred = sum/counter;
    cout << "Средний расход бензина: " <<setprecision(6)
         << setiosflags(ios::fixed|ios::showpoint)
         << sred << endl;
    }
    else 
        cout <<"Расход бензина не введен";
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2012, 20:43     Не выходит из цикла while #2
Выходит. Только сделано неправильно. Вводите -1 здесь:
C++
1
2
cout <<"Введите расход бензина и пройденый путь(-1, если ввод закончен): ";
 cin >> rashod;
, а проверка введённого происходит через шесть строк здесь:
C++
1
2
3
...
while (rashod!=-1 ){
...
Добавлено через 4 минуты
Можно, например, так слегка переделать:
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
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <iomanip>
 
using namespace std;
 
 
 int main()
 {
 float sum,sred,rashod,emkost;
 int counter, pyt;
 
 setlocale(LC_ALL,"rus");
 
 sum = 0;
 counter = 0;
 while (true)
 {
 cout <<"Введите расход бензина и пройденый путь(-1, если ввод закончен): ";
 cin >> rashod;
 if (rashod == -1) break;
 cout << "Введите пройденый путь: ";
 cin >> pyt;
 counter++; 
 
 emkost = pyt/rashod;
 sum+=emkost;
 cout<< "Для этой емкости получено миль/галон: " <<emkost;
 cout <<"\n";
 } 
 
 if (counter!=0){ //что бы не было деления на ноль
 sred = sum/counter;
 cout << "Средний расход бензина: " <<setprecision(6)
 << setiosflags(ios::fixed|ios::showpoint)
 << sred << endl;
 }
 else 
 cout <<"Расход бензина не введен";
 
 
system("pause");
return 0;
}
Евгений89
 Аватар для Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
29.09.2012, 20:52  [ТС]     Не выходит из цикла while #3
я сейчас переделал через do_ while лишнего когда кучу убрал .Странно почему только вот у меня break сразу не работал.)))))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2012, 21:04     Не выходит из цикла while #4
На лишний код я сначала внимания не обратил. Сейчас лишнее убрал. Через do_ while не очено удачно будет, по той же причине, что и первый код: ввод в начале, а проверка в конце. Будет выполняться код, который уже не должен выполняться, так как введён выход. Покажите, как сделали.

Добавлено через 2 минуты
Цитата Сообщение от Евгений89 Посмотреть сообщение
Странно почему только вот у меня break сразу не работал.)))))
Это где не работал? Если про первый код, то работал. Но код выполняется последовательно по строкам. Вводите -1 в одной строке, а проверка через несколько, и всё они будут выполнены до проверки ввода, и только псле этого выход из цикла.
Yandex
Объявления
29.09.2012, 21:04     Не выходит из цикла while
Ответ Создать тему
Опции темы

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