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

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

Войти
Регистрация
Восстановить пароль
 
 
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
#1

Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения - C++

25.03.2013, 03:13. Просмотров 499. Ответов 18
Метки нет (Все метки)

Помогите пожалуйста. Не понимаю в чем ошибка программы???
Вот задание.
Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы.

Код
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
 //oop-class-1lab
 #include <iostream>
 #include <stdlib.h>
 #include <math.h>
 using namespace std;
 
 class matrica   //class
 {
     int a;
     int **y;
     public:
      matrica(int, int);
     ~matrica();
 };        
             
  matrica::matrica (int stroka, int stolbec)    //konstruktor
  {
       int a=stroka;
       int b=stolbec;
          int **y=new int *[a];
             for (stroka=0; stroka<a; stroka++)
             y[stroka]=new int [b];
       for (stroka=0; stroka<a; stroka++)
       {
           for (stolbec=0; stolbec<b; stolbec++)
            y[stroka][stolbec]=(stroka+1)*(stolbec+1);
            cout<<y[stroka][stolbec]<<"  ";
       }
            cout<<endl<<endl; 
          
             
  }   
  
  matrica::~matrica()         //distruktor
  {
         for(int stroka=0; stroka<a; stroka++)
         delete[]y[stroka];
         delete[]y;
  }
   
      
 int main(int f)   //f main
 {
     int stroka=rand()%10;
     int stolbec=rand()%10;
     matrica rect(stroka,stolbec);
       cout << "stroka = ";
       cin >> stroka;
       cout << endl;
       cout << "stolbec = ";
       cin >> stolbec;
       cout << endl; 
     matrica rectb(stroka,stolbec);
     system("pause");
     return 0;
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2013, 03:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения (C++):

Составить описание класса, обеспечивающего представление матрицы произвольного размера - C++
Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и столбцов,...

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

Составить описание класса, обеспечивающего представление матрицы произвольного размера - C++
вариант1 Условие задачи: Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения...

Матрицы произвольного размера. - C++
Помогите пожалуйста написать программу, которая будет работать с матрицами произвольного размера. необходимо определить для матриц операции...

Перемножить матрицы произвольного размера - C++
#include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; int main() { int n,m,c,r; //...

Подскажите простую реализацию динамического массива и его использование с возможностью изменения его размера - C++
Подскажите простую реализацию динамического масива и его использование с возможностью изменения его размера........спасибо))) ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 03:39 #2
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
 //oop-class-1lab
 #include <iostream>
 #include <stdlib.h>
 #include <time.h>
 #include <math.h>
 using namespace std;
 
 class matrica   //class
 {
     int a;
     int **y;
     public:
      matrica(int, int);
     ~matrica();
 };
 
  matrica::matrica (int stroka, int stolbec)    //konstruktor
  {
       int a=stroka;
       int b=stolbec;
          int **y=new int *[a];
             for (stroka=0; stroka<a; stroka++)
             y[stroka]=new int [b];
       for (stroka=0; stroka<a; stroka++)
       {
           for (stolbec=0; stolbec<b; stolbec++)
           {
                y[stroka][stolbec]=(stroka+1)*(stolbec+1);
                cout<<y[stroka][stolbec]<<"  ";
           }
           cout<<endl<<endl;
       }
            
 
 
  }
 
  matrica::~matrica()         //distruktor
  {
         for(int stroka=0; stroka<a; stroka++)
         delete [] y[stroka];
         delete [] y;
  }
 
 
 int main(int f)   //f main
 {
     srand(time(0));
     int stroka=rand()%9+1;
     int stolbec=rand()%9+1;
     cout << "znachenia stroki i stolbca = " << stroka << "    " << stolbec << endl;
     matrica rect(stroka,stolbec);
       cout << "stroka = ";
       cin >> stroka;
       cout << endl;
       cout << "stolbec = ";
       cin >> stolbec;
       cout << endl;
     matrica rectb(stroka,stolbec);
 
     system("pause");
     return 0;
 }
0
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 89
25.03.2013, 03:43 #3
наверное нужно контролировать значения числа строк и столбцов на равенство нулю при задании функцией rand()
0
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 03:46 #4
SDev, исправил уже, правда как могу)
C++
1
int stroka=rand()%9+1;
0
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
25.03.2013, 04:03  [ТС] #5
Спасибо. Вы мне очень помогли
Только одно я не понял. Объясните пожалуйста почему (в моем коде) программа не выполняла
Цитата Сообщение от Vahram1995 Посмотреть сообщение
matrica rectb(stroka,stolbec);
команду?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2013, 04:08 #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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//oop-class-1lab
 #include <iostream>
 #include <stdlib.h>
 #include <math.h>
 #include <ctime>
 #include <iomanip>
 using namespace std;
 
 class matrica   //class
 {
     int a;
     int **y;
     public:
      matrica(int, int);
     ~matrica();
 };        
             
matrica::matrica (int stroka, int stolbec)    //konstruktor
 {
       a = stroka;
       int b = stolbec;
       
       y = new int*[a];
       for (stroka = 0; stroka < a; stroka++)
            y[stroka] = new int[b];
       
       for (stroka = 0; stroka < a; stroka++)
       {
           for (stolbec=0; stolbec<b; stolbec++)
           {
                y[stroka][stolbec]=(stroka+1)*(stolbec+1);
                cout << setw(3) << y[stroka][stolbec] << "  ";
            }
            cout << endl;
       }
       cout << endl;
        
 }   
  
  matrica::~matrica()         //distruktor
  {
         for(int stroka = 0; stroka < a; stroka++)
                delete [] y[stroka];
         delete [] y;
  }
   
      
int main(int f)   //f main
{
    srand(time(NULL));
 
    int stroka  = rand() % 9 + 1;
    int stolbec = rand() % 9 + 1;
    
    {matrica rect(stroka, stolbec);}
    
    cout << "stroka = ";
    cin >> stroka;
    cout << endl;
    cout << "stolbec = ";
    cin >> stolbec;
    cout << endl; 
    
    matrica rectb(stroka, stolbec);
     
    system("pause");
    return 0;
 }
Добавлено через 2 минуты
Ошибка вот здесь была:
C++
1
2
3
4
5
6
7
...
 matrica::matrica (int stroka, int stolbec)    //konstruktor
  {
       int a=stroka;
 ...
       int **y=new int *[a];
...
Создавались новые локальные переменные, вместо того, чтобы использовать поля класса.
1
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 04:13 #7
Vahram1995, во первых были не правильно расставлены операторные скобки, поэтому косячил вывод..
во вторых вы забыли про такую штуку в рандоме как параметр этого рандома, при включении этой программы без добавления
C++
1
2
 #include <time.h>
srand(time(0));
у вас рандом будет генерить одни и те же значения
в-третьих то что как сказал SDev, возможен ранд = 0, это не возможно потому что матрица допустим с 0 строками или 0 столбцами есть пустота)))
На будущее выводите в консоль некоторые ключевые значения или пользуйтесь дебагером)
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2013, 04:15 #8
Объект создавался, но поля не заполнялись. При выходе из программы вызывался деструктор, попытка освободить память через указатели, под которые память не выделялась.

Добавлено через 1 минуту
VaJI, вы почитайте, что я пишу. Повторяете те же ошибки, что и ТС. Рандом - это мелочи.
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2013, 04:24 #9
VaJI, результат работы вашего кода.
0
Миниатюры
Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения  
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 04:36 #10
alsav22, все, понял)
0
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
25.03.2013, 04:36  [ТС] #11
А у меня оно заработало
0
Миниатюры
Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения  
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 04:43 #12
Vahram1995, слушай alsav22 и радио - будешь самым умным у меня CodeBlocks тоже проглатывал, но ошибка очень грубая.

Добавлено через 2 минуты
обрати внимание что ты заново создаешь переменные в конструкторе, которые уже объявлены в классе -> начинает косячить деструктор.
0
Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
25.03.2013, 04:58  [ТС] #13
Цитата Сообщение от alsav22 Посмотреть сообщение
cout << setw(3) << y[stroka][stolbec] << " ";
A что делает команда setw(3)?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2013, 05:12 #14
Цитата Сообщение от Vahram1995 Посмотреть сообщение
А у меня оно заработало
Ошибка выскакивает после нажатия на любую клавишу (при выходе из программы).

Цитата Сообщение от VaJI Посмотреть сообщение
у меня CodeBlocks тоже проглатывал
Это уже Code::Blocks.
1
Миниатюры
Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения  
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2013, 05:17 #15
Это Dev C++.
0
Миниатюры
Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 05:17
Привет! Вот еще темы с ответами:

Класс, обеспечивающий представление матрицы произвольного размера - C++
помогите, Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и...

Написать программу транспонирования квадратной матрицы произвольного размера - C++
Написать программу транспонирования квадратной матрицы произвольного размера. Значения элементов матрицы вводятся из файла. Результат...

Описать класс, обеспечивающий представление квадратной матрицы произвольного размера - C++
Составить описание класса, обеспечивающего представление квадратной матрицы произвольного размера. Предусмотреть возможность сложения и...

Написать программу, которая позволяет осуществить ввод матрицы произвольного размера - C++
Написать программу, которая позволяет осуществить ввод матрицы произвольного размера и выполнить следующие операции: - добавление к...


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

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

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