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

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

Войти
Регистрация
Восстановить пароль
 
N.Kavt
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 19
#1

Вывод динамической матрицы через указатели - C++

27.02.2012, 00:13. Просмотров 945. Ответов 4
Метки нет (Все метки)

Вот код программы.
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
# include <math.h>
# include <conio.h>
# include <iostream.h>
# include <stdlib.h>
# include <stdio.h>
class ClMatr
{
    int **M;
   int n,m;
   public:
 
   ClMatr(int size1,int size2)
   {
    n=size1; m=size2;
    M=new int*[n];
    for(int i=0;i<n;i++)
        M[i]=new int[m];
   }
 
   //Vvod:
   void MyInp()
   {  printf("\n\nVvedite element'i matrici M:\n");
    for(int i=0;i<n;i++)
      {
        for(int j=0;j<m;j++)
         {
            cout<<"M["<<(i+1)<<"]["<<(j+1)<<"]="; cin>>(*(M[i]+j));
         }
      }
   }
 
   //Vivod
   void MyOut()
   {
   printf("\n\n\n     Matrica M:\n");
   int x, y=wherey()+1;
   
        int *p1, *p2 ;
      for (p1=M[0];  p1<=M[n-1];  p1+=m+1,  y++)
 
              for (x=1, p2=p1; p2<=p1+m-1; p2++, x+=5)
              {
                     gotoxy(x,y);
                 printf("%5d", *p2);
              }
 
   }
 
 
 
 
    ~ClMatr()
   {
   for(int i=0;i<n;i++)
    delete []M[i];
   delete []M;
   }
 
 
 
 
};
int main()
{
    int m1,m2;
   printf("Opredelite Razmernost' Matrici M: \n");
    printf("Vvedite N Strok: ");
   cin>>m1;
   printf("Vvedite N Stolbcov: ");
   cin>>m2;
   ClMatr objMatr(m1,m2);
   objMatr.MyInp();
   objMatr.MyOut();
   
 
   getch(); return 0;
}


Мне нужно вывести в функции void MyOut динамическую матрицу. Выводит неверно. В чем ошибка?

Добавлено через 2 часа 10 минут
Почему если для массива, то работает хорошо.. для 2 на 2 уже нет.. для 3 на 3 тоже работает?

Добавлено через 7 минут
В чем проблема? У меня возникли мысли, что может память распределяется не равномерно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 00:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод динамической матрицы через указатели (C++):

Работа с динамической памятью через указатели. - C++
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Есть такая задача: Создать массив из N целых чисел, N вводит...

Работа с динамической памятью через указатели. Загадочная ошибка. - C++
Программа запускается и нормально исполняется, но в конце появляется ошибка. Мог бы кто подсказать в чем проблема? Пишу в Microsoft...

Работа с динамической памятью через указатели. Загадочная ошибка. - C++
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Есть такая задача: Создать массив из N целых чисел, N вводит...

Разобраться в принципе работы задачч. (Работа с динамической памятью через указатели. ) - C++
Вот условие задачи: Создать массив из N целых чисел, N вводит пользователь. Заполнить массив случайным образом в диапазоне от 1 до 12....

заполнение массива через rand и вывод на экран через указатели - C++
Учитель задал заполнить массивы и случайными числами и вывезти на экран через указатели, через функцию rand выводит как вы понимаете одни...

Некорректный вывод динамической матрицы - C++
Здравствуйте. У меня некорректно выводятся числа в динамическом двумерном массиве. Задача заключается в том, что нужно из одномерного...

4
Merovingian
54 / 54 / 5
Регистрация: 24.09.2011
Сообщений: 149
27.02.2012, 00:31 #2
C++
1
2
3
for (int i=0;  i<n;  i++)
              for (int j=0; j<m; j++)
                     cout<<M[i][j];
У вас как то странно сделано, не стал вдаваться в подробности... вобщем указатели какие то. Если надо вывод то вот он)
С форматом вывода разберетесь сами
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
27.02.2012, 00:49 #3
а если нужно через указатели то блин вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void MyOut()
   {
   printf("\n\n\n     Matrica M:\n");
 
                int *p1;
      for(int i=0;i<n;i++){
                   p1=M[i];
                   cout<<endl;
              for (int j=0;j<m;j++,p1++)
              {
 
                     printf("%5d", *p1);
              }
            }
   }
только скажи зачем) это не рационально
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
27.02.2012, 01:30 #4
Цитата Сообщение от A555 Посмотреть сообщение
только скажи зачем) это не рационально
это немного не то..
думаю имеется ввиду:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int * arr;
    int n;
 
    std::cout << "size = ";
    std::cin >> n;
 
    arr = new int[n];
 
    for(int i=0; i<n; i++)
        std::cin >> *(arr + i);
 
    for(int i=0; i<n; i++)
        std::cout << *(arr + i) << " ";
 
    delete[] arr;
 
    return 0;
}
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
27.02.2012, 01:36 #5
N.Kavt нет ты посмотри его пример он там типо хочет вывести матрицу присваивая строки указателям
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 01:36
Привет! Вот еще темы с ответами:

Перевернуть все нечетные строки динамической матрицы через функцию - C++
Как правильно описать двумерный массив в main? Так-то программа работает, но после разделения на функции, появились ошибочки) int *...

Переделать поиск максимального элемента матрицы через указатели - C++
3)Задана матрица D(4,4). Определить максимальный среди положительных, минимальный среди отрицательных и поменять их местами #include...

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Написать программу сортировки через указатели на указатели - C++
Вот моя программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; //Сортировка &quot;пузырьком&quot;. ...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
27.02.2012, 01:36
Ответ Создать тему
Опции темы

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