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

Problem s programom (C) – C / C++ – Fórum – Programujte.comProblem s programom (C) – C / C++ – Fórum – Programujte.com

 

Cary
~ Anonymní uživatel
9 příspěvků
2. 8. 2007   #1
-
0
-

Takze, chcel by som vas poprosit ak ma z vas niekto cas na takeho trosku nechapavejsieho zaciatocnika v programovani, ci by ste mi nepomohli s mensim programom v ktorom ja nevidim chybu tak neviem preco mi ho nechce prelozit moj IDE wxDev-Cpp...

#include <stdio.h>


int main(void)
{
int odpoved;
printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: ");
scanf("%d", &odpoved);

switch(odpoved){
case 1:
printf("Nie! Skus to este raz...\n");
close();
break;

case 2:
printf("Nie! Skus to este raz...\n");
close();
break;

case 3:
int odpoved_2;
printf("Super! Tvoja odpoved je spravna...\n");
printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: \n");
scanf("%d", &odpoved_2);

switch(odpoved){
case 1:
printf("Nie! Skus to este raz...\n");
close();
break;

case 2:
printf("Nie! Skus to este raz...\n");
close();
break;

case 3:
int odpoved_2;
printf("Super! Tvoja odpoved je spravna...\n");
printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: \n");
scanf("%d", &odpoved_2);
break;

default:
printf("Mas len 3 moznosti !");
}

break;

default:
printf("Mas len 3 moznosti !");
}
getch();
return 0;
}


Velmi pekne dakujem ;)

Nahlásit jako SPAM
IP: ...–
zacatecnik0
Super člen
2. 8. 2007   #2
-
0
-

1) nejde prelozit je siroky pojem - co to hlasi ?

2)nemelo by byt:

case 3:                                               

int odpoved_2;
printf("Super! Tvoja odpoved je spravna...\n");
printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: \n");
scanf("%d", &odpoved_2);

switch(odpoved_2){//tady sem provedl zmenu


3) co dela
close(); 
?

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
Zelenáč0
Posthunter
2. 8. 2007   #3
-
0
-

Rek bych, ze bude chyba v druhe deklaraci odpoved_2 (vsechny odpoved_2 bych predelal jen na odpoved..)

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
2. 8. 2007   #4
-
0
-

BTW vubec je to cele pomerne nestastne resene...




int main(void)
{
int odpoved;

for(int i=0; i<3; i++){

printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: ");
scanf("%d", &odpoved);

if(odpoved == 3){
break;
}

if(i != 2){
printf("Nie! Skus to este raz...\n");
continue;
}

printf("Mas len 3 moznosti !");
return 1;
}

return 0;
}

Nahlásit jako SPAM
IP: ...–
kernel
~ Anonymní uživatel
3 příspěvky
2. 8. 2007   #5
-
0
-

To nieje nešťastné, ale teribilné riešenie (ja to nazývam drevorubačský štýl).

Nahlásit jako SPAM
IP: ...–
Cary
~ Anonymní uživatel
9 příspěvků
2. 8. 2007   #6
-
0
-

Radsej nepis nic, ked nevies co !!! Ucim sa programovat asi necele 3 dni a netusil som, ze na to budem potrebovat cykly.

Nahlásit jako SPAM
IP: ...–
zacatecnik0
Super člen
2. 8. 2007   #7
-
0
-

Cary: kaslete na lidi tohle je na kazdem foru proste to prehlizejte jakoby tu ten post nebyl, zvyknete si ;)


hlavne se nenechte odradit- programatoru ma CR malo ;-)

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
Cary
~ Anonymní uživatel
9 příspěvků
2. 8. 2007   #8
-
0
-

zacatecnik: nj, mas pravdu
K tomu programu: 1)

[Warning] unknown escape sequence '\K' 

In function `main':
syntax error before "int"
`odpoved_2' undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
syntax error before "int"

2)Skusil som no nepomohlo
3)Zavrie program

P.S.: Nemusis mi vykat ;)

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
2. 8. 2007   #9
-
0
-

Cary píše:#
# Radsej nepis nic, ked nevies co !!! Ucim sa programovat asi necele 3 dni a netusil som, ze na to budem potrebovat cykly.


V tom pripade ovsem gratuluji (za tri dny se mi podarilo v QBasicu napsat "ahoj svete" ;-) Zmatlo me to "&", jelikoz pointery jsou daleko "dal" nez cykly...

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
2. 8. 2007   #10
-
0
-

Cary píše:#
# zacatecnik: nj, mas pravdu#
#K tomu programu: 1) #
#

[Warning] unknown escape sequence ##uvozovka##K##uvozovka## #
# In function `main##uvozovka##: #
# syntax error before "int" #
# `odpoved_2##uvozovka## undeclared (first use in this function) #
# (Each undeclared identifier is reported only once #
# for each function it appears in.) #
# syntax error before "int"
#
#2)Skusil som no nepomohlo#
#3)Zavrie program#
##
#P.S.: Nemusis mi vykat ;)


V zivote jsem o "close" neslysel - nemelo by to byt "exit"???
Jinak zkus kazdy "case" uzavrit do {} (tedy "{" za dvojtecku a "}" za break) - mam takovy tuseni, ze potom by to mohlo fungovat ?!

Nahlásit jako SPAM
IP: ...–
Kartmen
~ Anonymní uživatel
57 příspěvků
2. 8. 2007   #11
-
0
-

Tak trochu som to nepochopil, chces aby mohol uzivatel odpovedat 3-krat (na tu istu otazku?) Mozes to spravit +- takto (len priblizne ukazem pre nekonecni cyklus):



#include <stdio.h>

int main(int argc, char **argv) {
//keci na uvod
int odp;
int done = 1;
while(done) {
scanf("%d", &odp);
switch(opd) {
//case srandicky
case 0: //alebo daco ine na ukoncenie, vyber je na tebe :)
done = 0;
break;
defult:
continue; //ideme odznova
}
}
return 0;
}

{} pri case netreba davat, pokracuje sa od case az po najblissi break ( cize neskonci ani pri dalsom case ).
Ak chces dat uzivatelovi obmedzeny pocet typov tak while(done < max_pocet_ typov) {/*...*/ done++;}

A s tym close() co stes povedat :) ? Ak stes skoncit tak exit() (v stdlib.h) alebo return alebo abort() alebo ja neviem co. S close() zatvaras subory :)

Nahlásit jako SPAM
IP: ...–
Cary
~ Anonymní uživatel
9 příspěvků
2. 8. 2007   #12
-
0
-

hh, to close(); mi poradil kamarat kt. z informatiky dostal 3, ale povedal, ze toto si este pamata...

Tu druhu otazku si nevsimajte, tam ma byt ina, ale v rychlosti som nic nevymyslel len som pouzil tu prvu :)

Chcel som spravit test napr. s piatimi otakzkam a ked niekto neuhadne tak sa program vypne ak uhadne zobrazi sa mu dalsia otazka, ale dakujem aj za ten kod na nekonecny cyklus ;)

Nahlásit jako SPAM
IP: ...–
Kartmne
~ Anonymní uživatel
1 příspěvek
3. 8. 2007   #13
-
0
-

Tak som sa "trosku nudil" a nemohol som spat a toto zo mna vyliezlo :) :



#include <stdio.h>

typedef struct {
char * quest;
char * ok;
char * wrong;
int * anss; //pole formatu [pocet_moznosti, moznost#1, #2.....]
const int right_answer;
} question;

void ask(question * q) {
int num_of_a = q->anss[0];
int i = 1;
printf("%s \n Moznosti:\n", q->quest);
for(;i<=num_of_a;i++) {
printf("\t\t%d) %d\n", i, q->anss[i]);
}
printf("\n");
}

int main() {
int odp, ans;
int max_allowed_ans = 5;
int moznosti[3][7] = { {3,1,2,3,0,0,0}, {4,3,2,1,0,0,0}, {5,3,1,2,6,7} };
question quests[] = {{"aaaa", "ok", "zle",moznosti[0], 1},{"bbbb", "ok", "zle",moznosti[1], 2},{"cccc", "ok", "zle",moznosti[2], 3}};
question *cur_q = quests;
int q_num = 0;
ans = 0;
while((ans < 5) && (q_num < 3)) {
ask(cur_q);
printf("Zostava odpovedi: %d\n", (max_allowed_ans - ans));
scanf("%d", &odp);
if(odp == cur_q->right_answer) {
printf("%s\n", cur_q->ok);
q_num++;
cur_q++;
} else {
printf("%s\n", cur_q->wrong);
ans++;
}
}
return 0;
}


p.s. mam rad taketo male programiky co dokopy nic nerobia :)

Nahlásit jako SPAM
IP: ...–
Cary
~ Anonymní uživatel
9 příspěvků
3. 8. 2007   #14
-
0
-

Takze pokusil som sa spravit program, ktory polozi otazku a ak na nu spravne odpoviete povie odpoved je spravna a potom sa stlacenim lubovolnej klaves
vypne... ak odpoviete zle povie, ze odpoved je zla a da vam sancu opravit tz. ze vam otazku bude stale davat kym neodpoviete spravne...

int odpoved;

printf("Kolko minut ma jeden den ?\n");
printf("1)2400 2)3600 3)1440\n\n");
printf("Tvoja odpoved: ");
scanf("%d", &odpoved);

while(odpoved) {

switch(odpoved) {
case 1: printf("Nie! Skus to este raz...\n"); continue;
case 2: printf("Nie! Skus to este raz...\n"); continue;
case 3: printf("Super! Tvoja odpoved je spravna...\n"); break;
default: printf("Mas len 3 moznosti !"); continue;
}
}


.exe sa spravi, ale program sa na konci zblazni: bude do nekonecna vypisovat Nie! Skus to este raz..., Super! Tvoja odpoved je spravna... al.
Mas len 3 moznosti !... Co mam na nom opat zle ? :(

Nahlásit jako SPAM
IP: ...–
Kartmen
~ Anonymní uživatel
57 příspěvků
3. 8. 2007   #15
-
0
-

Nikde v cykle neaktualizujes premennu odpoved. Na zaciatku pred cyklom do odpoved nascnfujes ne-nulovu hodnotu, potom sa spusti while, ktory testuje, ci je odpoved nenulova, a pusti switch ak nenulova je. Na konci cyklu (alebo v jednom case bloku) sa musi premenna aktualizovat (vypytat dalsi vstup od usera), aby while netestoval dookola furt to iste(a nenulove). schvalne, skus tomu tvojmu programu zadat na zaciatku 0 apotom hned skonci... Na riadenie cyklu pouzivaj inu premennu...
alebo ked to stes mat tak ako ty tak:
odpoved = 1;
while(odpoved) {
scanf("%d", &odpoved);
switch(odpoved) {...
Teraz ked user zada 0, tak program skonci, inak sa pyta do nekonecna...
Taktiez, ak zada spravnu hodnotu mozes sam nastavit (v case bloku) odpoved na 0, a program skonci
(pozorne si pozri ten moj cyklus co som sem dal v noci, ukazatele si nevsymaj (tie typ * meno a -> srandicky) ak ich este nevies, pozri ako raidim ten cyklus...)
a p.s. ked pouzije break v switch, tak to breakne len switch, nie cyklus v ktorom switch bezi...

Nahlásit jako SPAM
IP: ...–
Cary
~ Anonymní uživatel
9 příspěvků
3. 8. 2007   #16
-
0
-

Dakujem za pomoc, urcite si to myslel dobre, ale ja som z toho nic nepochopil... :(

Nahlásit jako SPAM
IP: ...–
Kartmen
~ Anonymní uživatel
57 příspěvků
3. 8. 2007   #17
-
0
-

Tak este raz a pomaly:
Ked tvoj program zacne, vypise uvitanie a tak a vypyta si odpoved. Ty mu nieco napises, napr 2.
while otestuje ci sa odpoved nrovna 0, ak ano skonci a to co ma v tele (medzi {} ) sa nespusti. 2 sa nerovna 0, takze sa telo while spusti.
dalej zacne testovat switch, skusi ci sa rovna oddpoved 1, 2, 3 alebo hocicomu inemu, a spravi to co spravit ma (v nsom pripade vypise ze sme zle typli)
a tym cely switch skonci, dalsi kod ktory sa pusti je az po }, no okamzite narazime na dalsiu }, co znaci konec cyklu. Tak sa ide uplne hore az pri while a znova sa otestuje, ci sa odpoved nerovna 0, ak ano, koncime, ak nie znova sa spravi to iste. Lenze my sme v cykle odpoved nikde nemenili, takze v nej zostala hodnota 2, co 0 nie je a takto to bude behat do nekonecna...
Takze v cykle musis tu premennu nejakym sposobom menit, aby si netestoval stale dookola to iste...
Jasnejsie ?

Nahlásit jako SPAM
IP: ...–
Cary
~ Anonymní uživatel
9 příspěvků
3. 8. 2007   #18
-
0
-

Celkom hej, az na to, ze neviem napisat ten program...
Nieco som skusal, ale stale vypisalo error

Nahlásit jako SPAM
IP: ...–
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, 33 hostů

Podobná vlákna

Problém z programom — založil Tobinnek

Problém s programom — založil letsthrowq

Problém s programom — založil Kent

Problem s programom — založil hawx

Problém s programom — založil Kent

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ý