Strukturované datové typy v jazyku C

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
hedlre
Nováček
Nováček
Registrován: 11. pro 2010

Strukturované datové typy v jazyku C

Příspěvek od hedlre »

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;
}
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: Strukturované datové typy v jazyku C

Příspěvek od OndraSter »

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ů
kocourleo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. dub 2007
Bydliště: Brno

Re: Strukturované datové typy v jazyku C

Příspěvek od kocourleo »

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
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Strukturované datové typy v jazyku C

Příspěvek od arxeiss »

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()
...
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.
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
hedlre
Nováček
Nováček
Registrován: 11. pro 2010

Re: Strukturované datové typy v jazyku C

Příspěvek od hedlre »

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.
Odpovědět

Zpět na „Programování a web“