powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / И наверное снова задача про матрицы...
5 сообщений из 5, страница 1 из 1
И наверное снова задача про матрицы...
    #32719135
Фотография Groove
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задали нам на втором высшем написать на классах работу с матрицей:
сперва сделать классы, а потом дополнять их в каждом конкретном задании.
Я начал с такой заготовки:
Код: plaintext
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.
 // Task1.cpp : Defines the entry point for the console application. 
 // 

#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>

 //вспомогательный макрос для вывода строки и значения 
 //*************************************************** 
#define PRINT_DEBUG(STR) cout << #STR " = " << STR << "\n";
 //*************************************************** 


 //This is class of row to my matrix 
template <class T>
class CRow{
  public:
    T* line;
    int cols, max_val;

     //constructor 
    CRow(int x, int max){
      cols    = x;
      max_val = max;
      line    = new T[cols];
      generate_row();
    }


     //generate rows 
    void generate_row(){
      int i;
      srand(max_val);
      for(i= 0 ; i<cols; i++){
        line = rand();
      }
    }

     [i]//destructor 
    ~CRow(){
      delete []line;
    }


     //reload operator 
    T& operator [](int idx){
      return line[idx];
    }
};

template <class T>
class CMatrix{
  typedef CRow<T>* RowDefinition;
  public:
     //items of matrix 
    RowDefinition* items;
     //rows, cols and max_val of matrix 
    int cols, rows, max_val;

     //constructor 
    CMatrix(int x, int y, int max){
      cols = x;
      rows = y;
      max_val = max;
      items = new RowDefinition[rows];
      generate();
    }


     //generate matrix 
    void generate(){
      int i;
      for(i= 0 ; i<rows; i++){
        items = new CRow<T>(cols, max_val);
      }
    }

     [i]//reload operator 
    CRow<T>& operator [](int idx){
       //"Index out of range" 
      return *items[idx];
    }
};

 //My Source 


int main(int argc, char* argv[])
{
  int x,y;
	 //printf("Hello World!\n"); 
   //create matrix 
	CMatrix<int> Matrix( 5 , 5 , 10 );

   //output our matrix 
  for(x= 0 ; x< 5 ; x++){
    printf("#");
    for(y= 0 ; y< 5 ; y++){
      printf("%6d |",Matrix[x][y]);
    }
    printf("#\n");
  }
	getch();

	return  0 ;
}

По идее у меня должна заполняться матрица произвольными значениями - не прокатывает...

Если имеет значение: WinXP, VC++ 6.0

Постоянно выводит значения:

# 71 | 16899 | 3272 | 13694 | 13697 |#
# 71 | 16899 | 3272 | 13694 | 13697 |#
# 71 | 16899 | 3272 | 13694 | 13697 |#
# 71 | 16899 | 3272 | 13694 | 13697 |#
# 71 | 16899 | 3272 | 13694 | 13697 |#


Подскажите пожалуйста в чем суть? Сильно не лажайте - первые шаги в сях...
...
Рейтинг: 0 / 0
И наверное снова задача про матрицы...
    #32719154
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пачему public -данные ?
Пачему указатели а не ссылки (почти шутка)?
Пачему напалавину темплейт напалавину класс (типа размеры можно тоже параметром тэмплейта делать)?

А не заполнятется - известна.
Для массивав -то канструктары не вызываются. А ты-то ...
...
Рейтинг: 0 / 0
И наверное снова задача про матрицы...
    #32719168
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv
ostavi parnea v pokoe, u nego glavnoe vse rabocee,

i pomoemu eto template masiva, esli uberati initializatiu randomom
to mojno iuzati i dlea drugih tipov u kotorih opredelenni opredelennie operatori.

2 Groove
uberi iz tsikla: srand(max_val);

etu initializatiu mojesi postaviti pered tem kak iuzaesi svoi class.
esli tebe nujno poluciti maxim kakoito to dlea labi soidiot i tak:

line = rand() % max_val;

a nasciot public i drugih directiv so vremenem naucissea.
...
Рейтинг: 0 / 0
И наверное снова задача про матрицы...
    #32719407
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взяли LISTVIEW - вот вам и матрица.
С любыми типами данных и с уже готовым отображением ;)
И сортировка даже есть.
И можно на ходу добавлять столбцы и строки.


Маленький мальчик на выставке художника-авангардиста:
"Смотри папа, как дядя без фотошопа мучится"
...
Рейтинг: 0 / 0
И наверное снова задача про матрицы...
    #32719742
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 zuzu
-Чё он говорит ?
-Я не слышу , машина работает...

2 Groove
Я что-то вообще не понял, как это у тебя компилируется...
Вот это
new RowDefinition[rows];
Требует наличие конструктора по умолчанию в CRow, но его там нет.

Далее, зачем лишний уровень указателей в
RowDefinition* items;
? Можно просто массив CRow сделать и расслабиться.

Да, и насчет инициализации массивов я был не прав - все правильно,
поскольку ты явно каждый элемент массива инициализируешь.
А строки у тебя одинаковые получаются, потому что для каждой
строки инициализируешь счетчик псевдослучайных чисел вызовом
srand(max_val);
, а при этом он дает детерменированные последовательности.
Это стандартный прикол псевдослучайных генераторов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
     //generate rows 
    void generate_row(){
      int i;
      srand(max_val);  // убирай это в головную программу или еще куда, чтобы только один раз выполнялось. 
      for(i= 0 ; i<cols; i++){
        line[i] = rand();
      }
    }
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / И наверное снова задача про матрицы...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]