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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
#1

Введите с клавиатуры данные о температуре воздуха за месяц. Определите, сколько раз за месяц была самая низкая температура? - C++

07.10.2011, 23:37. Просмотров 1608. Ответов 13
Метки нет (Все метки)

Собственно, проходим циклы, возникли проблемы с этой задачей. Нуждаюсь в вашей помощи.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2011, 23:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Введите с клавиатуры данные о температуре воздуха за месяц. Определите, сколько раз за месяц была самая низкая температура? (C++):

Определите: сколько раз температура была выше нуля - C++
Привет всем!! У меня есть не большая проблемка! Вот суть её: В текстовом файле записаны результаты измерения температуры воздуха,...

С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась. Определите, в котором часу была - C++
Я написала вот так вот, изначально задав данные, но сказали, что нужно писать через массив, помогите пожалуйста #include <conio.h> ...

Определить месяц, в котором прибыль была максимальна и месяц, в котором прибыль была минимальна. - C++
Пользователь вводит прибыль фирмы за год (12 месяцев). Необходимо определить месяц, в котором прибыль была максимальна и месяц, в котором...

Введите месяц и день своего рождения - C++
Задача 19. Введите месяц и день своего рождения. Выясните, какой ближайший год будет для вас счастливым. Год называется счастливым, если...

Определить месяц, в котором прибыль была максимальна и минимальна - C++
Здравствуйте, я начинающий и на выполнении одной задачи у меня возникла проблема. Есть такое задание: "Пользователь вводит прибыль за 12...

Определить месяц, в котором прибыль была максимальна/минимальна с учетом выбранного диапазона месяцев - C++
Добрый день. Задание звучит так: Пользователь вводит прибыль фирмы за год(12 месяцев).Затем пользователь вводит диапазон(например, 3 и 6...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
07.10.2011, 23:37 #2
Обалдеть.
0
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
07.10.2011, 23:41  [ТС] #3
Цитата Сообщение от neske Посмотреть сообщение
Обалдеть.
Где именно обалдеть?
0
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
07.10.2011, 23:49 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
int f(int *n)
{
    int min,i;
    min = *n;
    for(i = 0; i < 4; i++) {
        if (min < *n)
            min = *n;
        n++;
    }
    return min;
 
}
как-то так.
0
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
07.10.2011, 23:56  [ТС] #5
Цитата Сообщение от LostCoast Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
int f(int *n)
{
    int min,i;
    min = *n;
    for(i = 0; i < 4; i++) {
        if (min < *n)
            min = *n;
        n++;
    }
    return min;
 
}
как-то так.
Мы еще не проходили указатели
0
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
07.10.2011, 23:58 #6
тогда
C
1
2
3
4
5
6
7
8
9
10
int f(int n[])
{
        int min,i;
        min = n[0];
        for(i = 0; i < 4; i++) {
                if (min < n[i])
                        min = n[i];
        }
        return min;
}
0
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
08.10.2011, 00:00  [ТС] #7
Цитата Сообщение от LostCoast Посмотреть сообщение
тогда
C
1
2
3
4
5
6
7
8
9
10
int f(int n[])
{
        int min,i;
        min = n[0];
        for(i = 0; i < 4; i++) {
                if (min < n[i])
                        min = n[i];
        }
        return min;
}
Все равно, слишком непонятно для новичка. Мы прошли лишь операторы ветвления и операторы цикла.
0
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
08.10.2011, 00:11 #8
Навскидку где-то так
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()
{
    const int N=5;
    int temp[N];//массив значений температур за N дней
    for(int i=0;i<N;i++)
    {
        cout<<"Enter temperature for "<<i+1<<" day: ";
        cin>>temp[i];
    }
    int min=temp[0];//минимальное значение температуры инициализируем первым значением массива
    for(int i=1;i<N;i++)
        if(temp[i]<min) min=temp[i];
    cout<<"\nMinimum temperature: "<<min<<endl;
    int n_min=0;//кол-во дней с минимальной температурой
    for(int i=0;i<N;i++)
        if(temp[i]==min) n_min++;
    cout<<"Days with min temperature: "<<n_min<<endl;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
08.10.2011, 00:17 #9
Цитата Сообщение от DieZZzz Посмотреть сообщение
Все равно, слишком непонятно для новичка. Мы прошли лишь операторы ветвления и операторы цикла.
Один умный человек с этого форума (тут должен быть ник, но я не помню) сказал:"Институт не школа. Объект "Студент" должен быть субъектом самостоятельной добычи знаний. "
0
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
08.10.2011, 00:39  [ТС] #10
aeshes, спасибо, я тоже хотел делать массивами, но нельзя. Вот код, который я "придумал" сам, осталось только запилить счетчик. Готов к критике
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
void main()
{
        int i,t,tmin;
        printf("Vvedite T: ");
        scanf("%d", &t);
        tmin=t;
        for (i=2; i<=30; i++)
        {
        printf("Vvedite T: ");
        scanf("%d", &t);
        if (t<tmin) tmin=t;
        }
        printf ("Minimal'naya temperatyra ravna %d gradysov\n", tmin);
 
}
Добавлено через 13 минут
Итоговый код, который удалось составить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
void main()
{
        int i,t,tmin, count=1;
        printf("Vvedite T: ");
        scanf("%d", &tmin);
        for (i=2; i<=30; i++)
        {
        printf("Vvedite T: ");
        scanf("%d", &t);
        if (t==tmin) count++;
        else if (t<tmin) {tmin=t; count=1;}
        }
        printf ("Minimal'naya temperatyra ravna %d gradysov i ona byla %d raz za mesyac\n", tmin, count);
 
}
Все вроде выводит верно. Хотелось бы узнать, есть ли способы еще больше оптимизировать программу?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
08.10.2011, 00:44 #11
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
#include <iostream>
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL,"Russian");
    float *days, min;
    int x, num = 0;
    do // lamer protection
    {
        std::cout<< "Введите количество дней: ";
        std::cin>>x;
        if (x <= 0)
            std::cout << "Да вы наркоман!\n";
    } while (x <= 0);
    days = new float(x); // выделяем память под х элементов
    for (int i=0; i < x; i++)
    {
        if (i == 1) // ну чтоб по-русски было :)
            std::cout<< "Введите температуру во "<< i+1<< " день: ";
        else
            std::cout<< "Введите температуру в "<< i+1<< " день: ";
        std::cin>> days[i];
        // определяем минимальную температуру
        if (i == 0)
            min = days[i];
        if (days[i] < min)
            min = days[i];
    }
    for (int k =0; k < x; k++)
        if (days[k] == min)
            num++;
    std::cout<< "Количество дней с минимальной температурой: "<< num;
    getch(); // пауза
    return 0;
}
Добавлено через 4 минуты
Цитата Сообщение от DieZZzz Посмотреть сообщение
Готов к критике
Во первых, по стандарту принято писать int main() и во вторых, переменные объявлены как int, а записываются и считываются как double.
1
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
08.10.2011, 01:00  [ТС] #12
Теперь вот так.
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 "stdafx.h"
#include <iostream>
int main()
{
        setlocale(LC_ALL,"Russian");
        int i,t,tmin,days, count=1;
        printf("Введите количество дней в месяце: ");
        scanf("%d", &days);
        if (days<28 || days>31)  printf("Столько дней в месяце не бывает!\n"); 
        else {
        printf("Температура в 1ый день: ");
        scanf("%d", &tmin);
        for (i=2; i<=days; i++)
        {
        if (i==2) printf("Температура во %dой день: ", i);
        else printf ("Температура в %dий день: ", i);
        scanf("%d", &t);
        if (t==tmin) count++;
        else if (t<tmin) {tmin=t; count=1;}
        }
        printf ("Минимальная температура за месяц была равна %d градусa(ов).\nКоличество дней с минимальной температурой: %d.\n", tmin, count);
        }
        
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
08.10.2011, 01:35 #13
scanf("%i", &t);
0
DieZZzz
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 29
08.10.2011, 01:40  [ТС] #14
Ну все, задача решена.
Большое спасибо MrGluck.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 01:40
Привет! Вот еще темы с ответами:

С клавиатуры указать месяц - C++
Чтобы номер месяца можно было вводить с клавиатуры, и были ограничения на месяца #include &lt;iostream.h&gt; #include &lt;conio.h&gt; bool...

Известны данные о температуре воздуха в течение месяца. Определить, сколько раз дней за месяц была самая низкая температура - Turbo Pascal
Известны данные о температуре воздуха в течение месяца. Определить, сколько раз дней за месяц была самая низкая температура. Добавлено...

Данные о температуре воздуха хранятся в массиве. Сколько раз температура опускалась ниже -10 градусов? - C++ Builder
Данные о температуре воздуха за декаду ноября хранятся в массиве. Определить, сколько раз температура опускалась ниже –10 градусов.Я в этом...

Данные о температуре хранятся в массиве. Сколько раз температура была выше средней - Pascal
Данные о температуре воздуха за декаду хранятся в массиве. Определить, сколько раз темпераура была выше средней за эту декаду.Решите...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.10.2011, 01:40
Ответ Создать тему
Опции темы

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