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

Присвоение в цикле - C++

Восстановить пароль Регистрация
 
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 10:30     Присвоение в цикле #1
Так выглядит условие задачи:
Написать программу нахождения средней температуры за неделю и подсчета количества теплых и холодных дней. Также вывести на экран значения температуры самого холодного и самого теплого дней за неделю. Температура вводится с клавиатуры.
Вот что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double t, s = 0, st, tt = 0, ht = 0, kd = 0, min = 0, max = 0;
    do
        {
        cout << "Введите температуру" << endl;
        cin >> t;
        kd++;
        s = s + t;
        st = s / kd;
        (t < 0) ? ht++ : tt++;
        if (t > max){ max = t; }
        if (t < min){ min = t; }
        } 
    while (kd < 7);
cout << "Средняя температура за неделю: " << st << endl;
cout << "Холодных дней: " << ht << endl;
cout << "Теплых дней: " << tt << endl;
cout << "Максимальная температура за неделю: " << max << endl;
cout << "Минимальная температура за неделю: " << min << endl;
return 0;
Как сделать так чтобы условия минимальной и максимальной температуры выводилось правильно?
P.S: только начал изучать циклы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 10:30     Присвоение в цикле
Посмотрите здесь:

C++ Присвоение значений
присвоение typeid C++
C++ Не выполняет присвоение
C++ вывод, присвоение
C++ Присвоение структур
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yanush
 Аватар для Yanush
154 / 150 / 44
Регистрация: 28.09.2013
Сообщений: 281
Завершенные тесты: 1
08.12.2013, 11:15     Присвоение в цикле #2
Попробуй так:

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
51
52
53
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int dayNum;
    double curTemp = .0;
    double avgTemp = .0;
    double maxTemp = .0;
    double minTemp = .0;
    int nullTemp = 0;
    int hDayNum = 0;
    int cDayNum = 0;
 
    std::cout << "Введите кол-во дней: ";
    std::cin >> dayNum;
    system("CLS");
 
 
    for (int i = 0; i < dayNum; i++)
    {
        std::cout << "Введите температуру за " << (i + 1) << " день: ";
        std::cin >> curTemp;
        avgTemp +=curTemp;
 
        if (curTemp < 0.0)
            cDayNum++;
        else if (curTemp > 0.0)
            hDayNum++;
        else
            nullTemp++;
 
        if (curTemp > maxTemp)
            maxTemp = curTemp;
        else if (curTemp < minTemp)
            minTemp = curTemp;
        system("CLS");
    }
    avgTemp /= dayNum;
 
    std::cout << "Средняя температура за " << dayNum << " дней: " << avgTemp << ".\n";
    std::cout << "Холодных дней - " << cDayNum << ".\n";
    std::cout << "Теплых дней - " << hDayNum << ".\n";
    std::cout << "Дней, с нулевой температурой - " << nullTemp << ".\n";
 
    std::cout << "Максимальныя температура за " << dayNum << " дней: " << maxTemp << ".\n";
    std::cout << "Минимальная температура за " << dayNum << " дней: " << minTemp << ".\n";
 
 
    system("pause");
    return 0;
}
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 11:25  [ТС]     Присвоение в цикле #3
Yanush, Пребольшое спасибо тебе, добрый человек
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 11:42  [ТС]     Присвоение в цикле #4
Цитата Сообщение от Yanush Посмотреть сообщение
Попробуй так:

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
51
52
53
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int dayNum;
    double curTemp = .0;
    double avgTemp = .0;
    double maxTemp = .0;
    double minTemp = .0;
    int nullTemp = 0;
    int hDayNum = 0;
    int cDayNum = 0;
 
    std::cout << "Введите кол-во дней: ";
    std::cin >> dayNum;
    system("CLS");
 
 
    for (int i = 0; i < dayNum; i++)
    {
        std::cout << "Введите температуру за " << (i + 1) << " день: ";
        std::cin >> curTemp;
        avgTemp +=curTemp;
 
        if (curTemp < 0.0)
            cDayNum++;
        else if (curTemp > 0.0)
            hDayNum++;
        else
            nullTemp++;
 
        if (curTemp > maxTemp)
            maxTemp = curTemp;
        else if (curTemp < minTemp)
            minTemp = curTemp;
        system("CLS");
    }
    avgTemp /= dayNum;
 
    std::cout << "Средняя температура за " << dayNum << " дней: " << avgTemp << ".\n";
    std::cout << "Холодных дней - " << cDayNum << ".\n";
    std::cout << "Теплых дней - " << hDayNum << ".\n";
    std::cout << "Дней, с нулевой температурой - " << nullTemp << ".\n";
 
    std::cout << "Максимальныя температура за " << dayNum << " дней: " << maxTemp << ".\n";
    std::cout << "Минимальная температура за " << dayNum << " дней: " << minTemp << ".\n";
 
 
    system("pause");
    return 0;
}
C++
1
2
3
4
if (curTemp > maxTemp)
            maxTemp = curTemp;
        else if (curTemp < minTemp)
            minTemp = curTemp;
Я ввел температуру: 1,2,3. А оно выдает минимальная температура 0. такая же ошибка, что и у меня
Миниатюры
Присвоение в цикле  
Liden
17 / 17 / 2
Регистрация: 19.11.2013
Сообщений: 83
08.12.2013, 11:54     Присвоение в цикле #5
NikiKoyot, так вы зачем min и max присваиваете 0? просто объявите и сначала присвойте значение первого значения температуры, а потом сравнивайте с последующими, если больше(меньше), то меняйте на это значение.
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 12:01  [ТС]     Присвоение в цикле #6
Цитата Сообщение от Liden Посмотреть сообщение
NikiKoyot, так вы зачем min и max присваиваете 0? просто объявите и сначала присвойте значение первого значения температуры, а потом сравнивайте с последующими, если больше(меньше), то меняйте на это значение.
А в коде как оно будет выглядеть? Заранее спасибо
Liden
17 / 17 / 2
Регистрация: 19.11.2013
Сообщений: 83
08.12.2013, 12:33     Присвоение в цикле #7
NikiKoyot, самый простой вариант: записать все температуры в массив, отсортировать их и вывести самый первый(макс элемент) и самый последний (минимальный элемент). Попробуйте сами, не получится - напишу код.
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 12:38  [ТС]     Присвоение в цикле #8
Цитата Сообщение от Liden Посмотреть сообщение
NikiKoyot, самый простой вариант: записать все температуры в массив, отсортировать их и вывести самый первый(макс элемент) и самый последний (минимальный элемент). Попробуйте сами, не получится - напишу код.
Нельзя использовать массив.Да и не изучали мы его ещё, но было бы интересно посмотреть.
Yanush
 Аватар для Yanush
154 / 150 / 44
Регистрация: 28.09.2013
Сообщений: 281
Завершенные тесты: 1
08.12.2013, 12:39     Присвоение в цикле #9
Точняк, извиняюсь.


double minTemp = 0.0; // тут какое-нибудь большое число подставить, напри 1000.0
double maxTemp = .0; // а тут наоборот - маленькое - -999.0
else if (curTemp < minTemp) // вот тут else нужно убрать.
NikiKoyot
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
08.12.2013, 12:56  [ТС]     Присвоение в цикле #10
Цитата Сообщение от Yanush Посмотреть сообщение
Точняк, извиняюсь.


double minTemp = 0.0; // тут какое-нибудь большое число подставить, напри 1000.0
double maxTemp = .0; // а тут наоборот - маленькое - -999.0
else if (curTemp < minTemp) // вот тут else нужно убрать.
Вот теперь правильно. Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 13:50     Присвоение в цикле
Еще ссылки по теме:

C++ Присвоение указателей
Что за присвоение? C++
присвоение значения C++

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

Или воспользуйтесь поиском по форуму:
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
08.12.2013, 13:50     Присвоение в цикле #11
Цитата Сообщение от Liden Посмотреть сообщение
NikiKoyot, самый простой вариант: записать все температуры в массив, отсортировать их и вывести самый первый(макс элемент) и самый последний (минимальный элемент). Попробуйте сами, не получится - напишу код.
Ну дак, пузырьковая сортировка, не? Да только зачем так делать, если можно переменную t сравнивать с максимальной на ДАННЫЙ момент температурой, и если она больше - то в максимальную записываем t и продолжаем выполнять цикл.

Добавлено через 6 минут
http://joxi.ru/wECkUtg5CbAnBe8sgig
Вот собственно и в чем проблема. Ведь минимальная температура изначально была 0, а если все дни теплые? То конечно же переменной min ничего не присвоится.
Yandex
Объявления
08.12.2013, 13:50     Присвоение в цикле
Ответ Создать тему
Опции темы

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