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

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

Войти
Регистрация
Восстановить пароль
 
Razlom
Сообщений: n/a
#1

Методы гаусса, крамера, база данных - C++

19.04.2012, 16:15. Просмотров 455. Ответов 0
Метки нет (Все метки)

Добрый день. Столкнулся с некоторым числом проблем, которые в силу недостатка опыта, а возможно и ума, не могу решить. Просьба помочь советом, если вас это не затруднит. Сразу скажу, код кривоват, мягко говоря.

1. Создание базы данных.
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <iostream.h>
struct base
{
    char fam[15];
    char name[10];
    char fath[20];
    char number[7];
    char adres[40];
    long balans;
      };
void vvod(int nom, struct base *db)
{
    printf("vvedite svedenia %d:\n",(nom+1));
    cout<<"vvedite familiu: \n";
     gets(db->fam);
    cout<<"vvedite imya:\n";
     gets(db->name);
    cout<<"vvedite otchestvo:\n";
         gets(db->fath);
    cout<<"vvedite adres:\n";
     gets(db->adres);
    cout<<"vvedite nomer telefona:\n";
    gets(db->number);
    db->balans=((rand()%30)*(-1)*1000);
    return;
}
void main(void)
{
    struct base bd[50];
    int i,N,tday,opl;
    char c,fam_p[20],num_p[7],tmp[80];
    cout<<"Vvedite razmer basi dannih<50:\n";
    cin>>N;
    cout<<"vvedite dannie:\n";
    for (i=0;  i<N; i++)
    vvod(i,&bd[i]);
    cout<<"vvedite chislo:\n";
    cin>>tday;
    if (tday==1)
        for (i=0; i<N; i++)
        {
            opl=rand()%30*1000;
           bd[i].balans=bd[i].balans+opl;
        }
        goto menu;
menu:
    cout<<"MENU:\n";
    cout<<"1. rabota s basoi dannih\n";
    cout<<"2. poisk po familii\n";
    cout<<"3. poisk po nomeru\n";
    cout<<"4. formirovanie spiska dolzhnikov\n";
    cout<<"5. vihod\n";
    goto nav;
nav:
    cout<<"viberite punkt\n";
    cin>>c;
    switch(c)
    {
    case('1'):
    goto rabota;
    case('2'):
    goto poiskf;
    case('3'):
        goto poiskn;
    case('4'):
    goto spis;
    case('5'):
        goto exit;
    default:
        puts("proverte pravilnost vvoda\n");
        goto nav;
    }
rabota:
    for(i=0; i<N; i++)
    cout<<(i+1)<<' '<<bd[i].fam<<' '<<bd[i].name<<' '
    <<bd[i].fath<<' '<<bd[i].adres<<
    ' '<<bd[i].number<<"\n";
cout<<"redactirovat? y/n\n";
cin>>c;
switch(c)
{case('y'):
goto redact;
case('n'):
goto menu;
default:
{cout<<"nevernyy vvod\n";
goto menu;}}
redact:
    puts("menu redactirovania\n");
    puts("1. izmenenie nomera\n");
    puts("2. izmenenie imeni\n");
    puts("3. izmenenie familii\n");
    puts("4. izmenenie otchestva\n");
    puts("5. izmenenie adresa\n");
    puts("6. dobavlenie\n");
    puts("7. udalenie\n");
    puts("8. v menu\n");
red:
    cout<<"viberite punkt:\n";
    cin>>c;
    switch(c)
    {
    case('1'):
        goto red_n;
    case('2'):
        goto red_i;
    case('3'):
        goto red_f;
    case('4'):
        goto red_ot;
    case('5'):
        goto red_ad;
    case('6'):
        goto add;
    
    case('8'):
        goto menu;
    default:
        puts("nevernyy vvod\n");
        goto red;
    }
red_n: //изменение номера
    puts("viberite nomer zapisi:\n");
    cin>>i;
    if(i>N)
    {
    cout<<"neverny vvod!\n";
        goto red_n;
    }
    cout<<"vvedite novy nomer:\n";
    gets(bd[i-1].number);
    goto povt;
red_i: //изменение имени
    puts("viberite nomer zapisi:\n");
    cin>>i;
    if(i>N)
    {
        puts("neverny vvod!\n");
        goto red_i;
    }
    puts("vvedite novoe imya:\n");
    gets(bd[i-1].name);
    goto povt;
red_f: //изменение фамилии
    puts("viberite nomer zapisi:\n");
    cin>>i;
    if(i>N)
    {
        puts("neverny vvod!\n");
        goto red_f;
    }
    puts("vvedite novuyu familiyu:\n");
    gets(bd[i-1].fam);
 
    goto povt;
red_ot: //изменение отчества
    puts("viberite nomer zapisi:\n");
    cin>>i;
    if(i>N)
    {
        puts("neverny vvod!\n");
        goto red_ot;
    }
    puts("vvedite novoe otchestvo:\n");
    gets(bd[i-1].fath);
    goto povt;
red_ad: //изменение адреса
    puts("viberite nomer zapisi:\n");
    cin>>i;
    if(i>N)
    {
        puts("neverny vvod!\n");
        goto red_ad;
    }
    puts("vvedite novy adres:\n");
    gets(bd[i-1].adres);
    goto povt;
add: //добавление записи
    puts("vvedite dannie:\n");
    vvod(N, &bd[N]);
    N=N+1;
    goto povt;
poiskf: //поиск по фамилии
    puts("vvedite familyu:\n");
    
    gets(fam_p);
    c=0;
    for(i=0; i<N; i++){
    if (bd[i].fam==fam_p)
    {cout<<bd[i].number<<' '<<bd[i].fam<<' '<<bd[i].name<<
    ' '<<bd[i].fath<<' '<<bd[i].adres<<"\n";
    c++;} }
    if (c==0)
        cout<<"net sovpadeniy!\n";
    puts("nazmite r dlya povtora\n");
    scanf("%c",&c);
    switch(c)
    {
    case('r'):
        goto poiskf;
    default:
        goto menu;
    }
poiskn: //поиск по номеру
    puts("vvedite nomer:\n");
    gets(num_p);
    for(i=0; i<N; i++)
        if (bd[i].number==num_p)
                            printf("%7s %20s %15s %20s %80s\n",bd[i].number,bd[i].fam,bd[i].name,bd[i].fath,bd[i].adres);
    puts("nazmite r dlya povtora\n");
    scanf("%c",&c);
    switch(c)
    {
    case('r'):
    goto poiskf;
    default:
        goto menu;
    }
 
povt:
    puts("neobhodima eshe operaciya? y/n\n");
    scanf("%c",&c);
    switch(c)
    {
    case('y'):
        goto red;
    case('n'):
        goto menu;
    default:
        puts("neverny vvod!\n");
        goto povt;
    }
spis: 
    c=0;
    for (i=0; i<N; i++)
        if (bd[i].balans<0)
            {
                printf("%7s %20s %15s %20s %80s %d\n",bd[i].number,bd[i].fam,bd[i].name,bd[i].fath,bd[i].adres,bd[i].balans);
                c++;}
        if (c==0)
            puts("zadolzhennostey net!\n");
        goto menu;
exit:
    puts("nazhmite knopku dlya zakritiya programmi\n");
}
В данном случае возникают ошибки:
а) При попытке изменить фамилию/имя/отччество/адрес, все либо не работает корректно, либо после первого изменения при попытке изменить следующее значение оно просто стирается.
б) не работают поиски. Вообще.
в) необходимо сделать удаление записей. Первоначально я планировал использовать код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
del:
    cout<<"vvedite nomer udalyaemoy zapisi:\n";
    cin>>c;
    if(c>(N+1))
    {
        puts("neverny vvod!\n");
        goto del;
    }
    for(i=(c-1); i<N; i++)
    {
        bd[i].number=bd[i+1].number;
        bd[i].fam=bd[i+1].fam;
        bd[i].name=bd[i+1].name;
        bd[i].fath=bd[i+1].fath;
        bd[i].adres=bd[i+1].adres;
        bd[i].balans=bd[i+1].balans;              
    }
    N=N-1;
Однако в процессе столкнулся с тем, что даже при расстановке указателей компилятор ругается.
Не обращайте внимания на printf, puts и scanf, я их понемного заменяю.

2. Метод Гаусса.
Описанный в данной теме алгоритм вызвал несколько вопросов, а именно:
а) все условия типа
for (j=i-1; j>=0; --j)
расцениваются как always true, помогает убрать =, однако, боюсь, после этого они работать перестанут. Как поступить?
б)
a[k+t*n]&=a[k+i*n];
a[k+i*n]&=a[k+t*n];
a[k+t*n]&=a[k+i*n];
выдают "Illegal use of floating point". Решения я не нашел.

3. Метод Крамера.
Подойдет ли описанный здесь алгоритм для расчета СЛАУ 10го порядка?

Заранее благодарен. К сожалению, я очень ограничен во времени, что и послужило причиной обращения.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 16:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Методы гаусса, крамера, база данных (C++):

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

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

Удалённая база данных - запрос и вывод данных - C++
допустим у меня есть удалённая база данных в которой хранятся данные. можно ли через программу запросить эти данные и вывести в программе в...

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. - C++
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам метод: int copyTable(int a, int b) {...

Методы анализа данных - C++
Исследование алгоритмов проверки гипотезы о равенстве математических ожиданий и гипотезы о выявлении аномальных измерений.

База данных "Телеателье": создать систему управления базой данных (СУБД) - C++
Задача: Создать систему управления базой данных (СУБД) в которой предусмотреть следующие режимы: создание БД, вывод БД, добавление...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 16:15
Привет! Вот еще темы с ответами:

Методы поиска в различных структурах данных - C++
у мя просьба,есть ли методы поиска???(с++/алгоритмы):read: 1)Таблица символов, 2)Деревья бинарного поиска, 3)Хеширование. заранее...

База данных - C++
Народ, помогите найти ошибку, плиз. База данных компьютерных игр (пример – www.ag.ru), в которой каждая игра характеризуется...

База данных в С++. - C++
Дело такое: пишется проект, который будет регулярно читать и записывать информацию с файлов. Самое банальное - сделать всё через обычные...

база данных - C++
Разработать программу для управления базой данных «Абоненты ГТС». Запись в базе данных содержит следующие поля: Ф.И.О. абонента, адрес,...


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

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

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