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
Zjistit počet nových příspěvků
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
Prosim pomoc — založil Ninus
Prosim o pomoc — založil bbeni
Moderátoři diskuze
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Duch

Nahlásit jako SPAM
IP: 82.117.143.–
God of flame

