Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Byl by někdo kdo by mi pomohl s tímto zadáním ??? :
Napište šablonu třídy Prvek, z jejichž instancí může být vytvořen spojový seznam hodnot typu T. Dále napište šablonu funkce:
a) ostream& vypis(ostream& os, Prvek<T>* s), která do výstupního proudu os vypíše hodnoty ze spojového seznamu s.
b) int pocetPrvku(Prvek<T>* s), jejímž výsledkem je počet prvků spojového seznamu s.
c) Prvek<T>* vytvor(T* p, int n), která vytvoří spojový seznam z n prvků pole p tak, že hodnoty ve spojovém seznamu mají stejné pořadí, jako v poli p.
d) void vypisObracene(Prvek<T>* s), která vypíše hodnoty ze seznamu s v opačném pořadí (použijte rekurzi).
e) Prvek<T>* odstranDuplicity(Prvek<T>* s), která ze seznamu s odstraní všechny prvky, jejichž hodnota je stejná s hodnotou předcházejícího prvku a vrátí ukazatel na upravený seznam.
f) T* vytvorPole(Prvek<T>* s), která hodnoty ze spojového seznamu s uloží do dynamicky vytvořeného pole. Ukazatel na pole bude výsledkem funkce.
g) int nejdelsiUsek(Prvek<T>* s), jejímž výsledkem je největší počet po sobě jdoucích prvků seznamu s, které mají stejnou hodnotu
h) Prvek<T>* vytvorObraceny(Prvek<T>* s), která vytvoří spojový seznam hodnot obsažených v seznamu s, ale v opačném pořadí.
i) Prvek<T>* odstranX(Prvek<T>* s, T x), která ze seznamu s odstraní všechny prvky, jejichž hodnota je x a vrátí ukazatel na upravený seznam.
j) Prvek<T>* bezX(Prvek<T>* s, T x), která vytvoří spojový seznam obsahující jeho prvky s výjimkou těch, které mají hodnotu x. Ukazatel na první prvek nového seznamu je výsledkem funkce.
no pak druhy zadani i :
1. Napište třídu realizující datový typ „fronta hodnot různých typů“ pomocí spojového seznamu. Operace:
- konstruktor
- destruktor
- vložení hodnoty x na konec fronty metodou insert
- výběr prvního prvku fronty metodou first
- odebrání prvního prvku fronty metodou remove
- výpis prvků fronty přetíženým operátorem <<
Třídu napište tak, aby použití kopírujícího konstruktoru a operátoru přiřazení znamenalo chybu při překladu.
Napište třídy potřebné k tomu, aby do fronty bylo možné vložit hodnoty typu int a char.
2. Napište třídu realizující datový typ „fronta hodnot různých typů“ pomocí dynamicky alokovaného pole. Operace:
- konstruktor
- kopírující konstruktor používající hlubokou kopii
- operátor přiřazení používající hlubokou kopii
- destruktor
- vložení hodnoty x na konec fronty metodou insert
- výběr prvního prvku fronty metodou first
- odebrání prvního prvku fronty metodou remove
- výpis prvků fronty přetíženým operátorem <<
Napište třídy potřebné k tomu, aby do fronty bylo možné vložit hodnoty typu int a char.
3. Napište třídu realizující datový typ „množina hodnot různých typů“ (neobsahuje duplicity) pomocí dynamicky alokovaného pole. Operace:
- konstruktor
- kopírující konstruktor používající hlubokou kopii
- operátor přiřazení používající hlubokou kopii
- destruktor
- vložení hodnoty x do množiny metodou insert
- test, zda množina obsahuje hodnotu x
- výpis prvků množiny přetíženým operátorem <<
Napište třídy potřebné k tomu, aby do množiny bylo možné vložit hodnoty typu int a char.
4. Napište třídu realizující datový typ „množina hodnot různých typů“ (neobsahuje duplicity) pomocí spojového. Operace:
- konstruktor
- kopírující konstruktor používající hlubokou kopii
- operátor přiřazení používající hlubokou kopii
- destruktor
- vložení hodnoty x do množiny metodou insert
- test, zda množina obsahuje hodnotu x
Napište třídy potřebné k tomu, aby do množiny bylo možné vložit hodnoty typu int a char.
5. Napište třídu realizující datový typ „pytel (bag) hodnot různých typů“ (může obsahovat duplicity) pomocí dynamicky alokovaného pole. Operace:
- konstruktor
- kopírující konstruktor používající hlubokou kopii
- operátor přiřazení používající hlubokou kopii
- destruktor
- vložení hodnoty x do pytle metodou insert
- test, zda pytel obsahuje hodnotu x
- výpis prvků pytle přetíženým operátorem <<
Napište třídy potřebné k tomu, aby do pytle bylo možné vložit hodnoty typu int a char.
6. Napište třídu realizující datový typ „pytel (bag) hodnot různých typů“ (může obsahovat duplicity) pomocí spojového seznamu. Operace:
- konstruktor
- kopírující konstruktor používající hlubokou kopii
- operátor přiřazení používající hlubokou kopii
- destruktor
- vložení hodnoty x do pytle metodou insert
- test, zda pytel obsahuje hodnotu x
- výpis prvků pytle přetíženým operátorem <<
Napište třídy potřebné k tomu, aby do pytle bylo možné vložit hodnoty typu int a char.
no jestli se na to nekdo koukne.....predem dekuji ....
Offline

Nechodíš ty na VŠPJ? (Nebo na ČVUT a máš p. Müllera?)
Offline

Něco jsem našla co by mohli být ty lehčí příklady, nevím nakolik to je správně:
// vypíše seznam
void Seznam::vypis(Seznam *Elem){
Seznam::Elem *pom=celo;
while (pom!=0) {
cout << pom->prvek << " ";
pom = pom->dalsi; }
}
//vypíše pocet prvků
int Seznam::pocetPrvku(Seznam *Elem){
Seznam::Elem *pom=celo;
int pp=0;
while (pom != NULL) { p++; pom = pom->dalsi; }
cout << pp;
}
//vypíše počet kladných čísel
int Seznam::pocetKladnych(Seznam *Elem){
Seznam::Elem *pom=celo;
int pk=0;
while (pom != NULL){ if(pom->prvek>0) pk++; pom = pom->dalsi; }
cout << pk;
}// vypíše seznam obráceně
void Seznam::vypisObracene(Seznam *Elem) {
Seznam::Elem *pom=celo;
if(pom==NULL) return;
while (pom!=NULL) {
vypisObracene(Elem);
cout << pom->prvek << " ";
pom = pom->dalsi;
}
}
//vypíše jen suda čísla
void Seznam::jenSude(Seznam *Elem) {
Seznam::Elem *pom=celo;
while (pom!=0) {
if(pom->prvek%2==0) {
cout << pom->prvek << " ";
pom = pom->dalsi; }
else pom = pom->dalsi;
}
}//odstraní všechna sudá čísla
Seznam* Seznam::odstranSude(Seznam* Elem){
Seznam::Elem *pom, *pr=NULL, *c=celo;
while(c!=NULL) {
if(c->prvek%2==0) {
if(pr){
pom=c->dalsi;
delete c; pr->dalsi=pom;
if(!pom) volny=0;
c=pom;
} else {
pom=celo->dalsi;
delete celo; celo=pom;
if(!pom) volny=0; }
}
else {
pr=c; c=c->dalsi; }
}
return this;
}//odstrani všechna čísla, která se rovnají svým sousedům
Seznam* Seznam::odstranDuplicity(Seznam* Elem){
Seznam::Elem *pom, *pr, *c=celo;
while(c!=NULL) {
if(c->prvek==pr->prvek){
pr->dalsi=c->dalsi;
pom=c;
c=c->dalsi;
delete pom;
if(!c) volny=0;
}
else {
pr=c;
c=c->dalsi;
}
}
return this;
}U těch druhých, když jsi udělal příklady do cvičení, tak uděláš i tyto - většina jde opsat ze skript nebo z příkladů ze cvičení.
Offline
Stránky: 1