Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / И наверное снова задача про матрицы... / 5 сообщений из 5, страница 1 из 1
30.09.2004, 19:45
    #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
30.09.2004, 19:56
    #32719154
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И наверное снова задача про матрицы...
Пачему public -данные ?
Пачему указатели а не ссылки (почти шутка)?
Пачему напалавину темплейт напалавину класс (типа размеры можно тоже параметром тэмплейта делать)?

А не заполнятется - известна.
Для массивав -то канструктары не вызываются. А ты-то ...
...
Рейтинг: 0 / 0
30.09.2004, 20:11
    #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
01.10.2004, 08:31
    #32719407
Siebentearbeit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И наверное снова задача про матрицы...
Взяли LISTVIEW - вот вам и матрица.
С любыми типами данных и с уже готовым отображением ;)
И сортировка даже есть.
И можно на ходу добавлять столбцы и строки.


Маленький мальчик на выставке художника-авангардиста:
"Смотри папа, как дядя без фотошопа мучится"
...
Рейтинг: 0 / 0
01.10.2004, 11:21
    #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
Форумы / C++ [игнор отключен] [закрыт для гостей] / И наверное снова задача про матрицы... / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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