Matematické Fórum

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

#1 02. 04. 2020 20:54

Tmitheadway
Zelenáč
Příspěvky: 16
Reputace:   
 

Spojový seznam

Zdravím,

prosím o pomoc!!! Mohl by mi někdo říct, proč mi v kodu píše Use of undeclared identifier UsporadanySeznam

tady je main

#include <iostream>
#include "UsporadanySeznam"
using namespace std;

/*Ukazka testovaci funkce pro metodu najdiPrvek() */
void vypisPrvek(UsporadanySeznam &t, int klic)
{
    Prvek* p = t.najdiPrvek(klic);
    if (p)
    {
        cout << "Nalezen prvek: ";
        cout << "(" << p->klic << "," << p->hodnota << ") ";
        cout << endl;
    }
    else
        cout << "Prvek " << klic << " nenalezen. \n";
}

void test()
{
    UsporadanySeznam t;
   
    /* Vkladani prvku: */
    t.vlozPrvek(9, "pracovni stul");
    t.vlozPrvek(3, "kancelarska zidle");
    t.vlozPrvek(6, "PC");
    t.vlozPrvek(6, "notebook");
    t.vlozPrvek(12, "lampa");
   
    t.vypis();
   
    /* Nalezeni prvku: */
    Prvek* p = t.najdiPrvek(9);
    if (p)
        cout << "Prvek 9 nalezen.\n";
    else
        cout << "Prvek 9 nenalezen.\n";
    vypisPrvek(t, 9);
    vypisPrvek(t, 1);
   
    /* Smazani prvku: */
    t.smazPrvek(10);
    t.smazPrvek(12);
    t.smazPrvek(6);
    t.smazPrvek(3);
    t.smazPrvek(9);
    t.smazPrvek(3);
   
    t.vypis();
}

int main()
{
    test();
    return 0;
}


tady je zdroják

#include "UsporadanySeznam.h"

UsporadanySeznam::UsporadanySeznam()
{
    prvni = new Prvek();
    zarazka = prvni;
}

UsporadanySeznam::~UsporadanySeznam()
{
    Prvek* P;
    P = prvni;
    while (prvni != zarazka)
    {
        P = prvni;
        prvni*= prvni->
        delete p;
    }
}

void UsporadanySeznam::najdiPrvek(int klic)
{
    Prvek* p = prvni;
    while (p != zarazka && klic < p->klic)
    {
        p = p->dalsi;
        if (p != zarazka && klic == p ->klic)
        {
            return p;
        }
        return nullptr;
    }
}



Prvek* UsporadanySeznam::vlozPrvek(int klic, const std::string& hodnota)
{
    if(prvni == zarazka || klic < prvni->klic)
    {
        Prvek *p = new prvek;
        p->dalsi = prvni;
        prvni = p;
        return;
    }
   
    Prvek *p = prvni;
    if ( prvni -> klic > klic || prvni == zarazka)
    {
        Prvek* n = new Prvek();
        n -> klic = klic;
        n -> hodnota = hodnota;
        n -> dalsi = prvni;
        prvni = n;
        return;
    }
    Prvek *p = prvni;
    while(p-> dalsi != zarazka && p->dalsi->klic < klic)
        p = p->dalsi;
    Prvek *n = new Prvek();
    n -> klic = klic;
    n -> hodnota = hodnota;
    n ->dalsi = p-> dalsi;
    p -> dalsi = n;
    if( p-> dalsi->klic == klic)
    {
        p->dalsi = zarazka &&
        p->dalsi ->klic == klic;
        p->dalsi -> hodnota == hodnota;
        return;
    }
   
void UsporadanySeznam::smazPrvek(int klic)
{
    if(*p == 0)
    {
        return;
    }
    Prvek *p = prvni;
    if ( prvni -> klic > klic || prvni == zarazka)
           
    {
        prvni = p->dalsi;
        delete p;
        return;
    }
       
       
       
    if (p != zarazka && klic == p ->klic)
        delete p;
}
   
void UsporadanySeznam::vypis()
{
    Prvek *p = prvni;
    cout << "UsporadanySeznam:" << endl;
    while(p)
    {
        cout  << p->klic << p->hodnota << endl;;
        p = p* dalsi;
    }
}
   
   
   
   
Díky za vysvětlení

Offline

 

#2 03. 04. 2020 08:08 — Editoval LukasM (03. 04. 2020 08:10)

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: Spojový seznam

↑ Tmitheadway:
V jednom souboru vidím #include "UsporadanySeznam.h", ve druhém #include "UsporadanySeznam". Bylo by dobré si ujasnit, který z nich chci používat. Ale čekal bych spíš chybu typu "include file not found" (ale možná jsi nějakým zázrakem vytvořil oba soubory a v jednom z nich (nebo v obou) ta definice není).

Mimochodem, opět se ti nepodařilo sem dát kompletní kód. Obsah těch headerů je klíčový.
Popravdě když vidím tvůj kód a tvé dotazy, nejsem si jistý, jestli jsi nějakou část výuky nepřeskočil. Např. nemá smysl se pokoušet používat templaty, pokud si sám neporadíš s touto chybou.

Offline

 

#3 03. 04. 2020 12:36

Tmitheadway
Zelenáč
Příspěvky: 16
Reputace:   
 

Re: Spojový seznam

↑ LukasM:

Ano, zobrazuje se mi "include file not found". Za úkol mám dát jen těla do zdrojáku. Ten main a zdrojový kód, takže ty headery jsem už měl k dispozici od paní profesorky.

Offline

 

#4 03. 04. 2020 14:46 — Editoval LukasM (03. 04. 2020 14:46)

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: Spojový seznam

Use of undeclared identifier UsporadanySeznam

Ano, zobrazuje se mi "include file not found".

Kompilátor ti přesně řekl, co je za problém. Je třeba ty chyby řešit v pořadí v jakém se objevují. Takže v tomto případě se zastavil na řádku #include "UsporadanySeznam" a napsal, že tento soubor nevidí. Teprve v důsledku toho si pak dále stěžuje, že nikde nepotkal definici té třídy. Je naprosto přímočaré, co je potřeba s tím udělat.


ty headery jsem už měl k dispozici od paní profesorky.

To je sice hezké, ale my nejsme tvoje profesorka a nikdo tu nemůže vědět, co v tom headeru je nebo není.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson