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

Задачка по структурам - C++

Восстановить пароль Регистрация
 
slavik
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 15
17.09.2011, 20:40     Задачка по структурам #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
include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
struct human{
    char first_name[20];
    char last_name[25];
    int age;
};
void Fill(human *,int);
void Show(human *,int);
int main()
{
    cout<<"Enter N: ";
    int N;
    cin>>N;
    human*h=new human[N];
    Fill(h,N);
    cout<<"\n\n";
    Show(h,N);
    system("pause");
    return 0;
}
void Fill(human*h,int N)
{
    for(int i=0; i<N; i++)
    {
        cout<<"Enter First Name: ";
        cin>>h[i].first_name;
        cout<<"Enter Last Name: ";
        cin>>h[i].last_name;
        cout<<"Enter age: ";
        cin>> h[i].age;
    }
}
void Show(human*h,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<"-----------------------------\n";
        cout<<"First Name: "<<h[i].first_name<<endl;
        cout<<" Last Name: "<<h[i].last_name<<endl;
        cout<<"       Age: "<<h[i].age<<endl;
        cout<<"-----------------------------\n";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2011, 20:40     Задачка по структурам
Посмотрите здесь:

задания по структурам C++
задача по структурам C++
C++ Вопрос по структурам
C++ вопрос по структурам
C++ проги по структурам на С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.09.2011, 20:43     Задачка по структурам #2
Цитата Сообщение от slavik Посмотреть сообщение
А вот как добавить возможность добавления новых записей ( по желанию пользователя ) не могу понять.
создаете новый массив, большей размерности, копируете в него старый массив, удаляете старый массив, добавляете запись в новый массив
slavik
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 15
17.09.2011, 21:03  [ТС]     Задачка по структурам #3
Цитата Сообщение от Jupiter Посмотреть сообщение
создаете новый массив, большей размерности, копируете в него старый массив, удаляете старый массив, добавляете запись в новый массив
Я это понимаю... Как реализовать практически - не доходит...
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
17.09.2011, 21:14     Задачка по структурам #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int *mass, *tmp;
 
std::cin >> chislo;
mass = new int[chislo];
 
std::cout << "дабвить элемент? " << std::endl;
.....
 
++chislo;
tmp = new int[chislo];
 
for (int i = 0; i < chislo - 1; ++i)
      tmp[i] = mass[i];
 
delete []mass;
tmp[shislo - 1] = /*что-то*/;
slavik
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 15
17.09.2011, 22:59  [ТС]     Задачка по структурам #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
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
struct human{
    char first_name[20];
    char last_name[25];
    int age;
};
void Fill(human *,int);
void Show(human *,int);
void Zam(human *,int);
int main()
{
    cout<<"Enter N: ";
    int N;
    cin>>N;
    human*h=new human[N];
    Fill(h,N);
    cout<<"\n\n";
    Show(h,N);
    
    int x;
    cout<<"Dlya dobavleniya novoy zapisi enter '0', dlya vuhoda druguyu zifru: ";
    cin>>x;
    if(x==0)
    {
    
        N++;
        human*f=new human[N];
        for(int i=0;i<N-1;i++)
        {
            f[i]=h[i];
        }
        cout<<"Enter First Name: ";
        cin>>f[N-1].first_name;
        cout<<"Enter Last Name: ";
        cin>>f[N-1].last_name;
        cout<<"Enter age: ";
        cin>> f[N-1].age;
        delete[]h;
        Show(f,N);
    }
    system("pause");
    return 0;
}
void Fill(human*h,int N)
{
    for(int i=0; i<N; i++)
    {
        cout<<"Enter First Name: ";
        cin>>h[i].first_name;
        cout<<"Enter Last Name: ";
        cin>>h[i].last_name;
        cout<<"Enter age: ";
        cin>> h[i].age;
    }
}
void Show(human*h,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<"-----------------------------\n";
        cout<<"First Name: "<<h[i].first_name<<endl;
        cout<<" Last Name: "<<h[i].last_name<<endl;
        cout<<"       Age: "<<h[i].age<<endl;
        cout<<"-----------------------------\n";
    }
}
Но до этого я давно додумался. А вот как если несколько раз добавлять запись?
Вот тут не получается. Пробовал с помощью while или do сделать - не получается.
После добавления второй записи начинаются проблемы. Я не могу понять, как с помощью циклов каждый раз создавать новый массив не раздувая код программы до бесконечности.
Или может надо как-то по-другому...?!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
17.09.2011, 23:51     Задачка по структурам #6
Цитата Сообщение от slavik Посмотреть сообщение
Я не могу понять, как с помощью циклов каждый раз создавать новый массив не раздувая код программы до бесконечности.
в этом вся изюминка динамических структур данных (это не дин массив, но ...). попробуй так
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
do{
        
                N++;
                human*f=new human[N];
                for(int i=0;i<N-1;i++)
                {
                        f[i]=h[i];
                }
                cout<<"Enter First Name: ";
                cin>>f[N-1].first_name;
                cout<<"Enter Last Name: ";
                cin>>f[N-1].last_name;
                cout<<"Enter age: ";
                cin>> f[N-1].age;
                delete[]h;
                h = new int[N];
                for(int i=0;i<N;i++) h[i]=f[i];
                delete []f;
                Show(h,N);
        }while(/*что-то*/);
        system("pause");
    delete []f;
    delete []h;
    return 0;
slavik
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 15
18.09.2011, 00:59  [ТС]     Задачка по структурам #7
Все равно те же проблемы
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
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
struct human{
    char first_name[20];
    char last_name[25];
    int age;
};
void Fill(human *,int);
void Show(human *,int);
int main()
{
    cout<<"Enter N: ";
    int N;
    cin>>N;
    human*h=new human[N];
    Fill(h,N);
    cout<<"\n\n";
    Show(h,N);
    int x;
    cout<<"Dlya dobavleniya novoy zapisi enter '0', dlya vuhoda druguyu zifru: ";
    cin>>x;
    if(x!=0)
    {
        system("pause");
        return 0;
    }
    do
    {
        N++;
        human*f=new human[N];
        for(int i=0;i<N-1;i++)
        {
            f[i]=h[i];
        }
        cout<<"Enter First Name: ";
        cin>>f[N-1].first_name;
        cout<<"Enter Last Name: ";
        cin>>f[N-1].last_name;
        cout<<"Enter age: ";
        cin>> f[N-1].age;
        delete[]h;
        human*h = new human[N];
        for(int i=0;i<N;i++)
        {
            h[i]=f[i];
        }
        delete[]f;
        Show(h,N);
        cout<<"Dlya dobavleniya novoy zapisi enter '0', dlya vuhoda druguyu zifru: ";
        cin>>x;
    }while(x==0);
    system("pause");
    delete[]h;
    return 0;
}
void Fill(human*h,int N)
{
    for(int i=0; i<N; i++)
    {
        cout<<"Enter First Name: ";
        cin>>h[i].first_name;
        cout<<"Enter Last Name: ";
        cin>>h[i].last_name;
        cout<<"Enter age: ";
        cin>> h[i].age;
    }
}
void Show(human*h,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<"-----------------------------\n";
        cout<<"First Name: "<<h[i].first_name<<endl;
        cout<<" Last Name: "<<h[i].last_name<<endl;
        cout<<"       Age: "<<h[i].age<<endl;
        cout<<"-----------------------------\n";
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 01:45     Задачка по структурам
Еще ссылки по теме:

C++ Программа по структурам!
C++ Задание по структурам
C++ Курсовая по структурам

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

Или воспользуйтесь поиском по форуму:
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 01:45     Задачка по структурам #8
Цитата Сообщение от slavik Посмотреть сообщение
Все равно те же проблемы
так показал бы что за проблемы, а то что добавлять элементы надо с помощью массивов сам решил или в условии прямо сказано?
смотри строку 44
Yandex
Объявления
18.09.2011, 01:45     Задачка по структурам
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru