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

массивы (перевести программу из незнакомого мне языка c# в знакомый мне с++) - C++

Восстановить пароль Регистрация
 
Bulding
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
06.05.2013, 22:58     массивы (перевести программу из незнакомого мне языка c# в знакомый мне с++) #1
здравствуйте уважаемые программисты, помогите пожалуйста перевести программу из незнакомого мне языка c# в знакомый мне с++.


вот код

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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Lab4 //нэймспейс епрст
{
class Program
{
 
public struct Ttvbaze //структура базы данных телевизоров
{
public string Model; //модель телика
public int Size; // диагональ телика
public string Creator; //производитель телика
public int Cost; // цена телика
}
 
static Ttvbaze[] create() //функция создания массива, запускается при старте программы через Main.
{
Console.WriteLine("Здравствуйте. Сейчас мы создадим новую базу данных телевизоров");
 
Console.WriteLine();
 
Console.WriteLine("Введите количество записей в БД и нажмите Enter");
 
int k = Convert.ToInt16(Console.ReadLine()); //просим пользователя ввести кол-во записей
 
Ttvbaze[] Massive = new Ttvbaze[k]; //создаем массив с заданным количеством строк
 
Console.WriteLine();
 
Console.WriteLine("Заполните пожалуйста созданную БД");
 
//процедура заполнения массива
for (int i = 0; i < k; i++)
{
Console.WriteLine("Введите модель: ");
Massive[i].Model = Console.ReadLine();
 
Console.WriteLine("Введите диагональ: ");
Massive[i].Size = Convert.ToInt16(Console.ReadLine());
 
Console.WriteLine("Введите производителя: ");
Massive[i].Creator = Console.ReadLine();
 
Console.WriteLine("Введите цену: ");
Massive[i].Cost = Convert.ToInt32(Console.ReadLine());
 
Console.WriteLine("Элемент № {0} записан!",i);
Console.WriteLine();
 
}
Console.WriteLine("Всё. БД заполнена. Для перехода в меню жмите Enter");
Console.ReadLine();
return Massive; // возвращаем массив
}
 
static void add(Ttvbaze[] Massive) //процедура добавления элемента в конец массива
{
int OldSize = Massive.Length; //запоминаем старый размер массива в переменной
 
Console.WriteLine("Сколько элементов вы хотите добавить?");
int k = Convert.ToInt16(Console.ReadLine()); //узнаем сколько элементов нужно добавить
 
Array.Resize(ref Massive, Massive.Length + k); //с помощью класса Array который обращается к нашему массиву, и у которого есть метод Resize, прибавляем к длине нынешнего массива то число которое ввел пользователь
 
int NewSize = Massive.Length; //запоминаем новый размер массива
 
//цикл заполнения массива не с нуля, а со старого размера массива, который мы заранее запомнили
for (int i = OldSize; i < NewSize; i++)
{
Console.WriteLine("Введите модель");
Massive[i].Model = Console.ReadLine();
 
Console.WriteLine("Введите диагональ");
Massive[i].Size = Convert.ToInt16(Console.ReadLine());
 
Console.WriteLine("Введите производителя");
Massive[i].Creator = Console.ReadLine();
 
Console.WriteLine("Введите цену");
Massive[i].Cost = Convert.ToInt32(Console.ReadLine());
 
}
//выводим массив
for (int i = 0; i < Massive.Length; i++)
{
Console.Write("Модель: {0} | Диагональ: {1} | Производитель: {2} | Цена: {3} руб.", Massive[i].Model, Massive[i].Size, Massive[i].Creator, Massive[i].Cost);
Console.WriteLine();
}
Console.ReadLine();
 
menu(Massive); //возвращаемся в функцию menu
 
}
 
static void del(Ttvbaze[] Massive) //массив удаления элемента из массива.
//напрямую удалить какой то элемент массива нельзя, нет такого метода. Но, можно это сделать с помощью перемещения элементов массива на 1 элемент влево
//т.е. заменить удаляемый элемент идущим после него, и так до конца, чтобы в конце массива осталась пустая незаполненная ячейка. потом просто делаем Resize на 1 единицу.
{
Console.WriteLine("Введите модель телевизора чтобы удалить эту запись");
string Model = Console.ReadLine(); //просим у пользователя имя телевизора
int ind; //переменная для индекса этого телевизора
ind = 0;
 
//цикл нахождения индекса нужного элемента и сохранение его в переменной
for (int i = 0; i < Massive.Length; i++)
{
if (Massive[i].Model == Model)
{
ind = i; //индекс именно искомого элемента
}
}
 
//начинаем сдвигать массив влево если искомый элемент НЕ последний
if (ind < Massive.Length-1)
{
for (int i = ind; i < Massive.Length - 1; i++)
{
Massive[i].Model = Massive[i + 1].Model;
Massive[i].Size = Massive[i + 1].Size;
Massive[i].Creator = Massive[i + 1].Creator;
Massive[i].Cost = Massive[i + 1].Cost;
}
}
 
//если всё таки элемент последний в массиве, то просто отрезаем его нафиг :)
if (ind == Massive.Length-1)
{
for (int i = ind; i < Massive.Length - 1; i++)
{
Array.Resize(ref Massive, Massive.Length - 1); //все тем же знакомым классом Array и ресайзом
}
}
 
//если элемент не последний и массив уже сдвинут влево, отрезаем последний его пустой элемент. Всё :)
Array.Resize(ref Massive, Massive.Length - 1);
 
menu(Massive);
 
}
 
static void edit(Ttvbaze[]Massive) //редактирование элемента массива
{
//находим его как нашли функцией выше, в del();
Console.WriteLine("Введите модель телевизора чтобы изменить эту запись");
string Model = Console.ReadLine();
 
int ind;
ind = 0;
 
for (int i = 0; i < Massive.Length; i++)
{
if (Massive[i].Model == Model)
{
ind = i;
}
}
 
//делаем подменюшку чтобы выбирать что выбирать с помощью switch.
int x;
do
{
Console.WriteLine("Выберите, что вы хотите изменить для этой модели?");
Console.WriteLine("1.Изменить цену");
Console.WriteLine("2.Изменить производителя");
Console.WriteLine("3.Изменить размер диагонали");
Console.WriteLine("4.Изменить название модели");
Console.WriteLine("5.Закончить редактирование");
x = Convert.ToInt16(Console.ReadLine());
 
switch (x)
{
case 1:
{ //если пользователь выберет первый пункт, он обратится к найденному элементу и отредактирует его цену
Console.WriteLine("Введите новую цену для этой модели телевизора");
Massive[ind].Cost = Convert.ToInt16(Console.ReadLine());
}
break;
case 2:
{
Console.WriteLine("Введите нового производителя для этой модели телевизора");
Massive[ind].Creator = Console.ReadLine();
}
break;
case 3:
{
Console.WriteLine("Введите новую диагональ для этого телевизора");
Massive[ind].Size = Convert.ToInt16(Console.ReadLine());
}
break;
case 4:
{
Console.WriteLine("Введите новую модель для этого телевизора");
Massive[ind].Model = Console.ReadLine();
}
break;
case 5: //когда пользователь отредактирует сколько нужно, то с помощью 5 го пункта вернется в главное меню
menu(Massive);
break;
}
} while (x != 5);
 
 
 
}
 
static void search(Ttvbaze[]Massive) //функция поиска в массиве. Кстати, если немного подредактировать, получится функция которая принимает массив, ищет в нем и возвращает id элемента
{
Console.WriteLine("Введите диагональ телевизора чтобы найти");
int Size = Convert.ToInt16(Console.ReadLine()); //как обычно. спрашиваем у пользователя размер диагонали
 
//ищем диагональ в массиве, обычным перебором и сравнением
for (int i = 0; i < Massive.Length; i++)
{
if (Massive[i].Size == Size) //если есть совпадение, то выводит этот элемент на экран, все просто.
{
Console.Write("Модель: {0} | Диагональ: {1} | Производитель: {2} | Цена: {3} руб.", Massive[i].Model, Massive[i].Size, Massive[i].Creator, Massive[i].Cost);
Console.WriteLine();
}
}
}
 
static void show(Ttvbaze[] Massive) //самая простая функция в программе - вывод массива
{
//цикл вывода массива
for (int i = 0; i < Massive.Length; i++)
{
Console.Write("Модель: {0} | Диагональ: {1} | Производитель: {2} | Цена: {3} руб.", Massive[i].Model, Massive[i].Size, Massive[i].Creator, Massive[i].Cost);
Console.WriteLine();
}
Console.ReadLine();
Console.WriteLine();
menu(Massive);
}
 
static void quit() //нет, ошибся, оказывается есть еще проще функция - выход из программы.
{
Environment.Exit(0);
}
 
static void menu(Ttvbaze[] Massive) //функция главного меню, не путайте с главной функцией Main, она внизу
{
int x;
Console.Clear(); //перед каждым выходом в главное меню - очищаем консоль, мы же не грязнули
do
{
 
Console.WriteLine("Вы находитесь в главном меню. Выберите номер действия и нажмите Enter");
Console.WriteLine();
Console.WriteLine("1.Добавление");
Console.WriteLine("2.Удаление");
Console.WriteLine("3.Редактировать");
Console.WriteLine("4.Показать все");
Console.WriteLine("5.Поиск");
Console.WriteLine("6.Выход");
 
x = Convert.ToInt16(Console.ReadLine());
 
switch (x) //с помощью свитча бабахаем меню и вызываем те или иные функции в зависимости от выбора пользователя
{
 
case 1: add(Massive); break;
case 2: del(Massive); break;
case 3: edit(Massive); break;
case 4: show(Massive); break;
case 5: search(Massive); break;
case 6: quit(); break;
 
default: Console.WriteLine("Вы неправильно выбрали номер действия, попробуйте еще раз"); break;
}
 
Console.Write("\n\n\t\tДля выбора нового действия нажмите Enter");
Console.ReadLine();
Console.Clear();
 
}
while (x != 6); //выводим меню пока пользователь не закроет консоль или не нажмет выход
}
 
static void Main(string[] args) //главная функция
{
 
Ttvbaze[] Massive = new Ttvbaze[1]; //создаем любой пустой массив, чтобы его можно было передать в функцию menu
Massive = create(); //заменяем этот пустой массив, тем массивом который передаст нам функция Create в начале программы
menu(Massive); //переходим в гл.мен.
 
}
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 22:58     массивы (перевести программу из незнакомого мне языка c# в знакомый мне с++)
Посмотрите здесь:

Помогите пожалуйста мне с бинарным деревом, а то мне кранты! C++
C++ Перевести программу с языка Паскаль на С++
C++ Перевести программу с языка Паскаль в язык С++
C++ Прокомментируйте мне каждую строчку программы. Массивы
Прокомментируйте мне программу C++
C++ Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании
C++ перевести программу из языка Паскаль в С++
C++ Перевести программу с языка С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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