Решения вопроса при написании лабы по ооп с++.

Доброго дня.
Решения вопроса при написании лабы по ооп с++.

Мне необходимо создать два массива, которые должны быть объектом класса и далее выполнять над ними различные манипуляции.

Вот листинг как main-a, так и хедера, в котором собственно и описан класс.
MAIN.CPP

#include <iostream>
#include <conio.h>
#include <windows.h>
#include <conio.h>
#include "class.h"
 
using namespace std;
 
int main()
{
SetConsoleOutputCP(1251);
 
cout<<"Вариант 35\n"<<endl;
cout<<"Если A > B, то вычислить B / A + 2"<<endl;
cout<<"Если A = B, то вывести на экран \"-57\""<<endl;
cout<<"Если A < B, то вычислить (A - B) / B"<<endl;
 
int size_a;
int size_b;
 
cout<<"Введите размер первого массива: "; cin>>size_a;
cout<<"Введите размер второго массива: "; cin>>size_b;
 
Array a(size_a);
Array b(size_b);
 
cout<<"Первый массив:"<<endl;
a.input(size_a);
cout<<"Второй массив:"<<endl;
b.input(size_b);
 
cout<<"Первый массив:"<<endl;
a.output(size_a);
cout<<"Второй массив:"<<endl;
b.output(size_b);
 
_getch();
 
return 0;
}

CLASS.H

#include <iostream>
 
using namespace std;
 
class Array
{
private:
int A[1];
public:
 
Array(int r)
{
int* A = new int[r];
}
 
~Array()
{
delete[] A;
}
 
void input(int size)
{
for(int i =0; i<size; i++)
{cout<<"Введите "<<i+1<<" элемент массива: "; cin>>A[i];}
}
 
void output(int size)
{
for(int i = 0; i < size; i++)
{ cout<<"Элемент массива №"<<i+1<<": "<<A[i]<<"\t"; cout<<"\n"; }
}
};

проблемма:

Введите размер первого массива: 5
Введите размер второго массива: 9
Первый массив:
Введите 1 элемент массива: 1
Введите 2 элемент массива: 2
Введите 3 элемент массива: 3
Введите 4 элемент массива: 4
Введите 5 элемент массива: 5
//вроде все норм
Второй массив:
Введите 1 элемент массива: 9
Введите 2 элемент массива: 8
Введите 3 элемент массива: 7
Введите 4 элемент массива: 6
//ПОЧЕМУ ИЗМЕНЯЕТСЯ РАЗМЕР???
Первый массив:
Элемент массива №1: 6//ПОЧЕМУ ПЕРВЫЙ ЭЛЕМЕНТ — ПОСЛЕДНИЙ ЭЛЕМЕНТ ВТОРОГО МАССИВА
Элемент массива №2: 2
Элемент массива №3: 3
Элемент массива №4: 4
Элемент массива №5: 5
Второй массив:
Элемент массива №1: 9
Элемент массива №2: 8
Элемент массива №3: 7
Элемент массива №4: 6

Решение:
объявить просто как указатель на int, а в конструкторе создавать массив типо так:

int * A;
public:
Array(int r){A = new int[r];}

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Загрузка...
Menu Title