Ahoj všichni, potřebovala bych pomoct s následujícím příkladem:
Vytvořte v jazyku C strukturovaný datový typ datum se členy den, mesic a rok. Poté vytvořte strukturovaný typ student se členy jmeno, prijmeni a narozen. Pro reprezentaci jednotlivých členů struktur zvolte vhodné datové typy.
Dále napište funkci int porovnej_vek(student s1, student s2), která porovná věk (resp. datum narození) daných studentů a vrátí hodnotu -1 v případě, že první student je starší, 1 v případě, že druhý student je starší a 0 v případě shodného data narození u obou studentů. Podle návratové hodnoty funce porovnej_vek pak ve funkci main vypište vhodný text na obrazovku.
Zatím jsem vytvořila toto, ale nefunguje mě to, někde je chyba a nemůžu přijít na to, kde. Mohl byste mi prosím někdo pomoct?
#include<stdio.h>
#include<stdlib.h>
typedef struct {char den, mesic; short rok;} datum;
typedef struct {char jmeno [10], prijmeni [10]; datum narozen;} student;
int porovnej_vek (char student_s1, char student_s2);
int porovnej_vek (char student_s1, char student_s2);
{
int rozdil = porovnej_vek(student_s1, student_s2);
rozdil = student_s1 > student_s2;
return -1;
rozdil = student_s1 = student_s2;
return 0;
rozdil = student_s1 < student_s2;
return 1;
}
int main()
{
char student_s1;
char student_s2;
student_s1 = ("Petr","Krizek", 18, 10, 1986);
student_s2 = ("Hana","Krizkova", 16, 3, 1990);
printf("%s je starsi nez %s", student_s1, student_s2);
getch ();
return 0;
}
Strukturované datové typy v jazyku C
- hedlre
- Nováček

-
- Registrován: 11. pro 2010
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Re: Strukturované datové typy v jazyku C
Co to hlasi za chybo? Pri kompilaci? Porovnava spatne?
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- kocourleo
- Začátečník

- Registrován: 15. dub 2007
- Bydliště: Brno
Re: Strukturované datové typy v jazyku C
Neumím C (jen jsem kdysi z rychlíku viděl základy), ale řekl bych, že jazyk c umíš hůře než já. Zkusím poradit. Ale vážně se na to koukni, moc tomu nerozumíš, třeba sem se podívej http://www.builder.cz/art/cpp/cpp_struct.html . Zkontroluj si ještě, jestli to správně porovnává (zkoušej různá data).
Kód: Vybrat vše
#include<stdio.h>
#include<stdlib.h>
typedef struct {short den; short mesic; short rok;} datum; /* definice struktury */
typedef struct {char jmeno[30]; char prijmeni[30]; datum narozen;} student;
int porovnej_vek (student student_s1, student student_s2) /* definice funkce - parametry jsou struktury! */
{
if (student_s1.narozen.rok > student_s2.narozen.rok)
return 1;
else if (student_s1.narozen.rok < student_s2.narozen.rok)
return -1;
else if (student_s1.narozen.rok == student_s2.narozen.rok) { /* zde by podmínka být nemusela */
if (student_s1.narozen.mesic > student_s2.narozen.mesic)
return -1;
else if (student_s1.narozen.mesic < student_s2.narozen.mesic)
return 1;
else if (student_s1.narozen.mesic == student_s2.narozen.mesic) {
if (student_s1.narozen.den > student_s2.narozen.den)
return -1;
else if (student_s1.narozen.den < student_s2.narozen.den)
return 1;
else if (student_s1.narozen.den == student_s2.narozen.den)
return 0;
}
}
}
int main() {
student student_s1 = {"Petr","Krizek", {18, 10, 1996}};
student student_s2 = {"Hana","Krizkova", {16, 3, 1990}};
int vysledek = porovnej_vek(student_s1, student_s2);
if (vysledek == 0)
printf("Studenti %s %s a %s %s jsou stejně stari.", student_s1.jmeno, student_s1.prijmeni, student_s2.jmeno, student_s2.prijmeni);
else if (vysledek > 0)
printf("Student %s %s je mladsi nez student %s %s .", student_s1.jmeno, student_s1.prijmeni, student_s2.jmeno, student_s2.prijmeni);
else if (vysledek < 0)
printf("Student %s %s je starsi nez student %s %s .", student_s1.jmeno, student_s1.prijmeni, student_s2.jmeno, student_s2.prijmeni);
getchar ();
return 0;
}Gigabyte GA-MA78G-DS3H, Athlon 64 X2 5050+, 6GB RAM, 2X WD6400AAKS 640GB, integrovaný zvuk i grafika, zdroj SEASONIC S12-550 Energy+, AverTV DVB-T Volar X, Samsung SH-203B, Logitech MX-518
- arxeiss
- Začátečník

- Registrován: 19. črc 2008
- Bydliště: Krmelín (předměstí Ostravy)
- Kontaktovat uživatele:
Re: Strukturované datové typy v jazyku C
Proč máš tam ten blok, ale není v mainu, ani nemá žádnou definici funkce? A v něm navíc voláš funkci kterou jsi nikde nedeklarovala ani nedefinovala.hedlre píše:Kód: Vybrat vše
... typedef struct {char jmeno [10], prijmeni [10]; datum narozen;} student; int porovnej_vek (char student_s1, char student_s2); int porovnej_vek (char student_s1, char student_s2); { int rozdil = porovnej_vek(student_s1, student_s2); rozdil = student_s1 > student_s2; return -1; rozdil = student_s1 = student_s2; return 0; rozdil = student_s1 < student_s2; return 1; } int main() ...
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
- hedlre
- Nováček

-
- Registrován: 11. pro 2010
Re: Strukturované datové typy v jazyku C
Moc všem děkuju za připomínky a pomoc. Jazyk c se učím teprve měsíc a opravdu v něm hodně plavu. Zkusím to podle vašich rad předělat. Díky moc.