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

из бинарного файла в массив структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Зачем учить С++? http://www.cyberforum.ru/cpp-beginners/thread964331.html
Приветствую всех. Сижу сейчас, читаю книгу по С++ (С++ за 21 день) и тут мне в голову приходит вопрос: "Зачем я учу С++?". Так вот. Должно ли быть так, что когда я только начал учить С++, я не знаю что я на основе этих знаний буду делать потом? У всех ли программистов так было?
C++ Умножение матриц в С++ Помогите, пожалуйста, кто может!!! Нужно рабочее перемножение матриц, а Div выдает уж очень астрономические числа в итоге! Вот код: //A*B #include <iostream> using namespace std; void input(int A,int &m,int &n); http://www.cyberforum.ru/cpp-beginners/thread964327.html
C++ Передача двухмерного массива функции
Подскажите пожалуйста как передать статический массив array в функцию fn(), т.е. #include <iostream> using namespace std; void fn()///???? int main() { int array; fn(array); }
Как задать символ \ , за которым следует трёхразрядное восьмеричное число C++
Задание выглядит следующим образом Построить минимальный детерминиро¬ванный конечный распознаватель заданного языка Строковая константа – последовательность символов, заключённая в кавычки. Последовательности символов \n , \t , \b , \r , \f , \’ , \” , \\ и символ \ , за которым следует трёхразрядное восьмеричное число, считаются одним символом, а одиночный символ \ недопустим. ...
C++ Вывести вектором не нулевые элементы массива http://www.cyberforum.ru/cpp-beginners/thread964265.html
Доброго времяни суток,подскажите как вывести вектором не нулевые элементы массива С?#include <iostream> #include <conio.h> using namespace std; int main() { const int N=4; const int m=10; int i,j,k,z;
C++ Исследование сортировки метода "пузырек" для большого массива Нужно реализовать сортировку большого массива методом "пузырек" (для 100, 1.000 и 10.000 элементов). Должен присутствовать ввод колличества элементов масива, рандомная их генерация (от -100 до 100 типа integer). Также сделать: вывод массива до и после сортировки; подсчет колличества обменов, сравнений и время работы; указать теоретические и эксперементальные оценки колиичеств копирования и... подробнее

Показать сообщение отдельно
Grizzz
4 / 4 / 3
Регистрация: 04.11.2012
Сообщений: 48

из бинарного файла в массив структур - C++

28.09.2013, 17:08. Просмотров 220. Ответов 0
Метки (Все метки)

Вечер добрый. Проблема в процедурке dop(нужно вставить в определенное место структуру).Так вот я решил переписать из бинарного файла информацию в массив структур и уже в массив добавлять структуру,но программа вылетает как только я ввожу фио пациента после которого нужно вставить структуру. В чем проблема???
Кликните здесь для просмотра всего текста
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
using namespace std;
struct lol
{
    char FIO[50];
    char diz[30];
    int  post;
    char pol;
} zp;
 
void input(FILE *);
void show ();
void dop (FILE *, char* n);
void search(char* n);
FILE *f;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    
    char c;
    int n;
    char str[50],ctr[50];
    FILE *f;
    
    f=fopen("base.dat","r");
    c=' ';
    while (c!='0')
    {
        system("cls");
        cout<<"1-create file\n";
        cout<<"2-show file\n";
        cout<<"3-app file \n";
        cout<<"4-search \n";
        cout<<"5-status of patients \n";
        cout<<"0-exit";
        c=getch();
        switch (c)
        { 
            case '1':input(f);break;
            case '2' :show();break;
            case '3':system("cls");cout<<"Введите фамилию больного"<<endl; cin>>ctr; dop(f,ctr);break;
            case '4':system("cls");cout<<"Введите фамилию больного"<<endl; cin>>str;search(str);break;
            case '0' : return 0;
            default : cout<<" error ";return 0;
        }
    }
    system("pause");
}
 
void input (FILE *f)
{
    ifstream F;
    lol zp;
    char filename[30];
    f = fopen("base.dat","wb");
    printf("\nВведите имя файла с данными\n");
    scanf("%s", filename);
    F.open (filename, ios::in);
    if(!F.is_open()){ 
        cout<<"can't open this file\n";}
    while (true)
    {
        F >> zp.FIO;
        if (!F) break;
        F >> zp.diz;
        F >> zp.post;
        F >> zp.pol;
        fwrite(&zp, sizeof(zp), 1, f);
    }
    fclose(f);
    F.close();
}
 
void show ()
{
    int i;
    system("cls");
    f=fopen("base.dat","rb");
    i=1;
    printf("\n   --------------------------------------------------\n");
    printf("   |    ФИО    |   Диагноз    |Пол|  Дата поступления |\n");
    printf("   ------------+--------------+---+-------------------\n");
    
    while (fread(&zp, sizeof(zp), 1, f))
    { 
        printf("%3d   %3s        %4s         %c          %3d", i, zp.FIO, zp.diz, zp.pol, zp.post);
        printf("\n   --------------------------------------------------\n");
        i++;
    }
    i=0;
    getch();
}
void dop (FILE *f,char* n)
{   int p,m;
    lol sp[10000];
    lol dp;
    system("cls");
    setlocale(LC_ALL,"Rus");
    p=0;
    m=0;
    f=fopen("base.dat","rb");
    while (fread(&zp,sizeof(lol),1,f)) 
    {char* r =zp.FIO;
     if (strcmp(n,r)==0){m=p;}
     sp[p]=zp;
     p++;
    }
    printf("\n Введите информацию о пациенте \n");
    printf("\n ФИО: ");
    scanf("%s",dp.FIO);
    printf("Диагноз: ");
    scanf("%s",&dp.diz);
    printf("Пол: ");
    scanf("%s",&dp.pol);
    printf ("Дата поступления: ");
    scanf("%d",&dp.post);
    for(int i=p;i>=m+1;i--)
    {sp[i+1]=sp[i];}
     sp[m+1]=dp;
     p++;
    getch();
    }
void search (char* n)
    {f=fopen("base.dat","rb");
    while (fread(&zp, sizeof(zp),1,f))
    {char* r =zp.FIO;
    if (strcmp(n,r)==0)
    { printf(" %s    %s   %s    %3d",zp.FIO,zp.diz,zp.pol,zp.post);
    printf("      \n--------------------------------------------------\n");
    }
    }
    fclose(f);
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru