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

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

Войти
Регистрация
Восстановить пароль
 
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 4
#1

«Массив структур» - C++

04.07.2013, 09:24. Просмотров 400. Ответов 5
Метки нет (Все метки)

Написал программу на написание функции чтения в массив структур из файла. Данные «Пациент».
Программа не работает, а именно при компиляции выбрасывает из программы, либо идёт её завершение. Не могу понять в чём дело. Помогите разобраться, пожалуйста.

Код программы:
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
#include<iostream>
#include<fstream>
 
using namespace std;
 
int n=0; // счётчик для количества пациентов
 
struct medicine // вводим структуру и обзываем её медицина
{
    char surname[30]; // указатель на фамилию
    char name[30];
    char date[30];
    char nomer[30];
    char address[30];
    char medical_card[30];
    char blood[30];
};
medicine * Create ()// эта функция считывает из текстового файла всех пациентов таким образом, чтобы каждый параметр в файле был на своей строке, без пробелов
{
    fstream file ("patients.txt"); // открытие файла
    medicine *A = new struct medicine [100]; // введение имени и размера одномерного массива, 1 пациент вводится как 1 элемент массива
    const int len=30; //постоянное значение длины строки файла, который затем будет считывать программа и забивать под элементы массива
    bool r=true; // логический тип переменной r, которая указывает на истинное значение
    char m=0; // вводим переменную 0 символьного типа
    while (!file.eof())// выдаёт истинное значение, пока не закончится файл
    {
        file.getline(A[n].surname,len);//чтение и запись этих строк из файла в массив
        file.getline(A[n].name,len);
        file.getline(A[n].date,len);
        file.getline(A[n].nomer,len);
        file.getline(A[n].address,len);
        file.getline(A[n].medical_card,len);
        file.getline(A[n].blood,len);
        n++;
    }
    file.close(); // закрытие файла
    return A; // возвращение значения нашего одномерного массива
}
    int main ()
{
medicine *A=Create();//вызываем функцию чтения из файла
    int i;
    for(i=0;i<n;i++)//задаём цикл for, который в нашем случае позволяет последовательно выводить на экран пациентов
    {
    cout<<"Patient №"<<i+1<<endl;
    cout<<"Surname "<<A[i].surname<<endl;
    cout<<"Name "<<A[i].name<<endl;
    cout<<"Date "<<A[i].date<<endl;
    cout<<"Nomer "<<A[i].nomer<<endl;
    cout<<"Address "<<A[i].address<<endl;
    cout<<"Medical_Card "<<A[i].medical_card<<endl;
    cout<<"Blood "<<A[i].blood<<endl;
    cout<<""<<endl;
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 09:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос «Массив структур» (C++):

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin &gt;&gt;...

Как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю? - C++
Ребята подскажите как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю.

Массив структур в массиве структур - C++
Всем добрый день. Делаю менюшку для управления и терзаю Arduino IDE слегка подвис со следующей задачей. Я хочу определить две...

Ввести массив структур; рассортировать массив в алфавитном порядке - C++
Пришел из армии восстановился в универе и тут сразу курсавай. Помогите Исходные данные(описание структуры): Информация об...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

5
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
04.07.2013, 09:33 #2
копию файла прикрепите
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
04.07.2013, 09:43 #3
Dark Jorgen,
C++
1
2
3
4
5
6
7
8
9
10
11
 while (!file.eof())// выдаёт истинное значение, пока не закончится файл
    {
        file.getline(A[n].surname,len);//чтение и запись этих строк из файла в массив
        file.getline(A[n].name,len);
        file.getline(A[n].date,len);
        file.getline(A[n].nomer,len);
        file.getline(A[n].address,len);
        file.getline(A[n].medical_card,len);
        file.getline(A[n].blood,len);
        n++;
    }
замените на:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 while (true)// выдаёт истинное значение, пока не закончится файл
    {
        file.getline(A[n].surname,len);//чтение и запись этих строк из файла в массив
if (files.eof()) break; 
        file.getline(A[n].name,len);
        file.getline(A[n].date,len);
        file.getline(A[n].nomer,len);
        file.getline(A[n].address,len);
        file.getline(A[n].medical_card,len);
        file.getline(A[n].blood,len);
        n++;
    }
Программе не известно, достигнут ли конец файла до тех пор, пока этот конец файла не был прочитан.
Из n вычитать 1 не надо, если после выхода из Create n используется как кол-во записей
1
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 4
04.07.2013, 09:46  [ТС] #4
Прикрепил.
0
Вложения
Тип файла: txt patients.txt.txt (206 байт, 7 просмотров)
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
04.07.2013, 09:55 #5
Dark Jorgen, мой совет не помог?
0
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 4
04.07.2013, 11:32  [ТС] #6
nexen, ещё не компилировал. Отпишу чуть позже, где-н. через час. Тем не менее большое спасибо. Что получится сразу отпишу.

Добавлено через 1 час 25 минут
nexen, нет. Не помог. Компилятор ругается на строчку, где идёт обрыв цикла, т.е. с оператором if.

Добавлено через 6 минут
nexen, прошу прощения, всё работает. Мой косяк. Там просто очепятка не files, а file. Большое спасибо.
0
04.07.2013, 11:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 11:32
Привет! Вот еще темы с ответами:

Массив структур - C++
Как отсортировать массив структур или вектор (значения не имеет) по полю типа float? Спасибо Вот нашёл пример на форуме, но не могу...

Массив структур - C++
Задача:создать массив структур а,содержащий фамилию и 3 оценки.Найти студентов,чей средний балл выше среднего группы и упорядочить по...

Массив структур - C++
Помогите, буду очень признателен(программа на допуск к екзамену) Создать массив структур. Каждая структура состоит из следующих...

Массив структур - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class TestContetnt { public: struct Task {


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

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

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