Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 4
1

«Массив структур»

04.07.2013, 09:24. Просмотров 430. Ответов 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
Ответы с готовыми решениями:

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

Массив структур, сохранение начала каждой из структур
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch...

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

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

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

5
Kukurudza
105 / 86 / 13
Регистрация: 29.08.2012
Сообщений: 539
04.07.2013, 09:33 2
копию файла прикрепите
0
nexen
187 / 180 / 25
Регистрация: 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 / 25
Регистрация: 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

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

Создать массив структур, заполнив его информацией из файла “input.txt”. Упорядочить этот массив по убыванию суммы баллов
В файле “input.txt” задано количество студентов механикоматематического факультета ННГУ и их...

Массив структур
Как сделать массив структур на C++ помогите очень нужно :cry: покажите пример


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

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

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