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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
#1

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

24.05.2012, 20:52. Просмотров 2499. Ответов 8
Метки нет (Все метки)

Доброго времени суток)
Помогите пожалуйста разобраться в следующем вопросе... 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

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

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

Заполнение массива структур - C++
Доброго времени суток! Есть задание из массива структур, в котором хранятся данные о командах (страна, название, фамилии, номер, возраст,...

Заполнение массива структур - C++
struct _menuItems { string values = { }; }; _menuItems menuItems = { }; как заполнить элементы массива структур при...

Заполнение массива структур из файла - C++
Здравствуйте появилась проблема - никак не могу найти, как заполнить массив структур из файла. Как заполнить файл я разобрался, а наоборот...

Заполнение массива структур оператором for - C++
#include <iostream> #include <conio.h> using namespace std; struct kuramy { char name; int hidth; int...

Заполнение массива структур из файла - C++
Необходимо заполнить структуру из файла. На эту тему нашел кучу тем и кучу разных неработающих кодов-) В общем пришел к следующему коду,...

Заполнение массива структур, методы cin-а - C++
Задача такая: спроектировать структуру car, в которой хранится название производителя и год выпуска, пользователь вводит количество...

8
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
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;
}
0
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;
}
а можно пожалуйста с обьяснениями... я что-то не понимаю... в с++ очень плохо разбираюсь(
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
24.05.2012, 21:46 #4
Создаем массив объектов структуры tovar(динамический). Размерность равна 5;
Так как по умолчанию поля структуры с модификатором public, то мы имеем к ним доступ. Далее мы просто вводим с клавиатуры значения и присваиваем каждому полю. Чтобы правильно заполнить поля можно пользователю указать что ввести , например, cout<<"Введите наименование: ";cin>>tovar[0].naim;
0
Kovrik15
2 / 2 / 0
Регистрация: 24.05.2012
Сообщений: 30
24.05.2012, 21:57  [ТС] #5
"error C2228: left of '.cena' must have class/struct/union"
а вот это что за ошибку выдает? на каждую позицию.
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
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;
}
Полный код программы.
2
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()
{
}
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
24.05.2012, 23:13 #8
А зачем столько много массивов объектов, причем каждый раз новывй создавать. надо работать с одним массивом.
0
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()
{
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2012, 03:07
Привет! Вот еще темы с ответами:

Заполнение и сохранение массива структур не работает... - C++
Я хочу сделать справочник кулинарных рецептов, (в него входит: название рецепта, ингредиенты(это у меня и вызывает затруднение) и...

Заполнение массива структур случайными символами - C++
Добрый день! Есть такое задание: Разработайте программу «Библиотека». Создайте структуру «Книга» (название, автор, издательство, жанр)....

Заполнение динамического массива структур из бинарного файла - C++
Здравствуйте! Нужна помощь в реализации вот такого алгоритма: предположим, что изначально мы создали динамический массив структур и...

Написать цикл, осуществляющий заполнение массива структур Student - C++
Здравствуйте! Нужно написать цикл, осуществляющий заполнение массива структур Student. Но возникли следующие проблемы: 1)не осуществляется...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
25.05.2012, 03:07
Ответ Создать тему
Опции темы

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