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

Чтение из файла в массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нахождение простых чисел.( http://www.cyberforum.ru/cpp-beginners/thread964523.html
Люди я все понимаю, этот вопрос наверное покажется глупым, точнее он таковым и является. Программа нахождения простых чисел cin >> n; for (j = 2; j < = n /2; j++) if (n % j == 0) Я вот не могу понять, смысл деления n / 2? И ещё вопрос из разряда глупых #include <process.h> Чем можно заменить?
C++ что же на самом деле делает strcpy? вот такой пример #include <iostream> #include <string> using namespace std; int main () { string buff; buff += "what a hell?"; char* cbuf = new char; strcpy(cbuf, buff.c_str()); http://www.cyberforum.ru/cpp-beginners/thread964521.html
Как реализовать случайные числа? C++
Здравствуйте. я озадачен тем что ещё нигде не смог найти нормального способа реализации рандома. ведь даже в паскале он хоть какой то но есть. Не могли бы вы, уважаемые программисты и гуру C++ подсказать мне способ.
C++ почему код не работает?
помогите пожалуйста, почему у меня код не работает? Ввожу "х", потом погрешность, а arth всегда =0. приложил Документ WORD, там описание лабораторной и таблица примеров внизу. у меня 1й вариант, то есть первый пример в списке. вот сам код: #include "StdAfx.h" #include <conio.h> #include <math.h> #include <stdio.h> #include <locale.h>
C++ Массив структук. гдето косячина http://www.cyberforum.ru/cpp-beginners/thread964511.html
пытаюсь заполнить элемент массива, но почемуто ругается "начальника". где я напартачил? сам не вижу( struct person { char lastname; char name; double height; double weight; }; void main() {
C++ Простая програма, не работает Вот что нужно сделать: http://i.imgur.com/2dbeHLo.png Вот что сделал я: #include <iostream> #include <cmath> using namespace std; int main () подробнее

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

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


Проблема в 9-й задаче в том, что если в именах есть пробелы, то с вводом данных в массив возникают проблемы (и с выводом в консоль соотв. тоже). Если пробелы убрать, то программа работает. Что мне нужно изменить, чтобы исправить данную проблему?

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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <cstdlib> //для exit(EXIT_FAILURE)
 
using namespace std;
 
struct patron {
  //char name[25];
  string name;
  double donation;
};
 
int main()
{
  string filename;
  cout << "Enter name of the file: ";
  getline(cin, filename);
  fstream file;
  file.open(filename);
  if (!file.is_open())
  {
    cout << "Can't open " << filename << "." << endl;
    exit(EXIT_FAILURE);
  }
  int n;
  file >> n;
  patron * data = new patron [n];
  cout << "Reading the information about patrons." << endl;
  for (int i = 0; i < n; i++)
  {
    file >> data[i].name;
    //file.getline(data[i].name, 25); не работает даже с заменой типа string на char
    file >> data[i].donation;
  }
  file.close();
  cout << "Grand Patrons." << endl;
  int countgp = 0;
  for (int j = 0; j < n; j++)
  {
    if (data[j].donation >= 10000)
    {
      cout << data[j].name << " with " << data[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 (data[k].donation < 10000)
    {
      cout << data[k].name << " with " << data[k].donation << endl;
      countp++;
    }
  }
  if (countp == 0)
    cout << "none" << endl;
  return 0;
}

Вот пример работы с 2-я файлами (tmp2 без пробелов в именах):

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[iceglen@iceglen 9]$ g++ -std=c++11 9.cpp 
[iceglen@iceglen 9]$ ./a.out 
Enter name of the file: tmp2
Reading the information about patrons.
Grand Patrons.
FreidaFlass with 100500
RichRaptor with 55000
 
Patrons.
SamStone with 2000
TammyTubbs with 5000
[iceglen@iceglen 9]$ ./a.out 
Enter name of the file: tmp
Reading the information about patrons.
Grand Patrons.
none
 
Patrons.
Sam with 0
 with 0
 with 0
 with 0
[iceglen@iceglen 9]$
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru