Podstawy C++ klasa której obiekty przechowują liczby całkowite - tablice 1,2 wymiarowa

0

Witam, mam pewne zadanie w którym nie wiem jak zacząć tzn, moja wiedza kończy się na przejściu zadania A dalej ciężko, dodam że c++ uczę się od kilku dni.

A.
Napisac klase Indeks, której obiekty posłuza do przechowywania informacji
o współrzednych (numerze wiersza i kolumny) w macierzy. Klasa ta powinna
posiadac:
• prywatne zmienne typu całkowitego do przechowywania informacji o
numerze wiersza (W) oraz kolumny (K),
• konstruktory, które powinny umozliwiac zainicjalizowanie zmiennych
W oraz K wartosciami 0, identycznymi, oraz róznymi,
• funkcje umozliwiajace ustawienie wartosci zmiennych X oraz Y,
• funkcje zwracajace wartosci zmiennych X oraz Y,
• funkcja zwracajaca string opisujacy obiekt typu Indeks w formacie
[W][K],
• funkcja Indeks dajSasiada(int ktory, int szerokosc, int wysokosc) zwracajaca
obiekt typu Indeks, który zawiera informacje o współrzednych
sasiada. Kazdy element macierzy ma 4 sasiadów opisanych parametrem
ktory, gdzie 1 oznacza górnego, 2-prawego, 3-dolnego, a 4 lewego
sasiada. Parametry szerokosc oraz wysokosc opisuja odpowiednio ilosc
kolumn oraz wierszy w macierzy dla której sa wykonywane obliczenia
w celu zastosowania periodycznych warunków brzegowych.
1

B.
Napisac klase Wektor, której obiekty przechowuja liczby całkowite (prywatna
tablica jednowymiarowa). Wyposazyc klase w:
• konstruktory, które pozwola na utworzenie wektora o zadanym rozmiarze.
Konstruktor powinien umozliwiac wypełnienie wektora zadana
wartoscia lub wartosciami losowymi z przedziału < a, b >. Czy klasa
powinna posiadac destruktor?
• Metody umozliwiajace ustawienie wartosci wektora pod zadanym indeksem
oraz pobranie wartosci przechowywanej w wektorze pod zadanym
indeksem.
• Metode zwracajaca sume elementów wektora.
• Metode zwracajaca ilosc elementów wektora wiekszych od sredniej
wartosci elementów wektora.
• Metode zwracajaca string opisujacy wektor w postaci {el1,el2,...,elN}.
C.
Napisac klase Macierz, której obiekty przechowuja liczby całkowite (prywatna
tablica dwuwymiarowa). Wyposazyc klase w:
• konstruktor umozliwiajacy tworzenie macierzy kwadratowej o rozmiarze
L oraz macierzy o dowolnym rozmiarze W × K wypełniajacy domyslnie
macierz zerami.
• Metode losowa(int a,int b), która wypełnia macierz liczbami losowymi
z przedziału < a, b >.
• Metode zwracajaca string opisujacy macierz w takiej formie, ze kazdy
wiersz jest wyswietlany w osobnym wierszu ekranu.
• Metode void ustaw(Indeks i, int wartosc), która umozliwia ustawienie
wartosci dla wybranego elementu macierzy.
• Metode int daj(Indeks i), która zwraca wartosc znajdujaca sie w macierzy
pod indeksem i.
• Metode Wektor dajWiersz(int w), która zwraca obiekt typu Wektor
zawierajacy elementy wiersza w macierzy.
2
• Metode Indeks najwiekszy(), która zwraca współrzedne elementu macierzy,
którego suma czterech elementów sasiednich jest najwieksza.
D.
Zapoznac sie z problemem konstruktora kopiujacego w przypadku klas zawierajacych
wskazniki (tablice) i dopisac w klasie Wektor oraz Macierz konstruktory
kopiujace.
E.
Zaprezentowac działanie napisanego kodu w funkcji main().

Z góry dziękuję za wskazówki. Pozdrawiam. M.

Załaączam to co udało mi się stworzyć:

CPP:

#include "Indeks.h"
#include <cstdio>

Indeks::Indeks()
{
    W=0;
    K=0;
}
Indeks::Indeks(int WK)
{
    //W=WK;
    ustawW(WK);
    //K=WK;
    ustawK(WK);
}
Indeks::Indeks(int W, int K)
{
    //this->W=W;
    ustawW(W);
    //this->K=K;
    ustawK(K);
}


Indeks::~Indeks()
{

}
void Indeks::ustawW(int W)
{
    if (W<0)
        this->W=W*(-1);
    else
        this->W=W;
}

void Indeks::ustawK(int K)
{
    if (K<0)
        this->K=K*(-1);
    else
        this->K=K;

}
string Indeks::tostring()
{
    char bufor[20];
    sprintf(bufor,"[%d][%d]",W,K);

    return string(bufor);
}

PLIK H:

#ifndef INDEKS_H
#define INDEKS_H
#include <string>
using namespace std;


class Indeks
{
    public:


        Indeks();
        Indeks(int WK);
        Indeks(int W, int K);

        virtual ~Indeks();

        void ustawW(int W);
        void ustawK(int K);

        string tostring();

    protected:
    private:

    int W,K;




};

#endif // INDEKS_H
0

Zamiast robić takie potworki:

if (W<0)
        this->W=W*(-1);
    else
        this->W=W;

Użyj odpowiedniego typu: void Indeks::ustawW(unsigned W)

Co do zadania B to poczytaj o dynamicznym przedzieleniu.
Zadania właściwie nie wymagają żadnej wiedzy tajemnej, wystarczy że wiesz jak to się zapisuje w języku C++, a jak nie wiesz to google podpowie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1