Prosím pomoc s tímto úkolem.
-
Pomocí nástroje map vytvořte třídu, která bude reprezentovat pole celých čísel, které může mít kladné i záporné indexy.
Vytvotře konstruktor, který umožnňí pole inicializovat na libovolný interval (např -5,5) a nově vytvořené pozice vyplní nulami.
Dále vytvořte metody, které pole vypíše na standardní výstup a umožní uložit hodnotu do pole.
Pomocí přetíženého operátoru() vytvo5te metodu, která umožní vrátit hodnotu uloženou v matice na určité pozici(použití číslo=instance())
Pokud se užitvatel pokusí zapsat na neexistující pozici nebo z ní číst vyhodí se libovolná vámi zvolená standardní výjimka.
V hlavní funkci programu vytvořte vzorovou instanci pole, zapište do něj hodnotu a do jiné proměnné uložte hodnotu uložinou na určité pozici v poli.
-
Vůbec nevím, jak mám začít. Hlavně ten interval a posléze jednotkami z intervalu naplnit to asociativní pole. Děkuji moc, jak za pomoc, tak za případné naťuknutí.
Fórum › C / C++
Prosím pomoc stl MAP
do tridy si ulozis rozsah.. ten pri pristupu k prvkum budes muset nejprve otestovat jestli neni mimo...
pak udelas asociativni pole .. klicem bude prekvapive int...
udelas for cyklem vynulovani.. od pocatecniho do posledniho indexu, ktery mas zadan
pristup k idexu bude vesmes jen zkontrolovani zdali je v rozsahu a kdyz ano tak se pouzije index jak to umi map
nic tezkyho
#include <iostream>
#include <iterator>
#include <map>
#include <exception>
#include <stdexcept>
using namespace std;
class Deska{
private:
map<int,int> deska;
int dolnimez;
int hornimez;
public: Deska(int dolnimez, int hornimez)
{this->dolnimez = dolnimez; this->hornimez = hornimez;
int p;
for(p = dolnimez; p <= hornimez; p++)
{
deska.insert(make_pair(p, 0));
}
}
int vypis()
{
map<int,int>::iterator i;
cout << "Tady vypisu prvky" << endl;
for(i = deska.begin(); i != deska.end(); i++)
{
cout << "(" << i->first << "," << i->second << ")\t";
}
cout << endl;
}
int vloz(int x,int y) throw (out_of_range)
{
if (x>= dolnimez and x<=hornimez)
cout << "Povoleno" << endl;
else throw out_of_range("Vlozeni mimo rozsah pole"); }
int operator()(int z) {
cout << "volan operator () s par. " << z << endl;
cout << "Vyhledavam prvky s klicem" << endl;
cout << "Deska s indexem : "<<z<<" = " <<"ma klic : " <<deska[z] << endl << endl;
}
};
int main()
{
Deska *Nova= new Deska(-4,4);
Nova->vypis();
try{ Nova->vloz(8,3); }
catch (out_of_range &o) { cerr << o.what() << endl; }
Nova->operator()(2);
system("pause");
}
ten Rozsah bych resil jako predani dvou parametru.. urcite nedelej nacitani z klavesnice v te tride...
vypis muze zustat..
vynulovani delej primo v konstruktoru, ne mimo.. mas to i v zadani ze to mas vynulovat tam
vyjimka se haze pomoci Throw() .. nekde budou informace..
jeste ti chybi pretizenej operator pro pristup
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
STL map, ci existuje prvok... — založil Tom@sQo
Pomoc.... nějaká chybka prosím pomoc - více v podrobném popisu — založil tkstudent
Vector vs map ( map nefunguje) — založil xJakubS
C - prosim o pomoc — založil krajco
Prosim o pomoc — založil bbeni
Moderátoři diskuze