Pomoc s úkolom – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pomoc s úkolom – C / C++ – Fórum – Programujte.comPomoc s úkolom – C / C++ – Fórum – Programujte.com

 

Jaroslav
~ Anonymní uživatel
14 příspěvků
13. 12. 2009   #1
-
0
-

Zdarec lidi, mám tady takovej problém a potřeboval bych trošku poradit :-)..
Mám udělat úkol z programování, jakýkoliv chci, ale doposud sme dělali jen se třema knihovnama a to -
<stdio.h>
<stdlib.h>
<time.h>
Měli byste nějaký návrhy, co za úlohu by se na tohle dalo udělat? Má to být něco jako seminární práce za půl roku a já si vůbec nevím rady s tématem :-).. Myslel sem udělat něco jako převodník měn ?!.. Myslíte, že by to šlo? popřípadě nějaký nápadek jestli by byl? Mám nějaký začátek, ale nevím jak dál, tak kdybych mohl poprosit o nějakou pomoc :-) Díky Jarda

Nahlásit jako SPAM
IP: 90.177.127.–
m->29+6
Super člen
14. 12. 2009   #2
-
0
-

Sprav radšej prevodník sústav a ako bonus tam daj prevod medzi rímskymi číslami ;-)

Nahlásit jako SPAM
IP: 147.229.208.–
KroYc0
Newbie
16. 12. 2009   #3
-
0
-

Ahojte prgramátoři, potřeuju poradit s tímto úkolem:

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.

Příklad výstupu:

Pepa Stary je starsi nez Adam Novak.

Povolené knihovny: stdio.h, stdlib.h
tohle to jsem zatím vytvořil, ale zdá se tam chyba, prosím vás podrobte to kritice, aby to fungovalo jak má, děkuji KroYc.

#include <stdio.h>
typedef struct {char den, mesic, 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)
{
char 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);

return 0;
}

Nahlásit jako SPAM
IP: 88.146.188.–
sputnikone+1
Věrný člen
16. 12. 2009   #4
-
0
-

Rok bych reprezentoval spíš short int, jinak studenti nejsou typu char, ale student, sám jsi ho definoval. Pokud ho ches inicializovat, tak to datum by mělo jít do závorek (pokud si to dobře pamatuju). Ta funkce je úplně špatně. PĚokud chceš vědět, kdo je starší, bohatě stačí tohle.

int porovnej_vek (student s1, student s2) 

{
return student_s1 > student_s2;
}

// a potom použít

if(porovnej_vek(student_s1, student_s2)) printf("%s je starsi nez %s", student_s1, student_s2);

Nahlásit jako SPAM
IP: 147.251.201.–
KroYc0
Newbie
16. 12. 2009   #5
-
0
-

sputnikone napsal:
Rok bych reprezentoval spíš short int, jinak studenti nejsou typu char, ale student, sám jsi ho definoval. Pokud ho ches inicializovat, tak to datum by mělo jít do závorek (pokud si to dobře pamatuju). Ta funkce je úplně špatně. PĚokud chceš vědět, kdo je starší, bohatě stačí tohle.

int porovnej_vek (student s1, student s2) 
{
return student_s1 > student_s2;
}

// a potom použít

if(porovnej_vek(student_s1, student_s2)) printf("%s je starsi nez %s", student_s1, student_s2);

i po těch úpravách to dělá chybu...

Nahlásit jako SPAM
IP: 88.146.188.–
sputnikone+1
Věrný člen
16. 12. 2009   #6
-
0
-



int porovnej_vek (student s1, student s2)
{
int vysl = 0;

if(s1.narozen.rok > s2.narozen.rok) then vysl = 1
else if(s1.narozen.rok == s2.narozen.rok && s1.narozen.mesic > s2.narozen.mesic) then vysl = 1;
else if(s1.narozen.mesic == s2.narozen.mesic && s1.narozen.den > s2.narozen.den) then vysl = 1;

return vysl;
}


Nic lepšího teď asi nevypotím (zrovna se probouzím)

Nahlásit jako SPAM
IP: 147.251.201.–
m->29+6
Super člen
16. 12. 2009   #7
-
0
-

To KroYc : Celé to máš zle.
- Študent je typu student a nie char ako už sa spomínalo vyššie.
- Pre položky v dátume by som použil int pretože je ľahšie porovnať čísla ako text (pre PC) ;-)
- Tá funkcia sa volá rekurzívne a ani sa mi nezdá, že niekedy skončí.
- Ak porovnávaš štrukturované dátové typy (char *, struct, ...) tak nikdy nie takto pepek = pepek2. Podobne pre (<,>, <=,...)
- Konštruktor (premenna = {2, 4, "ddd"}) smieš použiť v C len pri deklarácii (inicializácii). Teda: typ premenna = {2, 4, "ddd"}.
- potom, ešte ak chceš aby ti to hodilo výsledok, tak musíš aj tú funkciu zavolať :-)
To sputnikone : short int by som nepoužíval, pretože asi má 32bit a tam je najrýchlejší int a aj dáta sú zarovnané na 32bit (4byt = int). Čiže sa vôbec aj tak neušetrí. A sizeof(short) je tuším tiež 4byt takže iba o dve písmenká viac v zdrojáku :-D

Nahlásit jako SPAM
IP: 147.229.208.–
sputnikone+1
Věrný člen
16. 12. 2009   #8
-
0
-

To m->29 : jo, už jsi vzpomínám... ale char je taky číslo :smile1:

Nahlásit jako SPAM
IP: 147.251.201.–
m->29+6
Super člen
16. 12. 2009   #9
-
0
-

Hej, som si nevšimol, že mu tam chýba *. Som to pozrel narýchlo a myslel, že to chce ukladať ako reťazec. Nuž, myslenie matka omylu :-D

Nahlásit jako SPAM
IP: 147.229.208.–
KroYc0
Newbie
17. 12. 2009   #10
-
0
-

díky Vám za rady

Nahlásit jako SPAM
IP: 88.146.188.–
KroYc0
Newbie
21. 12. 2009   #11
-
0
-

Ahojte řeším problém se Součtem zlomků, už si ani nejsem jistej na kolik % je ten programek dobře, a myslím si že problem bude v datový typech. kdyby jste byli zase tak hodní a pěkně mě to zkritizovali, Dík KroYc

#include <stdio.h>
typedef struct {int Citatel[5], Jmenovatel[5];} zlomek;

int zlomek_soucet(zlomek1, zlomek2);

int main()
{
int zlomek_soucet();

//zlomek 1
printf("Zadej citatel zlomku 1:");
scanf("%i", &zlomek1.Citatel );
printf("Zadej jmenovatel zlomku 1:");
scanf("%i", &zlomek1.Jmenovatel );

//zlomek 2
printf("Zadej citatel zlomku 2:");
scanf("%i", &zlomek2.Citatel );
printf("Zadej jmenovatel zlomku 2:");
scanf("%i", &zlomek2.Jmenovatel );

printf("soucet zlomků %i a %i je zlomek %i", zlomek1, zlomek2);
return 0;
}
int zlomek_soucet(int zlomek1, int zlomek2)
{
int vysledek;
int vysledek2;
int vysledek3;
int vysledek_celkovy;

vysledek = zlomek1.Jmenovatel * zlomek2.Jmenovatel;
vysledek2 = zlomek2.Jmenovatel * zlomek1.Citatel;
vysledek3 = zlomek1.Jmenovatel * zlomek2.Citatel;

vysledek_celkovy = vysledek2 + vysledek3;

return 0;
}

Nahlásit jako SPAM
IP: 88.146.188.–
crAzY^
~ Moderátor
+10
Grafoman
21. 12. 2009   #12
-
0
-

no ten prototyp fce zlomek_soucet je spatne... mel by byt

int zlomek_soucet(int, int);

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
21. 12. 2009   #13
-
0
-

teda v tvém příkladě by měl být

int zlomek_soucet(zlomek, zlomek);


a v definici fce potom takto:
int zlomek_soucet(zlomek zlomek1, zlomek zlomek2)


a nechápu, co ta fce vlastně vrací...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
21. 12. 2009   #14
-
0
-

další problém:

nevím proč máš v deklaraci struktury zlomek pole typů int pro Čitatel a Jmenovatel...

stačilo by

typedef struct { int Citatel; int Jmenovatel } zlomek;

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
KroYc0
Newbie
21. 12. 2009   #15
-
0
-

To crAzY^ : no zadání je takové...
Vytvořte v jazyku C strukturovaný datový typ zlomek se členy citatel a jmenovatel. Dále napište funkci zlomek soucet(zlomek a, zlomek b), která vypočítá a vrátí součet předaných zlomků v základním tvaru. Vykrácení výsledného zlomku do základního tvaru docílíte vydělením čitatele i jmenovatele jejich největším společným dělitelem, který můžete určit například použitím Euklidova algoritmu.

Nahlásit jako SPAM
IP: 88.146.188.–
crAzY^
~ Moderátor
+10
Grafoman
22. 12. 2009   #16
-
0
-

To KroYc : tak v tom případě by to mohlo vypadat nějak takto:

#include <stdlib.h>

#include <stdio.h>

typedef struct { int citatel; int jmenovatel; } zlomek;

int nsd(int, int); //nejvetsi spolecny delitel

zlomek soucet_zlomku(zlomek, zlomek);

int main()
{
zlomek prvni, druhy;
prvni.citatel = 1;
prvni.jmenovatel = 2;

druhy.citatel = 1;
druhy.jmenovatel = 4;

zlomek vysl = soucet_zlomku(prvni, druhy);

printf("Vysledny zlomek je: %d/%d\n", vysl.citatel, vysl.jmenovatel);
return 0;
}

int nsd(int u, int v)
{
int r;
while(v != 0)
{
r = u % v;
u = v;
v = r;
}

return u;
}


zlomek soucet_zlomku(zlomek a, zlomek b)
{
int Citatel, Jmenovatel;
Citatel = a.jmenovatel*b.citatel + b.jmenovatel*a.citatel;
Jmenovatel = a.jmenovatel*b.jmenovatel;

int NSD = nsd(Citatel, Jmenovatel);

zlomek vysledek;
vysledek.citatel = Citatel/NSD;
vysledek.jmenovatel = Jmenovatel/NSD;

return vysledek;
}

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

Podobná vlákna

Poblem s ukolom — založil Filip

Pomoc — založil piwolukas

Pomoc — založil selkir

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý