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

Почему не полностью выводится массив? - C++

Восстановить пароль Регистрация
 
 
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 21:17     Почему не полностью выводится массив? #1
Массив MyY не полностью выводится. В чем может быть проблема? Заранее спасибо.

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
const n2max=5;
const n1max=10;
class cl1
{
int n1,n2;
int M[n1max][n2max];
public:
 
cl1(int size1,int size2)
{
if (n1>0||n1<n1max) n1=size1;
else n1=n1max;
if (n2>0||n2<n2max) n2=size2;
else n2=n2max;
}
 
void myinp()
{
randomize;
int i,j;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
*(M[i]+j)=random(100);
}
}
}
 
 
 
 
void myout()
{
int i,j,x,y;
cout<<"The Matrix:";
for(i=0,y=4;i<n1;i++,y++){
for(j=0,x=1;j<n2;j++,x+=5){
gotoxy(x,y);
cout<<M[i][j];
}
}
}
 
void MyX(){
int *X,*Y,l1,l2,k;
l1=n1;
l2=n2;
k=l1*l2;
for (int j=0;j<l2;j++){
for (int i=1;i<=k;i++){
X[i+l2*j]=i;
}}
cout<<endl<<endl<<endl<<endl;
for(int i=1;i<=k;i++)
cout<<X[i]<<"   ";
}
 
 
 
void MyY(){
int *Y,l1,l2,k;
l1=n1;
l2=n2;
k=l1*l2;
for (int j=0;j<l2;j++){
for (int i=1;i<=k;i++){
Y[i+l2*j]=j+1;
}}
cout<<endl<<endl<<endl<<endl;
for(int i=1;i<=k;i++)
cout<<Y[i]<<"   ";
}
};
int main()
{
int k1,k2;
cout<<"Input N strok: ";
cin>>k1;
cout<<"Input N stolbcov: ";
cin>>k2;
cl1 objA(k1,k2);
objA.myinp();
objA.myout();
objA.MyX();
objA.MyY();
getch();
return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 21:25     Почему не полностью выводится массив? #2
См. комментарии:
Цитата Сообщение от N.Kavt Посмотреть сообщение
class cl1
{
int n1,n2;
int M[n1max][n2max];
public:
cl1(int size1,int size2)
{
if (n1>0||n1<n1max) n1=size1;// а в переменной n1 какое значение?
else n1=n1max;
if (n2>0||n2<n2max) n2=size2;
else n2=n2max;
}
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 21:29  [ТС]     Почему не полностью выводится массив? #3
вот кусочек программы, до объявления класса...
const n2max=5;
const n1max=10;

значение n1 сам ввожу..
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 21:33     Почему не полностью выводится массив? #4
Цитата Сообщение от N.Kavt Посмотреть сообщение
значение n1 сам ввожу..
ну давайте пробежимся по коду как компьютер:
C++
1
2
3
4
5
6
7
8
int main()
 {
 int k1,k2;
 cout<<"Input N strok: ";
 cin>>k1;
 cout<<"Input N stolbcov: ";
 cin>>k2;
 cl1 objA(k1,k2);// вот из этой строки переходим....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class cl1// переходим вот сюда
 {
 int n1,n2;
 int M[n1max][n2max];
 public:
 
 cl1(int size1,int size2)
 {
 if (n1>0||n1<n1max) n1=size1;// доходим дой этой строчки и .. где введенное Вами значение n1 ?
 else n1=n1max;
 if (n2>0||n2<n2max) n2=size2;
 else n2=n2max;
 }
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 21:39  [ТС]     Почему не полностью выводится массив? #5
нууу... n1 ,будет равняться k1... или нет?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 21:46     Почему не полностью выводится массив? #6
Цитата Сообщение от N.Kavt Посмотреть сообщение
нууу... n1 ,будет равняться k1... или нет?
или нет.
C++
1
2
if (n1>0||n1<n1max) // кто писал этот код ошибся. Нужно было if (size1>0 && size1<n1max)
n1=size1;
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 21:51  [ТС]     Почему не полностью выводится массив? #7
ага.. тут понятно...
Но я исправил, а массив У не выводится полностью...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 21:53     Почему не полностью выводится массив? #8
Цитата Сообщение от N.Kavt Посмотреть сообщение
Но я исправил, а массив У не выводится полностью...
а в 2-х строках ниже тоже самое для n2 исправили?
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 21:57  [ТС]     Почему не полностью выводится массив? #9
да, исправил

Добавлено через 1 минуту
выводятся только 2 значения: 1 1

Добавлено через 38 секунд
а должно быть столько же сколько и элементов в матрице
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 22:05     Почему не полностью выводится массив? #10
Цитата Сообщение от N.Kavt Посмотреть сообщение
выводятся только 2 значения: 1 1
Добавлено через 38 секунд
а должно быть столько же сколько и элементов в матрице
Выводится у меня столько сколько и задавали, следующая ошибка в void MyX()
Покажите полностью код.
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 22:23  [ТС]     Почему не полностью выводится массив? #11
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
# include <math.h>
# include <conio.h>
# include <iostream.h>
# include <stdlib.h>
# include <stdio.h>
const n2max=5;
const n1max=10;
class cl1
{
int n1,n2;
int M[n1max][n2max];
public:
 
cl1(int size1,int size2)
{
if (size1>0&&size1<n1max) n1=size1;
else n1=n1max;
if (size2>0&&size2<n2max) n2=size2;
else n2=n2max;
}
 
void myinp()
{
randomize;
int i,j;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
*(M[i]+j)=random(100);
}
}
}
 
 
 
 
void myout()
{
int i,j,x,y;
cout<<"The Matrix:";
for(i=0,y=4;i<n1;i++,y++){
for(j=0,x=1;j<n2;j++,x+=5){
gotoxy(x,y);
cout<<M[i][j];
}
}
}
 
void MyX(){
int *X,*Y,l1,l2,k;
l1=n1;
l2=n2;
k=l1*l2;
for (int j=0;j<l2;j++){
for (int i=1;i<=k;i++){
X[i+l2*j]=i;
}}
cout<<endl<<endl<<endl<<endl;
for(int i=1;i<=k;i++)
cout<<X[i]<<"   ";
}
 
 
 
void MyY(){
int *Y,l1,l2,k;
l1=n1;
l2=n2;
k=l1*l2;
for (int j=0;j<l2;j++){
for (int i=1;i<=k;i++){
Y[i+l2*j]=j+1;
}}
cout<<endl<<endl<<endl<<endl;
for(int i=1;i<=k;i++)
cout<<Y[i]<<"   ";
}
};
int main()
{
int k1,k2;
cout<<"Input N strok: ";
cin>>k1;
cout<<"Input N stolbcov: ";
cin>>k2;
cl1 objA(k1,k2);
objA.myinp();
objA.myout();
objA.MyX();
objA.MyY();
getch();
return 0;
}
Добавлено через 17 секунд
вот он полностью
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 22:31     Почему не полностью выводится массив? #12
Вот так запустите и проверьте, что на экран выводится:
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
# include <math.h>
# include <conio.h>
# include <iostream.h>
# include <stdlib.h>
# include <stdio.h>
const n2max=5;
const n1max=10;
class cl1
{
int n1,n2;
int M[n1max][n2max];
public:
 
cl1(int size1,int size2)
{
if (size1>0&&size1<n1max) n1=size1;
else n1=n1max;
if (size2>0&&size2<n2max) n2=size2;
else n2=n2max;
}
 
void myinp()
{
randomize;
int i,j;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
*(M[i]+j)=random(100);
}
}
}
 
 
 
 
void myout()
{
int i,j,x,y;
cout<<"The Matrix:";
for(i=0,y=4;i<n1;i++,y++){
for(j=0,x=1;j<n2;j++,x+=5){
gotoxy(x,y);
cout<<M[i][j];
}
}
}
 
 
};
int main()
{
int k1,k2;
cout<<"Input N strok: ";
cin>>k1;
cout<<"Input N stolbcov: ";
cin>>k2;
cl1 objA(k1,k2);
objA.myinp();
objA.myout();
 
getch();
return 0;
}
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 22:37  [ТС]     Почему не полностью выводится массив? #13
Матрица, где я задаю количество строк и столбцов и рандомно заполняет
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 22:40     Почему не полностью выводится массив? #14
Цитата Сообщение от N.Kavt Посмотреть сообщение
Матрица, где я задаю количество строк и столбцов и рандомно заполняет
т.е. выводятся все элементы матрицы на экран?
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 22:44  [ТС]     Почему не полностью выводится массив? #15
Да, все
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 22:49     Почему не полностью выводится массив? #16
Тогда идем дальше:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void MyX(){
 int *X,*Y,l1,l2,k;// здесь созданы два указателя на int - X и Y
 l1=n1;
 l2=n2;
 k=l1*l2;
 for (int j=0;j<l2;j++){
 for (int i=1;i<=k;i++){
 X[i+l2*j]=i;// здесь указатель используется как массив (явно до этого пропустили создание динамического массива)
 }}
 cout<<endl<<endl<<endl<<endl;
 for(int i=1;i<=k;i++)
 cout<<X[i]<<" ";
 }
Я могу только догадываться, но что вообще должна делать функция void MyX() ?
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 22:59  [ТС]     Почему не полностью выводится массив? #17
В Void MyX я хотел каждому элементу матрицы присвоить свои значения координаты x на плоскости. В Void MyY соответственно свои игрики...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 23:06     Почему не полностью выводится массив? #18
Ну создали бы тогда рядышком с созданием массива: int M[n1max][n2max]; еще два массива X[n1max][n2max], Y[n1max][n2max].
А координаты на плоскости связаны как-то с номером строки и столбца, в которых расположен элемент массива?
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
15.02.2012, 23:11  [ТС]     Почему не полностью выводится массив? #19
да, номер строки - у, столбца - х...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 23:25     Почему не полностью выводится массив?
Еще ссылки по теме:

Почему выводится весь массив C++
C++ Почему при выводе в поток char* выводится весь массив символов?
C++ Почему выводится ноль?

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 23:25     Почему не полностью выводится массив? #20
Цитата Сообщение от N.Kavt Посмотреть сообщение
да, номер строки - у, столбца - х...
Тогда заполнение можно сделать так:
C++
1
2
3
4
5
6
void MyX(){
    int i,j;
 for(i=0;i<n1;i++)
     for(j=0;j<n2;j++)
         X[i][j]=i;
 }
по аналогии void MyY()
Yandex
Объявления
15.02.2012, 23:25     Почему не полностью выводится массив?
Ответ Создать тему
Опции темы

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