Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.09.2017
Сообщений: 44
1

Создать описаниее класса для определения одномерных масивов строчек фиксированной длины

27.05.2018, 17:09. Показов 550. Ответов 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
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <locale>
using namespace std;
class Massiv_Class
{
 int *a,*d,n,min;
 public:
 void Sozd();
 void Vvod();
 void Sceplenie(int n1, int n2);
 void Slijanie(int n3, int n4);
 void Print();
 void Vivodstr(int number);
 void Vivodelem(int rec, int field);
};
void Massiv_Class :: Sozd() //
{
int m;
 cout<<"Кол-во строк=";cin>>n;
 int min=0;
 for (int i=0;i<n;i++)
 {
 cout<<"Кол-во элементов "<< i+1 <<"в строке -  ";
 cin>>m;
 *(d+i)=m;// не совсем понятно
if (min<m) min=m;// не совсем понятно
 }
 a=(int*)malloc(sizeof(int)*n*min);
}
void Massiv_Class::Vvod()// 
{
 Sozd();
 for(int i=0;i<n;i++)
 for (int j=0; j<*(d+i); j++)
 {
 cout << "Введите число" << i + 1 << " -  ";
        cin>> *(a+i+j);
 }
}
void Massiv_Class :: Print()//Вывод всех строк
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
void Massiv_Class :: Vivodstr(int number)//Вывод по индексу
{cout<<"Введите номер массива : ";cin>>number;
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if (i==number) cout<<setw(6)<<*(a+i+j);// не совсем понятно
 }
 cout<<endl;
 }
}
 
void Massiv_Class ::Vivodelem(int rec, int field)//Ââûâîä êîíêðåòíîãî åëåìåíòà êîíêðåòíîé ñòðîêè(field)
{cout<<"Введите номер строки: ";cin>>rec;
 cout<<endl;
 cout<<"Введите номр столбца: ";cin>>field;
 cout<<endl;
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if ((i==rec)&&(j==field)) cout<<"Элемент-  "<<setw(6)<<*(a+i+j);
 else "Нету такого массиваí!";
 }
 cout<<endl;
 }
}
void Massiv_Class :: Sceplenie(int n1,int n2)//Сцепление двкх массивов
{ cout<<"Введите номер 1 строки: ";cin>>n1;cout<<endl;
 cout<<"Введите номер 2 строки : ";cin>>n2;cout<<endl;
 int m1,m2,k,j,l,p;
 int c[20];
 m1=*(d+n1);
 m2=*(d+n2);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 if(l<m1)
 {c[l]=*(a+n1+l);// не совсем понятно
 cout<<setw(6)<<c[l];
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n2+k);// не совсем понятно
 cout<<setw(6)<<c[l];
 k++;
 }
}
void Massiv_Class :: Slijanie(int n3,int n4)//Сцепление двух массивов без повторений
{cout<<"Введите номер 1 строки : ";cin>>n3;cout<<endl;
 cout<<"Введите номер 2 строки  ";cin>>n4;cout<<endl;
 int m1,m2,k,j,l,p,l1;
 int c[20],f[20];
 m1=*(d+n3);// не совсем понятно
 m2=*(d+n4);// не совсем понятно
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 {
 if(l<m1)
 {c[l]=*(a+n3+l);
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n4+k);
 k++;
 }
 }
 l1=0;
 f[l1]=c[l1];
 cout<<setw(6)<<f[l1];
 for(p=1;p<m3;p++)
 if(f[l1]!=c[p])
 { l++;
 f[l1]=c[p];
 cout<<setw(6)<<f[l1];
 }
}
int main()
{
setlocale(LC_ALL,"Russian");
 Massiv_Class a,b;
 int number,punkt,rec,field,kol,n1,n2,n,n3,n4;
while (punkt!=7)
 { cout<<"__________________МЕНЮ_________________ ";cout<<endl;
 cout<<"1 - Создание массива ";cout<<endl;
 cout<<"2 - Вывод";cout<<endl;
 cout<<"3 - Вывод строки";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние 2х массивов (без повторений)";cout<<endl;
 cout<<"6 - Вывод элемента";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт -  "; cin>> punkt;
 
 switch(punkt)
 {
 case 1: {
 a.Vvod();
 cout<<endl;
 a.Print();
 cout<<endl;
 
 }
 break;
 case 2: {
 a.Print();
 cout<<endl;
 }
 break;
 case 3: {
 cout<<endl;
 a.Vivodstr(number);
 
 }
 break;
 case 4: {
 
 a.Sceplenie(n1,n2);
 cout<<endl;
}
 break;
 case 5: {
 
 a.Slijanie(n3,n4);
 cout<<endl;
}
 break;
 
 case 6: {
 
 a.Vivodelem(rec,field);
}
 break;
 case 7:
 break;
 }} }
Миниатюры
Создать описаниее класса для определения одномерных масивов строчек фиксированной длины  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2018, 17:09
Ответы с готовыми решениями:

Описание класса для определения одномерных массивов строк фиксированной длины
Составить описание класса для определения одномерных массивов строк фиксированной длины....

Создать класс одномерных масивов содержащих строки фиксированной длины
Очень прошу помочь, так как сам ничего не понимаю. Не смотря на мое желаниие учиться, преподаватели...

ООП.Составить описание класса для определения одномерных массивов строк фиксированной длины
Условие задачи: Составить описание класса для определения одномерных массивов строк фиксированной...

Составить описание системы объектов для определения одномерных массивов строк фиксированной длины
Составить описание системы объектов для определения одномерных массивов строк фиксированной длины....

7
"C with Classes"
1513 / 1308 / 493
Регистрация: 16.08.2014
Сообщений: 5,467
Записей в блоге: 1
27.05.2018, 17:18 2
Сырок, учимся алгоритмически мыслить, а не подбирать в сети всякий хлам

Добавлено через 42 секунды
скинь код оригинала и задание
0
0 / 0 / 0
Регистрация: 29.09.2017
Сообщений: 44
27.05.2018, 17:26  [ТС] 3
Вот код, как было
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <iomanip>
#include <math.h>
#include <locale>
using namespace std;
class Massiv
{
 int *a,*d,n,min;
 public:
 void Sozd();
 void Vvod_Sl();
 void Form(int n1, int n2);
 void Form_2(int n3, int n4);
 void Print();
 void Print_2(int number);
 void Print_3(int rec, int field);
};
void Massiv :: Sozd() //Создание массива строк
{
int m;
 cout<<"Количество строк=";cin>>n;
 int min=0;
 for (int i=0;i<n;i++)
 {
 cout<<"Количество элементов "<< i+1 <<" в строке= ";
 cin>>m;
 *(d+i)=m;
 if (min<m) min=m;
 }
 a=(int*)malloc(sizeof(int)*n*min);
}
void Massiv::Vvod_Sl()// Ввод случайных чисел в массив строк
{
 Sozd();
 for(int i=0;i<n;i++)
 for (int j=0; j<*(d+i); j++)
 {
 *(a+i+j)=rand()%100;
 }
}
void Massiv :: Print()//Ввывод всех строк
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
void Massiv :: Print_2(int number)//Ввывод строк по индексу
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if (i==number) cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
 
void Massiv :: Print_3(int rec, int field)//Ввывод конкретного елемента конкретной строки
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if ((i==rec)&&(j==field)) cout<<"Даный элемент= "<<setw(6)<<*(a+i+j);
 else "Массив с такими даннымы не найден!";
 }
 cout<<endl;
 }
}
void Massiv :: Form(int n1,int n2)//Сцепление двух массивов
{
 int m1,m2,k,j,l,p;
 int c[20];
 m1=*(d+n1);
 m2=*(d+n2);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 if(l<m1)
 {c[l]=*(a+n1+l);
 cout<<setw(6)<<c[l];
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n2+k);
 cout<<setw(6)<<c[l];
 k++;
 }
}
void Massiv :: Form_2(int n3,int n4)//Слияние двух массивов
{
 int m1,m2,k,j,l,p,l1;
 int c[20],f[20];
 m1=*(d+n3);
 m2=*(d+n4);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 {
 if(l<m1)
 {c[l]=*(a+n3+l);
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n4+k);
 k++;
 }
 }
 l1=0;
 f[l1]=c[l1];
 cout<<setw(6)<<f[l1];
 for(p=1;p<m3;p++)
 if(f[l1]!=c[p])
 { l++;
 f[l1]=c[p];
 cout<<setw(6)<<f[l1];
 }
}
void main()
{
setlocale(LC_ALL,"Russian");
 Massiv a,b;
 int number,punkt,rec,field,kol,n1,n2,n,n3,n4;
  cout<<"1 - Создание массива ";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 while (punkt!=7) //Меню
 {
 switch(punkt)
 {
 case 1: {
 a.Vvod_Sl();
 cout<<endl;
 a.Print();
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 }
 break;
 case 2: {
 a.Print();
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt; }
 break;
 case 3: {
 cout<<"Введите номер массива (нумерация начинаеться с 0!): ";cin>>number;
 cout<<endl;
 a.Print_2(number);
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 }
 break;
 case 4: {
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n1;cout<<endl;
 cout<<"Введите номер 2-го массива (нумерация начинаеться с 0!!!): ";cin>>n2;cout<<endl;
 a.Form(n1,n2);
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 case 5: {
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n3;cout<<endl;
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n4;cout<<endl;
 a.Form_2(n3,n4);
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 
 case 6: {
 cout<<"Введите номер строки массива(нумерацыия начинаеться с 0!): ";cin>>rec;
 cout<<endl;
 cout<<"Введите номер столбца: ";cin>>field;
 cout<<endl;
 a.Print_3(rec,field);
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 case 7:
 break;
 }
 }
 }
0
"C with Classes"
1513 / 1308 / 493
Регистрация: 16.08.2014
Сообщений: 5,467
Записей в блоге: 1
27.05.2018, 17:41 4
Сырок, а задание? что должен он делать по твоему?

Добавлено через 5 минут
ужас, как можно вообще что то понимать в таком коде, каша.
0
0 / 0 / 0
Регистрация: 29.09.2017
Сообщений: 44
27.05.2018, 17:48  [ТС] 5
Так в меню все написано,"Создать описаниее класса для определения одномерных масивов строчек фиксированной длины. Предусмотреть возможность обращения к отделльным строчкам масива за индексами, контроль выхода за границы индекса, исполнение операций поелементного обьединения двух масивов с созданием нового масива, слитие двух масивов с исключением повторяющихся элементов, печать (вывод на экран) эллементов масива и всего масива". Не очень разбираюсь в классах, и в проге кроме некороторых моментов все понятно..
0
"C with Classes"
1513 / 1308 / 493
Регистрация: 16.08.2014
Сообщений: 5,467
Записей в блоге: 1
27.05.2018, 18:05 6
Цитата Сообщение от Сырок Посмотреть сообщение
while (punkt!=7)
ты видел что обращаешься к не инициализированной переменной?
0
0 / 0 / 0
Регистрация: 29.09.2017
Сообщений: 44
27.05.2018, 18:10  [ТС] 7
ноу, она инициализирована
C++
1
2
int number,punkt,rec,field,kol,n1,n2,n,n3,n4;
while (punkt!=7)
0
"C with Classes"
1513 / 1308 / 493
Регистрация: 16.08.2014
Сообщений: 5,467
Записей в блоге: 1
27.05.2018, 18:12 8
Сырок, советую тебе другой код искать, это свалка а не код. ошибка на ошибке.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2018, 18:12

Разработка класса одномерных массивов строк фиксированной длины
Всем здрате. Вот собственнно просьба: подскажите в каком направении двигаться) Класс должен...

Сделать зеркальное отображение одномерных масивов ABC, массивы разной длины
Сделать зеркальное отображение одномерных масивов ABC, массивы разной длины. Помогите пожалуйста,...

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

Составить описание класса для определения одномерных массивов
напишите пжлста програмку:


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru