Forum » Programiranje » Izris zvezdic v C
Izris zvezdic v C
Janac ::
printf("-------->IGRA NASPROTNIK\n"); printf("Imam stevilo med 1-100, zacni ugibati!\n"); scanf("%i", &iPoskus); if(iPoskus>iVnos-15) { printf("hladno"); } else if(iPoskus<iVnos-15 && iPoskus>iVnos-6) { printf("toplo"); } else if(iPoskus>iVnos-5) { printf("vroce"); } else if(iPoskus==iVnos) { printf("Uganili ste!"); } } while(!(iPoskus==iVnos));
So tole prav napisani pogoji?
1. hladno, če je poskus več kot 15 proč
2. toplo, če je odstopa med 14-6
3. vroče, če je poskus oddaljen več kot za 5.
Hvala...
jizzer ::
Primer da je vnos 75. Če si izbereš da je hladno, naprimer 30 števil vstran, moraš to upoštevati iz obeh strani torej, če je manjše od 45 in večje od 105. Za toplo pa naprimer 15 števil okoli, je to med 45 in 60 in zgoraj med 80 in 105.
Upoštevaj to in še enkrat napiši pogoje :)
Upoštevaj to in še enkrat napiši pogoje :)
Janac ::
Jakkob ::
In kaj se zgodi če ugibam popolnoma mimo in napišem 0, ali -200?
1. hladno, če je poskus več kot 15 proč
?
Nisi objavil cele kode zato skepam da imaš iVnos hardcoded nekje zgoraj oz. ga generiraš tako, da ti vrne random cifro med 1 in 100. Torej če je recimo iVnos = 50, kateri 'if' mi ujame iPoskus = -1?
amacar ::
Sej to mu je že jizzer povedal, da more gledati v obe smeri, torej uporabiti absolutno vrednost razlike.
Janac ::
if(iPoskus>iVnos-15 || iPoskus>iVnos+15) { printf("hladno"); } else if(iPoskus<iVnos-15 && iPoskus>iVnos-6) { printf("toplo"); } else if(iPoskus>iVnos-5 || iPoskus>iVnos+5) { printf("vroce"); } else if(iPoskus==iVnos) { printf("Uganili ste!"); }
fixed
Mah ne, ni še vredu.
Zgodovina sprememb…
- spremenil: Janac ()
Spura ::
Razliko ni treba v vsakem clenu racunat in tut ni treba v vsakem clenu ugotavljat ce se je nekdo zmotil navzgor al navzdol.
int razlika = iPoskus > iVnos ? iPoskus - iVnos : iVnos - iPoskus; if (razlika > 15) { // hladno } else if (razlika > 5) { // toplo } else if (razlika == 0) { // uganili ste } else { // vroce }
Janac ::
Razliko ni treba v vsakem clenu racunat in tut ni treba v vsakem clenu ugotavljat ce se je nekdo zmotil navzgor al navzdol.
int razlika = iPoskus > iVnos ? iPoskus - iVnos : iVnos - iPoskus;
if (razlika > 15) { // hladno
} else if (razlika > 5) { // toplo
} else if (razlika == 0) { // uganili ste
} else { // vroce
}
Mi lahko samo nekdo razloži prvo vrstico? Kaj recimo pomeni ?
Janac ::
Pišem tale program:
http://spiri.fmf.uni-lj.si/wikiji/Java/...
Sestavil sem tale algoritem:
Mi lahko prosim nekdo pove, kje je napaka? Zadnjo točko še nisem.
http://spiri.fmf.uni-lj.si/wikiji/Java/...
Napiši program, ki bo prebral dve celi števili, ugotovil, katero je večje in izpisal:
vsa števila med najmanjšim in največjim številom.
vsa števila med najmanjšim in največjim številom, ki delijo največje število.
vsa števila med najmanjšim in največjim številom, ki so soda in delijo največje število.
vsa števila med najmanjšim in največjim številom, ki so soda ali delijo največje število.
Sestavil sem tale algoritem:
if(iStevilo1>iStevilo2) { for(iStevec1=iStevilo2+1; iStevec1<=iStevilo1-1; iStevec1++) { printf("%i\n\n", iStevec1); iDeli=iStevilo1%iStevec1; iSodo=iDeli%2; if(iDeli==0 && iSodo==0 ) { printf("%i", iStevec1); } }
Mi lahko prosim nekdo pove, kje je napaka? Zadnjo točko še nisem.
Zgodovina sprememb…
- spremenil: Janac ()
Janac ::
Semantična :)
Ne izpiše nobenega števila, ki je sodo in deli število...
help?
Ne izpiše nobenega števila, ki je sodo in deli število...
help?
Zgodovina sprememb…
- spremenil: Janac ()
Vesoljc ::
// mod operacija %, ti vraca ostanek deljenja, // najbolj tipicen primer je ugotavljanje ali je stevilo sodo ali liho // 1 % 2 = 1; 2 % 2 = 0; 3 % 2 = 1; 4 % 2 = 0; itd... iDeli = iStevilo1 % iStevec1; iSodo = iDeli % 2; // ???
Abnormal behavior of abnormal brain makes me normal...
Janac ::
Ce recimo delim 40 s 2 in ostane 0, vem da je stevilo sodo, ce je pa ostanek 1 pa liho...kaj tukaj ni ok?
Dam v drugo vrstico
iSodo=istevec/2
Dam v drugo vrstico
iSodo=istevec/2
Zgodovina sprememb…
- spremenil: Janac ()
Vesoljc ::
ja deljenje z 2 je ok. ampak kaj delis z 2? zgoraj si delil iDeli z 2. to je tisto kar ti je ostalo od iStevilo1 % iStevec1, se pravi 0 ali pa 1. iMin = iVnos1 < iVnos2 ? iVnos1 : iVnos2; iMax = iVnos1 > iVnos2 ? iVnos1 : iVnos2; for(int a = (iMin+1); a < iMax; a++) { bool deljivo = (iMax % a) == 0; bool sodo = (a % 2) == 0; // print kar te zanima }
Abnormal behavior of abnormal brain makes me normal...
Zgodovina sprememb…
- spremenil: Vesoljc ()
Janac ::
Takole si mislil ane?
No ni vredu...
izpis je takšen:
Ampak neko zaporedje je...
if(iStevilo1>iStevilo2) { for(iStevec1=iStevilo2+1; iStevec1<=iStevilo1-1; iStevec1++) { printf("%i\n\n", iStevec1); iDeli=iStevilo1%iStevec1; iSodo=iStevec1%2; if(iSodo==0 ) { printf("%i", iStevec1); } } }
No ni vredu...
izpis je takšen:
Ampak neko zaporedje je...
Zgodovina sprememb…
- spremenil: Janac ()
Vesoljc ::
tako izpisovanje je cist adijo...
izpisi tako:
izpis bi moral bit tak:
6 sodo
7
8 sodo
9
10 sodo
itd...
izpisi tako:
printf("%i ", iStevec1); if(iSodo) printf("sodo "); // preveri in izpisi se ostalo printf("/n");
izpis bi moral bit tak:
6 sodo
7
8 sodo
9
10 sodo
itd...
Abnormal behavior of abnormal brain makes me normal...
Janac ::
for(iStevec1=iStevilo2+1; iStevec1<=iStevilo1-1; iStevec1++) { iDeli=iStevilo1%iStevec1; iSodo=iStevec1%2; printf("%i\n", iStevec1); if(iSodo==0) { printf("^zgornje stevilo je sodo^"); printf("\n"); } }
Kako bi lahko izpisal sodo v isti vrstici?
No če pa dodam še en pogoj, če števec deli neko število se ne izpiše 0...tukaj je potem problem. Neko število deli drugo če je ostanek 0 je tako?
iDeli=iStevilo1%iStevec1; iSodo=iStevec1%2; printf("%i\n", iStevec1); if(iSodo==0) { printf("^zgornje stevilo je sodo^"); printf("\n"); if(iDeli==0) { printf("^zgornje stevilo tudi deli prvo stevilo^"); } }
Zgodovina sprememb…
- spremenil: Janac ()
Vesoljc ::
zato ker bi rad da se naucis debugat... postavi breakpoint v for loop, pa stepaj skozi, pa bos videl kje je napaka. vse variable vrzi v watch window, pa jih spremljaj
Abnormal behavior of abnormal brain makes me normal...
Janac ::
Vesoljc ::
ja kdaj pa bos debugal? ko je sintax error in se ti sploh ne skompajla?
Abnormal behavior of abnormal brain makes me normal...
amacar ::
Ne vem no, ampak to so tako osnovne stvari, da ni potrebno za vsako spremembo postavljati vprašanja na slo-tech. Malo pretestiraš, če ustreza vsem pogojem in je to to. Ko sem jaz bil začetnik sem si kaj tudi na papir zapisal in tako dolgo gruntal, da mi je uspelo. In ja to je pomenilo tudi 2-3 ure za izris recimo šahovnice, ne pa da se vdaš po 2 poskusih brez da bi sploh premislil kaj si v kodo napisal.
#include <stdio.h> int main() { int stevilo1=10; int stevilo2=60; if(stevilo2>stevilo1) { int temp=stevilo1; stevilo1=stevilo2; stevilo2=temp; } if(stevilo1>stevilo2) { int i=0; for(i=stevilo2+1;i<stevilo1;i++) { printf("stevilo %i ",i); if(stevilo1%i==0 && i%2==0) printf("je sodo in deli!"); printf("\n"); } } return 0; }
Janac ::
Hvala za pomoč... velikokrat res sploh ne razmišljam o problemu...
Mogoče je spet tak primer.
Imam tale algoritem, ki deluje!
Deluje lepo, ko pa spremenim v:
Izpiše 0, ne glede na podatkovni tip... dajte mi samo namig prosim.
Mogoče je spet tak primer.
Imam tale algoritem, ki deluje!
#include <stdio.h> int main (void) { int iSrecno=0; int iVnos=0; int iOstanek=0; int dVsota=0; printf("Vnesi poljubno stevilo, izpisem stevke:\n"); scanf("%i", &iVnos); while(iVnos>0) { iOstanek=iVnos%10; iVnos=iVnos/10; if(iOstanek!=0) { iVsota=iOstanek+iVsota; } } printf("%i", iVsota); return(0); }
Deluje lepo, ko pa spremenim v:
iVsota=iOstanek*iVsota;
Izpiše 0, ne glede na podatkovni tip... dajte mi samo namig prosim.
amacar ::
Ker imaš iVsota nastavljeno na začetku na 0 in karkoli množiš z 0 bo vedno nič.
Nastavi na 1.
Nastavi na 1.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Vsota določenih elementov matrike [C]Oddelek: Programiranje | 991 (679) | RatedR |
» | Izris lika - idejaOddelek: Programiranje | 3744 (2779) | RatedR |
» | Resne težave z razumevanjem osnov programiranja (strani: 1 2 )Oddelek: Programiranje | 16548 (13060) | RatedR |
» | Združevanje polj [C]Oddelek: Programiranje | 975 (839) | ragezor |
» | Spreminjanje vrednosti v polju [C]Oddelek: Programiranje | 2166 (1965) | specing |