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 22. 03. 2012 22:37

Kajo1354
Příspěvky: 34
Reputace:   
 

Studenti - Strukturovane datove typy

Dobrý deň,
mám za úlohu takýto príklad v c++ :

Vytvorte v jazyku C++ štrukturovaný datovy typ datum se členmi deň, mesiac a rok. Potom vytvorte
štrukturovaný typ študent s clenmi meno, priezvisko a narodenie. Pre reprezentáciu jednotlivých členu štruktur zvoľte vhodne datove typy.

Ďalej napíšte funkcie int porovnaj_vek(student s1, student s2), ktorá porovná vek (resp. dátum narodenia) daných studentov a vráti hodnotu -1 v prípade, ze prvý študent je starší, 1 v prípade, že druhy študent je starsí a 0 v prípade zhodného data narodenia u oboch studentov. Podla návratových hodnôt funkcie porovnaj vek potom vo funkcii main vypíšte vhodný text na obrazovku.

Príklad výstupu:

Pepa  Stary  je  starsi  nez  Adam  Novak.

Robil som to takýmto spôsobm ale tá funkcia porovnaj_vek mi poriadne nefunguje

#include <iostream>
#include <string>

using namespace std;

struct Datum
{
    int den;
    int mesiac;
    int rok;
};

struct Student
{
    string meno;
    string priezvisko;
    Datum narodenia;
};

int porovnaj_vek(Student s1, Student s2)
{
    if ((s1.narodenia.rok < s2.narodenia.rok) || (s1.narodenia.mesiac < s2.narodenia.mesiac) || (s1.narodenia.den < s2.narodenia.den))
        return -1;
    else if ((s1.narodenia.rok > s2.narodenia.rok) || (s1.narodenia.mesiac > s2.narodenia.mesiac) || (s1.narodenia.den > s2.narodenia.den))
        return 1;
    else if ((s1.narodenia.rok == s2.narodenia.rok) && (s1.narodenia.mesiac == s2.narodenia.mesiac) && (s1.narodenia.den == s2.narodenia.den))
        return 0;
}

int main()
{
    Student s1, s2;

    int cislo;

    cout << "Student 1:" << endl;
    cout << "Zadaj meno: ";
    cin >> s1.meno;
    cout << "Zadaj priezvisko: ";
    cin >> s1.priezvisko;
    cout << "Zadaj den narodenia: ";
    cin >> s1.narodenia.den;
    cout << "Zadaj mesiac narodenia: ";
    cin >> s1.narodenia.mesiac;
    cout << "Zadaj rok narodenia: ";
    cin >> s1.narodenia.rok;

    cout << endl << "Student 2:" << endl;
    cout << "Zadaj meno: ";
    cin >> s2.meno;
    cout << "Zadaj priezvisko: ";
    cin >> s2.priezvisko;
    cout << "Zadaj den narodenia: ";
    cin >> s2.narodenia.den;
    cout << "Zadaj mesiac narodenia: ";
    cin >> s2.narodenia.mesiac;
    cout << "Zadaj rok narodenia: ";
    cin >> s2.narodenia.rok;

    cislo = porovnaj_vek(s1, s2);

    if (cislo == -1)
        cout << endl << s1.meno << " " << s1.priezvisko << " je starsi ako " << s2.meno << " "  << s2.priezvisko << endl;
    else if (cislo == 1)
        cout << endl << s1.meno << " "  << s1.priezvisko << " je starsi ako " << s2.meno  << " " << s2.priezvisko << endl;
    else if (cislo == 0)
        cout << endl << s1.meno  << " " << s1.priezvisko << " je rovnako stary " << s2.meno  << " " << s2.priezvisko << endl;

    return 0;
}

Offline

 

#2 23. 03. 2012 00:05

Jookyn
Místo: Mar. Lázně / Praha
Příspěvky: 143
Reputace:   11 
 

Re: Studenti - Strukturovane datove typy

Ahoj,

funkce na porovnavani veku je spatne, schvalne podle ni koukni kdo je z techhle starsi a kde je chyba:

s1: 2012-01-01
s2: 1930-06-30

Variant jak ji napsat spravne je vic, urcite na neco prijdes...

Offline

 

#3 24. 03. 2012 22:33

Kajo1354
Příspěvky: 34
Reputace:   
 

Re: Studenti - Strukturovane datove typy

Nezistil som chybu v tej funkcii ako ked zadám napr. :
s1: 1991-12-5
s2: 1986-8-22

tak mi to nevypíše správne ale ked zadám
s1: 1991-12-05
s2: 1986-12-05

tak mi to vypíše správne

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson