0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
1

Программа читает из файла, ищет среднее и медиану, не компилируется

30.08.2019, 05:16. Показов 443. Ответов 0
Метки нет (Все метки)

Программа читает из файла, ищет среднее и медиану, не компилируется. IDE VS 2019.
Часть которая закоменчена работает.

Вот что говорит компилятор.
https://ibb.co/t4hFDkD
https://ibb.co/zQQ0sfd
https://ibb.co/bPH3HB7

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//файл main.cpp
#include <Header.h>
#include <Reading.h>
 
void fread_to_vector(vector<Reading>& read, string iname)
{
    ifstream ist{ iname };
    if (!ist)
        error("Невозможно открыть входной файл", iname);
    int hour;
    double temp;
    while (ist >> hour >> temp)
    {
        if (0 <= hour && 23 >= hour)
            read.push_back(Reading{ hour, temp });
        else
            error("Некорректное время в файле ", iname);
        if (ist.eof()) {
            cout << "Достигнут конец файла" << iname << endl;
            return;
        }
    }
}
 
void write_to_file(const vector<Reading>& read, string oname)
{
    ofstream ost{ oname };
    if (!ost)
        error("Невозможно открыть выходной файл", oname);
    for (int i = 0; i < read.size(); ++i)
        ost << read[i].hour << ' ' << read[i].temperature << endl;
}
 
void enter(vector<Reading>& read) 
{
    cout << "Введите час и температуру 10 раз" << endl;
    for (int i = 0; i < 10; ++i)
    {
        int hour;
        double temp;
        cin >> hour >> temp;
        if (0 <= hour && 23 >= hour)
            read.push_back(Reading{ hour, temp });
        else
            error("Некорректное время");
    }
}
 
void print(const vector<Reading>& read)
{
    cout << endl;
    for (int i = 0; i < read.size(); ++i)
    {
        cout << read[i].hour << ' ' << read[i].temperature << endl;
    }
    cout << endl;
}
 
double sum(const vector<Reading>& read)
{
    double s = 0;
    for (int i = 0; i < read.size(); ++i)
        s += read[i].temperature;
    return s;
}
 
double mediana(vector<Reading> read)
{
    sort(read.begin(), read.end());
    if (read.size() % 2 == 1)
        return read[(read.size() - 1) / 2].temperature;
    else
        return (read[read.size() / 2].temperature + read[read.size() / 2 - 1].temperature) / 2;
}
 
int main()
try
{
    setlocale(LC_ALL, "Russian");
//  vector<Reading> raw_t;
//  enter(raw_t);
//  print(raw_t);
//  write_to_file(raw_t, "raw_temps.txt");
    vector<Reading> work_t;
    fread_to_vector(work_t, "raw_temps.txt");
    print(work_t);
    cout << "Среднее " << sum(work_t) / work_t.size() << endl
        << "Медиана " << mediana(work_t) << endl;
}
catch (exception& e) {
    cerr << "exception: " << e.what() << endl;
    char c;
    while (cin >> c && c != ';');
    return 1;
}
C++
1
2
3
4
5
6
7
//файл Reading.h
#pragma once
struct Reading
{
    int hour;
    double temperature;
};
Добавлено через 29 минут
не компилируется из-за функции double mediana(vector<Reading> read)

Добавлено через 3 минуты
а все понял, он просто не знает как сортировать пользовательский тип
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2019, 05:16
Ответы с готовыми решениями:

Программа которая ищет среднее арифметическое
Ребят помогите пожалуйста, дали задание , но так уж вышло что в паскале я совсем ничего не...

Программа не читает данные с файла
Дан простейший интерфейс, при нажатии прочесть из файла (реализация строки 27-30) консоль...

Программа с чтением файла не компилируется
Программа с чтением файла не компилируется. Почему?

Программа неправильно читает заданые данные из текстового файла
Собственно, программа неправильно читает заданые данные из текстового файла. При вводе данных с...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2019, 05:16

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Программа читает текст из файла, и определяет сколько слов состоящих не более 4 букв
Программа читает текст из файла, и определяет сколько слов состоящих не более 4 букв. Написал код...

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio 2008 и в борланде 10-м...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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