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

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

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

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

04.07.2013, 09:24. Просмотров 381. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 09:24     «Массив структур»
Посмотрите здесь:

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

Массив структур - C++
https://drive.google.com/file/d/0B2YGdPmpJULzYVJJUTl5bmk5VEE/view?usp=sharing

Массив структур в с++ - C++
Условие: Создать массив структур, используя данные из задания. Создать программное приложение, которое включает его обработку с...

Массив структур - C++
Задание само вот такое 1. Сформировать динамический массив из элементов структурного типа. Структурный тип определен в варианте. ...

Массив структур - C++
Нужно создать массив структур и разработать программное приложение, которое включает его обработку с выводом результата на экран...

Массив структур - C++
С помощью массива структур описать каталог компьютерных игр, предусмотрев следующие характеристики: название, производитель, год издания,...

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

Массив структур - C++
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; дата рождения(массив из трех чисел). Написать...

Массив структур - C++
Доброй ночи! Есть задание c массивом структур. Надо было нaпиcaть пpoграммy ввода и удаления инфopмации o coтрyдникe c указанным вoзpастoм....

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

Массив структур - C++
Эксперементирую тут с файлами. Что-то полная ерунда получается. ВОт я объявил массив структур, а при заполнении ерунда какая-то...

массив структур - C++
Написать функцию для создания массива записей со сведениями о студентах (ФИО, возраст, курс, успеваемость). По заданному массиву...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
04.07.2013, 09:33     «Массив структур» #2
копию файла прикрепите
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 используется как кол-во записей
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 3
04.07.2013, 09:46  [ТС]     «Массив структур» #4
Прикрепил.
Вложения
Тип файла: txt patients.txt.txt (206 байт, 7 просмотров)
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
04.07.2013, 09:55     «Массив структур» #5
Dark Jorgen, мой совет не помог?
Dark Jorgen
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 3
04.07.2013, 11:32  [ТС]     «Массив структур» #6
nexen, ещё не компилировал. Отпишу чуть позже, где-н. через час. Тем не менее большое спасибо. Что получится сразу отпишу.

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

Добавлено через 6 минут
nexen, прошу прощения, всё работает. Мой косяк. Там просто очепятка не files, а file. Большое спасибо.
Yandex
Объявления
04.07.2013, 11:32     «Массив структур»
Ответ Создать тему
Опции темы

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