Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
QzzQ
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 22
1

Получение данных из файла

02.08.2014, 17:05. Просмотров 1063. Ответов 1
Метки нет (Все метки)

Задача№6.
Постройте программу, которая отслеживает пожертвования в Общество Защиты Влиятельных Лиц. Она должна запрашивать у пользователя количество меценатов, а затем приглашать вводить их имена и суммы пожертвований от каждого. Информация должна сохраняться в динамически выделяемом массиве структур. Каждая структура должна иметь два члена: символьный массив (или объект string) для хранения имени и переменную-член типа double — для хранения суммы пожертвования. После чтения всех данных программа должна отображать имена и суммы пожертвований тех, кто не пожалел $10 000 и более. Этот список должен быть озаглавлен меткой "Grand Patrons". После этого программа должна выдать список остальных жертвователей. Он должен быть озаглавлен "Patrons". Если в одной из двух категорий не окажется никого,программа должна напечатать "none". Помимо отображения двух категорий,никакой другой сортировки делать не нужно.
Ее я сделал.

Задача№9.
Выполните упражнение 6, но измените его так, чтобы данные можно было получать из файла. Первым элементом файла должно быть количество меценатов,а остальная часть состоять из пар строк, в которых первая строка содержит имя, а вторая — сумму пожертвования. То есть файл должен выглядеть примерно так:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000

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
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib> //для exit(EXIT_FAILURE)
 
using namespace std;
 
struct patron {
    string name;
    double donation;
};
 
int main()
{
    string filename;
fstream file;
    cout << "Enter name of the file: ";
    getline(cin, filename);
    file.open(filename); //вот здесь ругается
    if (!file.is_open())
    {
        cout << "Could not open the file" << filename << "." << endl;
        exit(EXIT_FAILURE);
    }
    int n;
    (file >> n).get();
    patron * p_patron = new patron[n];
    cout << "Reading the information about patrons." << endl;
    for (int i = 0; i < n; i++)
    {
     cout << "Maecenas  #" << i+1 << endl;
       cout << "Enter name " << endl;
        getline(file, p_patron[i].name);
        cout << "and the amount of donations " << endl;
        (file >> p_patron[i].donation).get();
    }
    file.close();
    
    cout << "Grand Patrons." << endl;
    int countgp = 0;
    for (int j = 0; j < n; j++)
    {
        if (p_patron[j].donation >= 10000)
        {
            cout << p_patron[j].name << " - " << p_patron[j].donation << endl;
            countgp++;
        }
    }
    if (countgp == 0)
        cout << "none" << endl;
    cout << endl;
    cout << "Patrons." << endl;
    int countp = 0;
    for (int k = 0; k < n; k++)
    {
        if (p_patron[k].donation < 10000)
        {
            cout << p_patron[k].name << " - " << p_patron[k].donation << endl;
            countp++;
        }
    }
    if (countp == 0)
        cout << "none" << endl;
    
    cin.get();
    return 0;
}
Почему в 19-ой строке выдает ошибку не могу понять?
Пишет вот это:
C++
1
2
3
4
[Error] no matching function for call to 'std::basic_fstream<char>::open(std::string&)'
 [Note] candidate is:
 [Note] void std::basic_fstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::_Ios_Openmode]
 [Note] no known conversion for argument 1 from 'std::string {aka std::basic_string<char>}' to 'const char*'
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 17:05
Ответы с готовыми решениями:

Ввод данных, добавление данных, получение информации из файла по заданным критериям выборки
Все привет!!!Обращаюсь к вам за помощью...никак не получается решить задачку... Суть...

Получение данных из файла в Спортивном программировании
Здавствуйте! Решая задачи по спортивному программированию, столкнулся с тем, что в 95% нужно...

Получение атрибутов файла (а именно дату создания файла) без WinApi
Здравствуйте, есть задача &quot;получить дату создания файла&quot;, как это реализовать без WinApi с...

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

Получение данных из файла с проверкой даты изменения файла
Скрипт, который получит данные их файла (get-content -File &quot;C:\File.txt&quot; в файле написано число),...

1
porshe
55 / 49 / 42
Регистрация: 18.07.2014
Сообщений: 194
02.08.2014, 17:10 2
Потому что функция open() принимает C-строку и ещё параметры открытия( необязательно ), но не объект класса string. Так будет работать:
C++
1
file.open(filename.c_str());
Метод c_str() возвращает C-строку.
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 17:10

Получение данных файла
Здравствуйте, есть задание получать данные файла и сохранять их в свой файл. Какие данные у...

Получение данных из файла. Снова
Здравствуйте. Необходимо получить данные из текстового файла формата: {&quot;Код1&quot;: {&quot;переменная1&quot;:...

Получение данных с XML файла
Здравствуйте. При парсинге XML файла появилась одна проблема, не могу забрать определённые данные и...


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

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

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