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

Простенький вопрос.... просто хочу разобраться в классах =) - C++

Восстановить пароль Регистрация
 
JoK3r
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 7
27.10.2009, 20:45     Простенький вопрос.... просто хочу разобраться в классах =) #1
что в этом коде не так?

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
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <stdlib.h>
const n=4;
class matr{
double a[n][n];
public:                            
matr (double aa[n][n]);
void print();
void init();
 };
 
void matr::init(){
a[1][1]=1;
a[1][2]=0.42;
a[1][3]=0.54;
a[1][4]=0.66;
a[2][1]=0.42;
a[2][2]=1;
a[2][3]=0.32;
a[2][4]=0.44;
a[3][1]=0.54;
a[3][2]=0.32;
a[3][3]=1;
a[3][4]=0.22;
a[4][1]=0.66;
a[4][2]=0.44;
a[4][3]=0.22;
a[4][4]=1;
}
 
void matr::print(){ int i,j;
for (i=0; i<n; i++){
for (j=0; j<n; j++){
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
}
 
 
main(){
a.init;
a.print;
getch(); return 0;
}
при запуске говорит переменная а не объявленна..... что делать? кто нибудь может объяснить принцип действия классов =) ? Заранее благодарен....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2009, 20:45     Простенький вопрос.... просто хочу разобраться в классах =)
Посмотрите здесь:

C++ Простенький winlock
C++ Простенький массивчик
C++ просто вопрос=)
C++ Простенький калькулятор
простенький массив C++
C++ Хочу написать собственный простенький 3d движок с генерацией карты
C++ Простенький интерпретатор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
27.10.2009, 20:56     Простенький вопрос.... просто хочу разобраться в классах =) #2
Попробуй double a[n][n]; поместить в раздел public:
JoK3r
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 7
27.10.2009, 20:58  [ТС]     Простенький вопрос.... просто хочу разобраться в классах =) #3
нет, та же ошибка....
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.10.2009, 21:14     Простенький вопрос.... просто хочу разобраться в классах =) #4
Очень много в этом коде не так.
Класс описан, но ни одного экземпляра его не создано.
К функциям обращение должно быть не "a.init;" ,а "a.init();"
У вас n=4, описаны элементы массива с индексами начинающимися с 1, а выводите на печать с 0 индекса.
Если будете создавать экземпляр класса по умолчанию, то необходимо описать конструктор по умолчанию.
А строка 9 вообще непонятно зачем. Может вы хотели сделать конструктор, тогда его нужно доделать.
Немного подправил код:
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
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <stdlib.h>
const n=5;
class matr{
double a[n][n];
public:                            
//matr (double aa[n][n]);
void print();
void init();
matr(){};
 };
 
void matr::init(){
a[1][1]=1;
a[1][2]=0.42;
a[1][3]=0.54;
a[1][4]=0.66;
a[2][1]=0.42;
a[2][2]=1;
a[2][3]=0.32;
a[2][4]=0.44;
a[3][1]=0.54;
a[3][2]=0.32;
a[3][3]=1;
a[3][4]=0.22;
a[4][1]=0.66;
a[4][2]=0.44;
a[4][3]=0.22;
a[4][4]=1;
}
 
void matr::print(){ int i,j;
for (i=1; i<n; i++){
for (j=1; j<n; j++){
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
}
 
 
main(){
    matr a;
a.init();
a.print();
getch(); return 0;
}
JoK3r
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 7
27.10.2009, 21:21  [ТС]     Простенький вопрос.... просто хочу разобраться в классах =) #5
valeriikozlov, благодарю, помогло...
А не могли бы Вы подсказать, если в С++ эквивалент паскалевского writeln(a:5), то есть сколько пробелов после переменной, а то мой массив идет сплошным текстом в 4 строки.


_____________
и еще вопрос...
что значат строки 12-13 и 45 в Вашем коде?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.10.2009, 21:41     Простенький вопрос.... просто хочу разобраться в классах =) #6
С Паскалем я не дружу.
Для увеличения количества пробелов строку 37 переделайте так:
C++
1
cout<<a[i][j]<<"      ";
Строка 13 эта Ваша строка, я ее не трогал, а в строке 12 объявлен конструктор по умолчанию (который ничего не делает, но очень нужен).
В строке 45 объявлен экземпляр Вашего класса matr. То что делали Вы - это называется описанием класса, а работать нужно только с экземплярами класса.
Нельзя же писать так: int=3; (Нужно объявить экземпляр int, а потом с ним работать). В данном случае тип int аналогичен matr (matr - тоже тип данных, которые Вы сами создали).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2009, 21:56     Простенький вопрос.... просто хочу разобраться в классах =)
Еще ссылки по теме:

Одномерные динамические массивы. Хочу разобраться в коде C++
AfxBeginThread MFC C++ Хочу разобраться C++
Одномерный динамический массив. Хочу разобраться (понять) код программы C++
C++ Stack. определение шаблона функции testStack. (хочу разобраться в коде)

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

Или воспользуйтесь поиском по форуму:
Даемоник
 Аватар для Даемоник
41 / 41 / 3
Регистрация: 22.05.2009
Сообщений: 97
27.10.2009, 21:56     Простенький вопрос.... просто хочу разобраться в классах =) #7
Посмотрел ваш код. Для начала может сойти и вот так.
Ваша программа
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
#include <conio.h>
#include <iostream>
using namespace std;
 
 
class matr
{
        double a[4][4];
    public:     
        void print();
        void init();
};
 
 
void matr::init()
{
    a[0][0]=1;
    a[0][1]=0.42;
    a[0][2]=0.54;
    a[0][3]=0.66;
    a[1][0]=0.42;
    a[1][1]=1;
    a[1][2]=0.32;
    a[1][3]=0.44;
    a[2][0]=0.54;
    a[2][1]=0.32;
    a[2][2]=1;
    a[2][3]=0.22;
    a[3][0]=0.66;
    a[3][1]=0.44;
    a[3][2]=0.22;
    a[3][3]=1;
}
 
void matr::print()
{ 
    int i,j;
    for (i=0; i<4; i++)
    {
        for (j=0; j<4; j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";
    }
}
 
 
int main()
{
    matr a1;
    a1.init();
    a1.print();
    _getch(); 
    return 0;
}
Yandex
Объявления
27.10.2009, 21:56     Простенький вопрос.... просто хочу разобраться в классах =)
Ответ Создать тему
Опции темы

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