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 29. 11. 2011 17:21

DeMidix
Příspěvky: 63
Reputace:   
 

Signatura

Zdravím,

Mám zadaný úkol a potřeboval bych k němu napsat signaturu.
Moc teda nevím co to signatura vůbec je.

Zápis studentů na předměty
Napište program pro vedení a sledování zápisu studentů na předměty. Program
nejprve přečte textový soubor se studenty (pro každého studenta je uvedeno
rodné číslo a jméno a příjmení) a textový soubor s vypsanými předměty (pro
každý předmět je uvedena zkratka, název předmětu a počet kreditů). Program
pak umožňuje vytvářet a sledovat tabulku zápisů studentů na předměty.

Operace:

- vložit zápis studenta na předmět (dvojice rodné číslo studenta a zkratka
předmětu)
- zrušit zápis studenta na předmět
- pro daného studenta vypsat předměty, které má zapsané
- pro daný předmět vypsat seznam studentů, kteří mají předmět zapsán
- vypsat seznam všech studentů a jejich zapsané předměty
- vypsat seznam všech předmětů spolu se studenty, kteří je mají zapsané
- uložit stav zápisu do souboru
- přečíst stav zápisu ze souboru
- atd.

Tabulku studentů budu realizovat pomocí:

1. seřazeného pole

Mohl by mi někdo pomoct nebo poradit?

Díky moc.

Offline

 

#2 06. 12. 2011 13:40

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Signatura

Mozna, ze uz ted pisu pozde. Take jsem nevedel, co je signatura :-) Nasel jsem to napriklad tady. Je tam psano: "Signatura – název metody + typy parametrů", nevim, jestli je to to, co mate napsat, a jestli mate napsat signaturu(y) i cely program, nebo jenom signaturu(y), tak jestli to porad potrebujes, tak se kdyztak ozvi (ale nevim, jestli budu vedet :-) ).

Offline

 

#3 06. 12. 2011 16:26

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

Ahoj,

stále bych to potřeboval, moc nevím jak na to.

Stači napsat jen signaturu těch metod a reprezentaci.

Offline

 

#4 07. 12. 2011 12:45

Kebulak
Zelenáč
Místo: Kařez
Příspěvky: 11
Reputace:   
Web
 

Re: Signatura

Zdravím,
Lumikodlak má pravdu.
Signatura je název metody + typy parametrů + klíčová slova. Je to vše, co zvládne zkontrolovat překladač (zde je rozdíl signatura vs. kontrakt).

Pokud je tedy v  zadání:

vložit zápis studenta na předmět (dvojice rodné číslo studenta a zkratka předmětu)

Já bych asi napsal signaturu takové metody třeba nějak takto:

Code:

private void zapisStudenta(String rodneCislo, String zkratkaPredmetu)

Ono to nějak půjde.

Offline

 

#5 07. 12. 2011 13:40 — Editoval frank_horrigan (07. 12. 2011 13:42)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Signatura

Zdravím,

já bych udělal signatury (prototypy) metod asi tímto způsobem:

Code:

class Student
{
.
.
.
public:
bool StudentPridat(int RC, char *Predmet); // nebo char Predmet[], ekvivalentní zápis
bool StudentZrusit(int RC, char *Predmet);
int StudentMaZapsano(int RC);
int PredmetMaStudenty(char *Predmet);
int StudentVypis();
int PredmetVypis();
//etc..
}

Ty boolky proto, aby se zjistilo, zda se přidání nebo odebrání podařilo, či nikoli (selhat přidání může pokud pole struktur, která drží studenty a co mají zapsané je plné (hodit výjimku, nebo alespoň otestovat návratovou hodnotu), stejně tak těžko můžeš zrušit zápis u studenta, který neexistuje, a nebo daný předmět zapsaný nemá (opět, vyhodit výjimku)

Ty inty by mohly vracet počet příslušných záznamů, které se vypíšou...

Implemenotvat ty metody doufám necheš :D


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#6 07. 12. 2011 14:30

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

Jasny.

Díky moc.

A když tam mam napsat ještě Reprezentaci k tomu, tak rozumím tomu dobře když si myslím že reprezentace je vlastně popis toho program, co bude provádět nebo vytvářet? Nebo je to nějaký popis těch metod popř. tříd? (např. class Student, Predmet)

Offline

 

#7 07. 12. 2011 16:13

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

A tu inplementaci metod by jste řešili jak? Stači jenom náznak..:)

Offline

 

#8 07. 12. 2011 16:24 — Editoval frank_horrigan (07. 12. 2011 16:25)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Signatura

No, céčkaři (ten part co jsem ti dal nahoře je céčkovej (C++, samozřejmě, když se bavíme o třídách)) používáme zavedených termínů deklarace prototypu (funkce/metody) (tomu říkáš signatura), definice funkce (tedy to co ta funkce/metoda skutečně dělá), a její volání (použití) v nějakém prováděcím kódu... Reprezentace metody může být cokoli, já zkoušel googlit, ale moc jsem toho nevygúglil. Určitě ve škole, která ti zadala tento úkol, nebo v literatuře, jsi-li samouk by mělo být definováno, co který pojem znamená - tak se zkus pozeptat vyučujícího, případně se podívat na první strany literatury, a zjisti, co je tedy vlastně zadáním, pak Ti s tím určitě budeme schopní pomoci

Jednu tu implementaci ti napíšu, ostatní z toho odvodíš


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#9 07. 12. 2011 16:39

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

Využívám spíš literaturu a google.

Taky jsem googlil ohledně té Implementace a signatury, jelikož jsem zpočátku moc nevěděl co je to signatura a reprezentace, a moc jsem toho nenašel.

Vyzkouším nějakou literaturu a nějak to spáchám.

Jinak, díky za tu jednu implementaci, zbytek odvodím od toho.

Offline

 

#10 07. 12. 2011 16:46 — Editoval frank_horrigan (07. 12. 2011 16:54)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Signatura

Code:

typedef struct StudentiUdaje
{
   int RodneCislo;
   char Predmet[5]; // ctyri pismena na kod predmetu staci
   bool IsUsed;
} udaje, *pudaje;

class Student
{
    private:
    udaje studenti[500]; // pole struktur, kapacita 500 studentu
    int GetFree();
    public:
    bool StudentPridat(int RC, char *Predmet);
};

int Student::GetFree() // zjistime volne misto v poli struktur, je-li nejake, a tam budeme psat. Pisu to do 
//nesetrideneho pole, tridici algoritmus si jiste navrhnes, nebo pouzijes nejaky z knihovny
{
   int i;
   for(i = 0; i < 500; i++)
   {
       if(!studenti[i].IsUsed) break;
    }
    return i;
}

bool Student::StudentPridat(int RC, char *Predmet)
{
   int free = GetFree();
   if(free == 500) return false; // pokud neni volne misto, funkce vrati false, a tento stav si osetris
   studenti[free].RodneCislo = RC;
   studenti[free].Predmet = Predmet;
   studenti[free].IsUsed = true; //nezapomenn nastavit priznak, ze toto misto je uz obsazene, jinak priste 
//funkce GetFree vrati zase tenhle stejny index, a data si prepises
   return true;
}

int main() {.......}

Snad jsem tam neudělal nějakou syntaktickou chybu, pokud ano, samozřejmě mně upozorněte, opravím


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#11 07. 12. 2011 16:51

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

Super, mrknu na to a zkusim dodělat zbytek, díky.

Hodim to kdyžtak se pro kotrolu, kdybych tam měl náhodou nějaké sytaktické chyby.

Offline

 

#12 18. 12. 2011 15:00

DeMidix
Příspěvky: 63
Reputace:   
 

Re: Signatura

Třída Student:
Student( _ ) : unsigned int -> Student
FromData( _ ): Student, char *-> bool
AddSubject( _ ): Student, unsigned int -> void
RemoveSubject( _ ): Student, unsigned int -> void
GetID(): Student -> unsigned int
GetBirthCertificateNumber(): Student -> int
GetFirstName(): Student -> string
GetSecondName():Student -> string
GetName():Student -> string
GetSubjects():Student -> vector<unsigned int>

Třída Subject:
Subject( _ ) : unsigned int -> Subject
FromData( _ ): Subject, char *-> bool
AddStudent _ ): Subject, unsigned int -> void
RemoveStudent( _ ): Subject, unsigned int -> void
GetID(): Subject -> unsigned int
GetAbbreviation(): Subject -> string
GetName(): Subject -> string
GetCredits(): Subject -> unsigned int
GetStudents():Subject -> vector<unsigned int>

Třída Registrations:
Registrations : -> Registrations
FromFiles( _ , _ ): Registrations, string, string -> bool
FromFile( _ ): Registrations, string -> bool
ToFile( _ ): Registrations, string -> bool
AddStudent( _ ): Registrations, string -> bool
AddSubject( _ ): Registrations, string -> bool
RemoveStudents( _ ): Registrations, vector<unsigned int> -> void
RemoveSubjects( _ ): Registrations, vector<unsigned int> -> void
RegisterStudentsToSubjects( _ , _ ): Registrations, vector<unsigned int>,
vector<unsigned int> -> void
DeregisterStudentsFromSubjects( _ , _ ): Registrations, vector<unsigned int>,
vector<unsigned int> -> void
GetStudent( _ ): Registrations, unsigned int -> Student
FindStudent( _ , _ , _ ): Registrations, const char *, string, string -> vector<unsigned
int>
FindStudent( _ ): Registrations, string -> vector<unsigned int>
GetSubject( _ ): Registrations, unsigned int -> Subject
FindSubject( _ , _ , _ ): Registrations, const char *, string, string -> vector<unsigned
int>
FindSubject( _ ): Registrations, string -> vector<unsigned int>
ShowStudents(): Registrations, string, vector<unsigned int> -> void
ShowStudentsInDetail(): Registrations, string, vector<unsigned int> -> void
ShowSubjects(): Registrations, string, vector<unsigned int> -> void
ShowSubjectsInDetail(): Registrations, string, vector<unsigned int> -> void
Clear(): Registrations-> void

Muže bát i takhle?

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson