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

Заполнение массива структур с консоли - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
24.05.2012, 20:52     Заполнение массива структур с консоли #1
Доброго времени суток)
Помогите пожалуйста разобраться в следующем вопросе... 3 часа уже не могу доехать что и как( примеры не помогают... без коментариев не могу понять.
есть структура
C++
1
2
3
4
5
6
7
8
struct tovar
{
 int nomer[5];
 char naim[20];
 char edizm[15];
 int kolvo[10];
 int cena[10];
};
данные заполняюстся примерно следующие:
3
Grushi
kg
25
23000

необходимо создать массив структур, заполняя его с консоли.

пожалуйста не надо отправлять на хз какие сайты и ещё куда-нибудь, просто пример заполнения массива структурами обьяснить) буду очень благодарен)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
24.05.2012, 20:58     Заполнение массива структур с консоли #2
C++
1
2
3
4
5
6
tovar* tov=new tovar[5];
cin>>tovar[0].nomer;
cin>>tovar[0].naim;
cin>.tovar[0].edizm;
cin>>tovar[0].kolvo;
cin>>tovar[0].cena;
Если будешь заполнять всю структуру или несколько объектов, то можешь воспользоваться циклом:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<5;i++)
{
cin>>tovar[i].nomer;
cin>>tovar[i].naim;
cin>.tovar[i].edizm;
cin>>tovar[i].kolvo;
cin>>tovar[i].cena;
}
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
24.05.2012, 21:43  [ТС]     Заполнение массива структур с консоли #3
Цитата Сообщение от Andrey.K Посмотреть сообщение
C++
1
2
3
4
5
6
tovar* tov=new tovar[5];
cin>>tovar[0].nomer;
cin>>tovar[0].naim;
cin>.tovar[0].edizm;
cin>>tovar[0].kolvo;
cin>>tovar[0].cena;
Если будешь заполнять всю структуру или несколько объектов, то можешь воспользоваться циклом:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<5;i++)
{
cin>>tovar[i].nomer;
cin>>tovar[i].naim;
cin>.tovar[i].edizm;
cin>>tovar[i].kolvo;
cin>>tovar[i].cena;
}
а можно пожалуйста с обьяснениями... я что-то не понимаю... в с++ очень плохо разбираюсь(
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
24.05.2012, 21:46     Заполнение массива структур с консоли #4
Создаем массив объектов структуры tovar(динамический). Размерность равна 5;
Так как по умолчанию поля структуры с модификатором public, то мы имеем к ним доступ. Далее мы просто вводим с клавиатуры значения и присваиваем каждому полю. Чтобы правильно заполнить поля можно пользователю указать что ввести , например, cout<<"Введите наименование: ";cin>>tovar[0].naim;
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
24.05.2012, 21:57  [ТС]     Заполнение массива структур с консоли #5
"error C2228: left of '.cena' must have class/struct/union"
а вот это что за ошибку выдает? на каждую позицию.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
24.05.2012, 22:04     Заполнение массива структур с консоли #6
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 <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
struct tovar
{
    int nomer;
    char naim[20];
    char edizm[15];
    int kolvo;
    int cena;
};
void Vvod(int n,tovar* tov)
{
    for(int i=0;i<n;i++)
    {
        cout<<"Vvedite nomer: ";cin>>tov[i].nomer;
        cout<<"VVedite naimenovanie: ";cin>>tov[i].naim;
        cout<<"Vvedite ed. izmereniya: ";cin>>tov[i].edizm;
        cout<<"VVedite kol-vo: ";cin>>tov[i].kolvo;
        cout<<"VVedite cenu: ";cin>>tov[i].cena;
        cout<<endl;
    }
}
void Vivod(int n,tovar* tov)
{
    for(int i=0;i<n;i++)
    {
        cout<<"nomer: "<<tov[i].nomer<<" ;";
        cout<<"naimenovanie: "<<tov[i].naim<<" ;";
        cout<<"ed. izmereniya: "<<tov[i].edizm<<" ;";
        cout<<"kol-vo: "<<tov[i].kolvo<<" ;";
        cout<<"cenu: "<<tov[i].cena<<" ;";
        cout<<endl;
    }
}
int main()
{
    int n;
    cout<<"VVedite razmer bazi:" ;cin>>n;
    tovar* tov=new tovar[n];
    Vvod(n,tov);
    Vivod(n,tov);
    getch();
    return 0;
}
Полный код программы.
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
24.05.2012, 23:11  [ТС]     Заполнение массива структур с консоли #7
спасибо большое)

Добавлено через 1 час 5 минут
получилось вот такое)
но не хочет выводить массив который создал. пункт 4. потом 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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
struct tovar
{
    int nomer;
    char naim[20];
    char edizm[15];
    int kolvo;
    int cena;
};
 
void vvod();
void consol();
void consolVvod(int n,tovar* tov);
void vEkran();
void vFile();
void vivodEkran();
//void delElem();
//void clean();
void vyvodElem();
//void vyvodColich();
//void sdvig();
void FromFile();
void main()
 
{
    
    char deistv;
setlocale(LC_ALL,"Russian");
 
 
    while (true)
{
    system("cls");      
    cout<<"\n"; 
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  1  |Заполнение очереди:                    |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  2  |Удаление элемента из очереди;          |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  3  |Очистка очереди;                       |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  4  |Вывод элементов содержащихся в очереди;|\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  5  |Вывод количества элементов в очереди;  |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  6  |Сдвиг элементов очереди к началу;      |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  7  |Выход;                                 |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"\n";
cin>>deistv;
switch(deistv)
    {
    case '1': vvod();break;
//  case '2': delElem();break;
//  case '3': clean(); break;
    case '4': vyvodElem();break;
//  case '5': vyvodColich();break;
//  case '6': sdvig();break;
    case '7': exit(0);
    }
}
    
}
 
 
void vvod()
{
    
    char vibor;
    cout<< " 1 - с консоли \n";
    cout<< " 2 - из файла \n" ;
    cin>>vibor;
    switch(vibor)
    {
    case '1': consol();break;
    case '2': FromFile();break;
    }
}
void consol()
{
    int n;
    cout<<"Введите размер массива:" ;cin>>n;
    tovar* tov=new tovar[n];
    consolVvod(n,tov);  
}
void consolVvod(int n,tovar* tov)
{
    for(int i=0;i<n;i++)
    {
        cout<<"Введите номер: ";cin>>tov[i].nomer;
        cout<<"Введите найменование: ";cin>>tov[i].naim;
        cout<<"Введите единици измерения: ";cin>>tov[i].edizm;
        cout<<"Введите количество: ";cin>>tov[i].kolvo;
        cout<<"Введите цену: ";cin>>tov[i].cena;
        cout<<endl;
    }
}
 
void FromFile()
{   
    
   }
 
    
 
 
 
void vyvodElem()
{
    char VibViv;
    cout<< "Выберите куда выводить элементы \n";
    cout<< "1 - на экран \n";
    cout<< "2 - в файл \n";
    cin>>VibViv;
    switch(VibViv)
    {
    case '1': vEkran();break;
    case '2': vFile();break;
    }
}
 
void vEkran()
{
    cout<<"Список товара:\n";
    vivodEkran();   
}
void vivodEkran()
{
    int n;
    tovar* tov=new tovar[n];
    for(int i=0;i<n;i++)
    {
      cout<<"nomer: "<<tov[i].nomer<<" ;";
      cout<<"naimenovanie: "<<tov[i].naim<<" ;";
      cout<<"ed. izmereniya: "<<tov[i].edizm<<" ;";
      cout<<"kol-vo: "<<tov[i].kolvo<<" ;";
      cout<<"cenu: "<<tov[i].cena<<" ;";
      cout<<endl;
    }
}
void vFile()
{
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
24.05.2012, 23:13     Заполнение массива структур с консоли #8
А зачем столько много массивов объектов, причем каждый раз новывй создавать. надо работать с одним массивом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2012, 03:07     Заполнение массива структур с консоли
Еще ссылки по теме:

Заполнение массива структур оператором for C++
Заполнение массива структур из файла C++
C++ Массивы структур - зависает окно консоли

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

Или воспользуйтесь поиском по форуму:
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
25.05.2012, 03:07  [ТС]     Заполнение массива структур с консоли #9
Цитата Сообщение от Andrey.K Посмотреть сообщение
А зачем столько много массивов объектов, причем каждый раз новывй создавать. надо работать с одним массивом.
ну у меня вот такое задание

Разработать программу, реализующую алгоритм очереди (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом. Реализовать алгоритм кольцевой очереди на основе динамического списка. В качестве элемента очереди выбрать структуру, соответствующую индивидуальному варианту.
Предусмотреть заполнение очереди из файла (подготовить файл на 20 элементов).
Предусмотреть многоуровневое меню:
1) Заполнение очереди
a) с консоли (циклически)
b) из файла (выбор файла, тек. папка, любая папка)
2) Удаление элемента из очереди (циклически)
a) безвозвратно
b) с сохранением в файл
3) Очистка очереди (с выводом удаляемых элементов)
a) безвозвратно
b) с сохранением в файл
4) Вывод элементов, содержащихся в очереди
a) на экран
b) в файл
5) Вывод количества элементов в очереди
6) Сдвиг всех элементов очереди к началу при наличии пустых мест в начале очереди (для статического варианта)
7) Выход

подскажите что не так и что лучше было бы исправить

Добавлено через 3 часа 47 минут
код исправил, всё что там было работает.
только возникла новая проблема...
Разработать программу, реализующую алгоритм очереди (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом.
что-то мне кажется не правильно сделал...
обьясните пожалуйста что такое статический и динамический вариант очереди... боюсь что я не так понял и придется переделывать...

на всякий случай код того что у меня получилось, как я понял задание.
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
const int n=1;
 
struct tovar
{
    int nomer;
    char naim[10];
    char edizm[10];
    int kolvo;
    int cena;
};
 
 
void vvod(int n,tovar* tov);
//void consol();
void consolVvod(int n,tovar* tov);
void vFile();
void vivodEkran(int n,tovar* tov);
//void delElem();
//void clean();
void vyvodElem(int n,tovar* tov);
//void vyvodColich();
//void sdvig();
void FromFile();
void main()
 
{
    setlocale(LC_ALL,"Russian");
 
    tovar* tov=new tovar[n];
    char deistv;
 
 
 
    while (true)
{
    system("cls");      
    cout<<"\n"; 
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  1  |Заполнение очереди:                    |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  2  |Удаление элемента из очереди;          |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  3  |Очистка очереди;                       |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  4  |Вывод элементов содержащихся в очереди;|\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  5  |Вывод количества элементов в очереди;  |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  6  |Сдвиг элементов очереди к началу;      |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"                 |  7  |Выход;                                 |\n";
cout<<"                 |-----|---------------------------------------|\n";
cout<<"\n";
cin>>deistv;
switch(deistv)
    {
    case '1': vvod(n,tov);break;
//  case '2': delElem();break;
//  case '3': clean(); break;
    case '4': vyvodElem(n,tov);break;
//  case '5': vyvodColich();break;
//  case '6': sdvig();break;
    case '7': exit(0);
    }
}
    
}
 
 
void vvod(int n,tovar* tov)
{
    
    char vibor;
    cout<< " 1 - с консоли \n";
    cout<< " 2 - из файла \n" ;
    cin>>vibor;
    switch(vibor)
    {
    case '1': consolVvod(n,tov);break;
    case '2': FromFile();break;
    }
}
 
void consolVvod(int n,tovar* tov)
{
    //int n=5;
    //cout<<"Введите размер массива:" ;cin>>n;
//    tovar* tov=new tovar[n];
    for(int i=0;i<n;i++)
    {
        cout<<"Введите номер: ";cin>>tov[i].nomer;
        cout<<"Введите наименование: ";cin>>tov[i].naim;
        cout<<"Введите единици измерения: ";cin>>tov[i].edizm;
        cout<<"Введите количество: ";cin>>tov[i].kolvo;
        cout<<"Введите цену: ";cin>>tov[i].cena;
        cout<<endl;
    }
}
 
void FromFile()
{   
    
   }
 
void vyvodElem(int n,tovar* tov)
{
 
    char VibViv;
    cout<< "Выберите куда выводить элементы \n";
    cout<< "1 - на экран \n";
    cout<< "2 - в файл \n";
    cin>>VibViv;
    switch(VibViv)
    {
    case '1': vivodEkran(n,tov);break;
    case '2': vFile();break;
    }
}
void vivodEkran(int n,tovar* tov)
{
    cout<<"Список товара:\n";
    for(int i=0;i<n;i++)
    {
      cout<<"Номер:            |"<<tov[i].nomer<<";\n";
      cout<<"Наименование:     |"<<tov[i].naim<<";\n";
      cout<<"Еденицы измерения:|"<<tov[i].edizm<<";\n";
      cout<<"Количество:       |"<<tov[i].kolvo<<";\n";
      cout<<"Цена:             |"<<tov[i].cena<<";\n";
      cout<<endl;
    }
    system("pause");
}
void vFile()
{
}
Yandex
Объявления
25.05.2012, 03:07     Заполнение массива структур с консоли
Ответ Создать тему
Опции темы

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