Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/64: Рейтинг темы: голосов - 64, средняя оценка - 4.86
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92

Вычисление средней температуры через векторы

15.07.2017, 01:17. Показов 13328. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть условие.Даны значения температуры, наблюдавшиеся в течение N подряд идущих дней. Найдите номера дней (в нумерации с нуля) со значением температуры выше среднего арифметического за все N дней.
Гарантируется, что среднее арифметическое значений температуры является целым числом.
Формат ввода
Вводится число N, затем N неотрицательных целых чисел — значения температуры в 0-й, 1-й, ... (N−1)-й день.
Формат вывода
Первое число K — количество дней, значение температуры в которых выше среднего арифметического. Затем K целых чисел — номера этих дней.
Мое решение
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
//Тренировочное задание по программированию: Средняя температура
/*Даны значения температуры, наблюдавшиеся в течение N подряд идущих дней. Найдите номера дней (в нумерации с нуля) со значением температуры выше среднего арифметического за все N дней.*/
#include <iostream>
#include <vector>
using namespace std;
vector <int> SrTemp (const vector<int>& v,int& n)
 {  int y=0;
    int St;
    vector<int> vv;
    for (auto x:v)
    {
        y=y+x;      
 
    }
    St= y/2;
    for (auto x:vv)
    {
        if(x<St)
    {
        vv.push_back(x);
    }
    }
  return v;
  }
 
int main() {
    int n;
 
    cin>>n;vector<int> temp (n);
    vector<int> v;
    for (int i=0;i<n;i++)
     {
        int t;
        cin>>t;
        temp.push_back(t);
     }
    v=SrTemp (temp,n);
    int k =v.size();
    cout<<k<<endl;
    for(auto x:v)
    { 
    cout<<x;
    }
    return 0;
}
Почему то не работает.Вроде все предусмотрел.

Добавлено через 18 минут
опечатки в коде.
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
#include <iostream>
#include <vector>
using namespace std;
vector <int> SrTemp (const vector<int>& v,int& n)
 {  int y=0;
    int St;
    vector<int> vv;
    for (auto x:v)
    {
        y=y+x;      
     
    }
    St= y/v.size();
    for (auto x:v)
    {
        if(x<St)
    {
        vv.push_back(x);
    }
    }
  return vv;
  }
 
int main() {
    int n;
    
    cin>>n;vector<int> temp (n);
    vector<int> s;
    for (int i=0;i<n;i++)
     {
        int t;
        cin>>t;
        temp.push_back(t);
     }
    s=SrTemp (temp,n);
    int k =s.size();
    cout<<k<<endl;
    for(auto x:s)
    { 
    cout<<x;
    }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2017, 01:17
Ответы с готовыми решениями:

Вывод на экран средней температуры дня
В структуре одно поле используется для записи числа месяца, второе и третье для температуры дня в 10 и в 16 часов. Кроме того...

Вычисление средней температуры за сутки, если температура измеряется каждые два часа
Заранее извиняюсь, что пишу сюда. Это от беспомощности, наверное) Вообщем завтра мне нужно сдать 10 задач, а в турбо паскале я не знаю...

Нахождение средней температуры месяца
Напишите программу, которая - вводит значения температур всех дней месяца; - находит среднюю температуру месяца. При написании...

11
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
15.07.2017, 01:59
ZarinZomanu4,
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
// Example program
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int>temperature;
    
    int counterDay;
    int valueTemperature;
    int sum = 0; // Сумма температур
    int average; // Средняя температура
    
    std::cout << "Enter counter days: ";
    std::cin >> counterDay;
    
    std::cout << "Enter value temperature" << std::endl;
    for (int  i = 0; i < counterDay; i++)
    {
        std::cout << "day [" << i << "]: ";
        std::cin >> valueTemperature;
        temperature.push_back(valueTemperature);
    }
    
    for (int i = 0; i < temperature.size(); i++)
        sum += temperature[i];
        
    average = sum / temperature.size();
    
    std::cout << "The average temperature: " << average << std::endl;
    
    std::cout << "The days temperature over average" << std::endl;
    
    // Выведем дни, температура которых выше средних
    for (int  i = 0; i < temperature.size(); i++)
    {
        if (temperature[i] > average)
            std::cout << "Day " << i << "; temperature: " << temperature[i] << std::endl;
    }
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.07.2017, 02:05
Может проще как-то, не?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <numeric>
 
int main() {
    const int DAYS = 5;
    int temps[DAYS] = { 30, 25, 15, 20, 35 };
    
    std::cout << "Temperatures: ";
    for ( int i = 0; i < DAYS; ++i )
        std::cout << temps[i] << " ";
    int avg = std::accumulate(temps, temps + DAYS, 0) / DAYS;
    std::cout << "\nAverage: " << avg << std::endl;
    std::cout << "Day indexes when temperature was higher than average: ";
    for ( int i = 0; i < DAYS; ++i )
        if ( temps[i] > avg )
            std::cout << i << " ";
    std::cout << std::endl;
    
    return 0;
}
1
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
15.07.2017, 12:20  [ТС]
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
vector<int> temp (n); vector<int> v; for (int i=0;i<n;i++) { int t; cin>>t; temp.push_back(t); }
Подскажите почему этот вектор получается в два раза больше?если передать ему значение 3 и ввести 3 значения его size() будет равно 6? Если размер вектора не указsвать все работает, так же работает, если вносить значения по индексах temp[i]=t;
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
15.07.2017, 12:43
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
передать ему значение 3 и ввести 3 значения его size() будет равно 6?
потому что вектор инициализировался с 3 элементами, а потом с помощью push_back были добавлены ещё 3 элемента. Если требуется работать с уже содержащимися в векторе элементами, достаточно
C++
1
2
for (int i=0;i<n;i++)
   cin>>temp[i];
1
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
15.07.2017, 14:14  [ТС]
мое решение
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
    #include <iostream>
    #include <vector>
    using namespace std;
    int main() {
        int n;
        cin>>n;
        vector<int> temp(n);
        for (int i=0;i<n;i++)
         {
            int t;
            cin>>t;
            temp[i]=t;
         }
        int y=0;
        int St;
        vector<int> vv;
        vector<int> vvv;
        for (auto x:temp)
        {   y=y+x;     
     
        }
        St= y/temp.size();
         for (int i=0;i<temp.size();i++)//этот блок for работатет корректно
       {
            if(temp[i]>St)
        {    vv.push_back(temp[i]);
            vvv.push_back(i);
        }
     // а вот этот не работает
/*for (auto x:temp)
    {   int z=0;
        if(x>St)
    {    vv.push_back(x);
        vvv.push_back(z);
    }
    z=z+1;
    }*/
 
 
       }
        int k =vv.size();
        cout<<k<<endl;
        for(auto x:vvv)
        { 
        cout<<x<<" ";
     
        }
        return 0;
    }
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
15.07.2017, 14:23
Оформление не очень. И вместо
C++
1
2
3
4
        for (auto x:temp)
        {   y=y+x;     
     
        }
C++
1
2
        for (auto x:temp)
              y+=x;
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
15.07.2017, 14:25  [ТС]
записывает в вектор vvv нули.
input
3
3
6
6
output
2
0 0
Цитата Сообщение от TRam_ Посмотреть сообщение
Оформление не очень.
Я работаю над этим
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
15.07.2017, 16:48
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
Я работаю над этим
Функция форматирования кода сейчас есть во многих редакторах, не говоря уже об IDE.
0
 Аватар для wendstor
139 / 137 / 66
Регистрация: 15.05.2012
Сообщений: 518
15.07.2017, 18:35
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
int main()
{
    // средняя температура
    auto average (0);
    // дни с показателями температуры
    std::vector<int> temps;
 
    std::cout << "Please enter counts days" << std::endl;
    auto days (0);
    // вводим число дней
    std::cin >> days;
    std::cout << "Please enter temperature of day" << std::endl;
    // теперь каждому дню присваиваем температурное значение 
    while (days != 0)
    {
        int temperature;
        std::cin >> temperature;
        temps.push_back(temperature);
        average += temperature;
        days--;
    }
    // вычисляем среднее
    average = average / temps.size();
    std::cout << "Average temperature: " << average << std::endl;
    // ну и сам вывод
    for (auto itr = temps.begin(); itr < temps.end(); ++itr)
        if (*itr > average)
            std::cout << "Day: " << (itr - temps.begin()) << " temperature: " << *itr << std::endl;
 
    system("pause");
 
    return 0;
}
1
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
15.07.2017, 22:57  [ТС]
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
C++
1
for (auto x:temp) { int z=0; if(x>St) { vv.push_back(x); vvv.push_back(z); } z=z+1; }
не работает потому что z локальная переменная.при каждой итерации цикла ей присваивается значение 0
0
21 / 21 / 20
Регистрация: 07.02.2016
Сообщений: 87
09.10.2017, 13:47
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
#include <iostream>
#include <vector>
#include <numeric>
 
using namespace std;
 
int main(){
    int n = 0;
    int temp = 0;
    cin >> n;
    vector<int> v;
    for (unsigned i = 0;i < n;i++){
        cin >> temp;
        v.push_back(temp);
    }
    int avr = accumulate(v.begin(),v.end(),int())/v.size();
    vector<int> v_new;
    int d_cnt = 0;
    for (unsigned i = 0;i < v.size();i++){
        if (v[i] > avr){
            d_cnt++;
            v_new.push_back(i);
        }
    }
    cout << d_cnt << endl;
    for (unsigned i = 0;i < v_new.size();i++){
        cout << v_new[i] << " ";
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2017, 13:47
Помогаю со студенческими работами здесь

Расчет средней температуры чурки

Расчет средней температуры StringGrid
Зафиксируйте у StringGrid верхнюю строку, в которой перечислите дни: от 1 до 30. В следующей строке вводится температура Температура...

Определение средней температуры четырех сезонов
var t: array of integer; i: integer; begin for i:=1 to 12 do t:=-21; t:=-18; t:=-7,5;

Составить программу вычисления средней температуры за неделю
Ребят помогите пожалуйста решить задачи, срочно нужно до завтра их решить. Вся надежда на Вас. 2. В гидрометеослужбе с помощью ПК...

Нахождение средней температуры дней, предшевствующих самому холодному дню
Помогите решить задачку Надо найти среднюю температуру тех дней, которые предшествуют первому из самых холодных дней в декабре; Вот я тут...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru