Help

1

Help

offline
  • Pridružio: 09 Jan 2005
  • Poruke: 18

1) Ljudi treba mi pomoc.Totalni sam noob.Znam da ce se neko smejati i da sam nesto eznuo onako bas glupo ali nisam do sad radio ovako nesto uglavnom sam se gubio sa brojevima a sad mi trazi da unesem slova:

Zadatak je da napisem program koji trazi da se preko tastature izabere opcija Da/Ne (unese slovo D ili N) i odgovarajuce poruke a ako nije izabrana ni jedna opcija da prijavi gresku.

Evo dokle sam dosao:

char a;
printf("Da ili Ne?(D ili N)\n");
scanf("%c",&a);

if (a==D)
printf("Tacno\n\n");
else if (a==N)
printf("Netacno\n\n");
else
printf("Pogresno slovo\n\n");


Izbaci mi gresku a kada declare-ujem N i D onda uvek izbacuje "pogresno slovo".

2) I imam jos jedno pitanje.Program koji izracunava izraz:
z=(min(x,y)+0.5)/(1+max(pa na kvadrat)(x,y))

e sad,ocigledno ne znam kako se pravilno pise taj izraz i sta mu dodju min i max uglavnom nikako mi ne prihvata ovako napisan izraz (kvadrat pisem ^2).

Izvinjavam se sto sam puno pisao.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Da pokusam da ti pomognem, ali uzmi u obzir da neznam C++ (a za mesec dana moram vec da predam program radjen u C++).

Generalno, mislim da ti linija za uporedjivanje ne radi:

if (a==D)

U programskim jezicima u kojima sam dosad radio, uporedjivanje karaktera ili stringova nikad nije moglo da se odradi na taj nacin. Kako si ga napisao, ispada da je i D varijabla. Probaj sledece:

if (a=="D")

Ili probaj:

if ( a==68 )

68 je ASCII kod za "D"

Za ASCII kodove pogledaj: http://www.lookuptables.com/



offline
  • Blshka 
  • Zaslužni građanin
  • Pridružio: 23 Maj 2003
  • Poruke: 590

problem 1.)
if(a=='D')
ili
if(a=='D' || a=='d') kako ti ne bi pravilo razliku izmedju malog i velikog D.
znaci izmedju apostrofa stavljas zeljeni znak, ne izmedju znaka navoda kako ti je rekao bobby niti bez icega kako si ti napisao.



problem 2.)
recimo da probas sa ternarnim operatorima da uradis pa ti izraz

z=(min(x,y)+0.5)/(1+max(pa na kvadrat)(x,y))

moze izgledati recimo na brzinu nesto ovako
Z=((x>y) ? (y+0.5) : (x+0.5) )/(1+ ((x>y) ? pow(x,2) : pow(y,2)));
ako je max na kvadrat maximum od x na kvadrat ili y na kvadrat

ili ovako
Z=((x>y) ? (y+0.5) : (x+0.5) )/(1+ ((pow(x,2)>pow(y,2)) ? x : y);
ako se gleda da je na kvadrat maximum od x ili y

ne znam sta je tacno pesnik hteo dakaze time "max(pa na kvadrat)(x,y)"
a inace ono sto si ti napisao ^ to ti je logicki operator za iskljucivo "ili" u c-u i c++ pises pow(x,y) sto u prevodu znaci X na Y.
mozda izgresih negde sa zagradama ali ako znas kako funkcionise ternanrni operator (? Smile znaces i sam da napises


btw mozda i postoji neka funkcija min() i max() u c++, ali trebalo bi i ovako da radi.

i nemoj zaboraviti da ukljucis math.h zaglavlje

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

prvo
#include <ctype.h>

i onda
if (tolower(a)=='d')

tako ne mora da ima ||

offline
  • Blshka 
  • Zaslužni građanin
  • Pridružio: 23 Maj 2003
  • Poruke: 590

E vidis moze i tako da se napise...
Ali recimo da idemo tom logikom da kao pocetnik prvo nauci da koristi oparatore a posle sve ostalo Wink
Mislim ono... da mu ne napravimo citavu zbrku u glavi....
Smile

offline
  • Pridružio: 09 Jan 2005
  • Poruke: 18

Hvala vam.Jeste,u onom prvom sam samo morao da stavim ' ' a drugi sam bio glup pa nisam skapirao da je min(x,y) ustvari manji od ta dva broja.Da,moglo je preko ?.

Ali sad sam presao na for petlje i do...while i imam jos jedan problem:

Zadatak glasi:da napisem program koji izracunava sumu kvarata svih parnih i kubova svih neparnih brojeva,u opsegu zadatih celih brojeva a i b,a<b (for petlja).

Evo dokle sam ja stigao:

int x,a,b,c;
do
{
printf("Unesi opseg (od 1 do 10):");
scanf("%d%d",&a,&b);
}
while(a<1 || a>10 || b<1 || b>10 || a>b);
printf("Brojevi su u opsegu od %d do %d:",a,b);
printf("\n");

for(x=a;x<=b;x++)
{
/*problem*/
}


I nemam predstavu kako dalje mislim kapiram da mi treba recimo if funkcija za x%2==0 i else za neparni broj,ali nikako ne mogu da ga nateram da radi a zaista sam se smorio pokusavajuci i totalno zabo.

offline
  • Blshka 
  • Zaslužni građanin
  • Pridružio: 23 Maj 2003
  • Poruke: 590

na brzinu samo, npr

int suma=0;
for(x=a;x<=b;x++)
{
if((x%2)==0)
suma+=pow(x,2);
else
suma+=pow(x,3);
}

printf("\n Suma kvarata svih parnih i kubova svih neparnih brojeva je:%d", suma);

recimo da bi mozda ovo moglo da radi

offline
  • Pridružio: 29 Apr 2005
  • Poruke: 59
  • Gde živiš: Mrkonjic - Grad

Koristi ASCII kodove. Mnogo ce ti lakce biti. Jos nesto: obavezno prevedi u mala ili velika slova (zavisi sa kojima uporedjujes).
D = 68
d = 100
N = 78
n = 110

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

sto bi bilo lakse ako koristi te ASCII kodove umesto slova, bas bi voleo da mi objasnis?
po kojoj logici je bolje?!?

offline
  • Pridružio: 09 Jan 2005
  • Poruke: 18

I ja mislim da ce mi samo biti teze preko ASCII.U redu je radi na onaj nacin ali mi je trebalo malo vremena da ukapiram kako uopste radi for petlja.

Ok imam jos jedan problem ali mi piglu da vas cimam da neko slucajno ne pomisli kako ja ovde plandujem dok mi vi resavate zadatke posto se desilo ne nekom drugom topicu nesto slicno.Ali onda makar savet kako da krenem.
Zadatak:
Napisati program koji odredjuje najvecu i najmanju vrednost u nizu zadatih celih brojeva.Pri tome kao znak za kraj unosa koristi broj 0.(while petlja)

E sad buni me sto moram preko while petlje pa ne znam kako dal moze da se pise while((c=getchar(0))==EOF ili da idem preko #define STOP 0.I ne znam kako da odredim najveci i najmanji broj kod niza.Da je u pitanju 2,3,5,7... brojeva pa nekako bi se snasao za max i min (doduse sa ?)ali ne znam kako kod niza?
THX

Ko je trenutno na forumu
 

Ukupno su 845 korisnika na forumu :: 6 registrovanih, 0 sakrivenih i 839 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, draggan, Koridor, opt1, Shilok, simazr