[ RMAN @ 02.11.2007. 09:30 ] @
| Napisati C program koji predstavlja kalkulator sa 4 osnovne operacije (+ - * / ). Kalkulator realizovati pomocu promenljive operand1 i operand2.Obezbediti sekvencijalno ucitavanje niza operacija sve dok se ne unese operacija =.
Mogu da koristim if i while petlje. For ne!
Ne razumem kako da uradim. Dal ovako nekako:
operand1= neka vrednost
operacija= neki znak
operand2= neka vrednost
ako je ucitano = onda kraj a ako ne ponovo
Ovakav nacin mi je glup ne razumem kako treba ucitavati vrednosti. |
[ glorius @ 03.11.2007. 15:47 ] @
Logican nacin...
Ucitas prvu vrednost.
Udjes u while petlju.
Sad ucitavas operator i ako operator nije =, ucitavas drugi operand... Rezultat stavljas u prvi operadand i ides na pocetak petlje...
[ EArthquake @ 04.11.2007. 18:26 ] @
treba ga implementirati preko do while ,
to je naglasio asistent cini mi se
i savet dugare , kad vec postavljas takva pitanja , ukloni svoje pravo ime iz profila :)))
i asistenti imaju internet :) da ne nabasaju na nesto interesantno :)
[ cirko @ 05.11.2007. 09:25 ] @
Evo ti uradjen zadatak
Pogledaj dali ti odgovara.
Koriscen je ,,case,, operator
Pozdrav
[ RMAN @ 08.11.2007. 21:29 ] @
Ma uradio sam program sa svim mogucim zastitama cak i vise nego sto treba. Dobio sam 5+ poena od mogucih 5.
@EArthquake
Dobro si mi to predlozio. Koristicu drugo ime :)
[ EArthquake @ 09.11.2007. 21:26 ] @
si uspeo mozda sa samo dve promenljive ?
bez trece za unos operacije ? :)
[ ivanzj @ 02.11.2008. 15:58 ] @
imam i ja jedan problem sa kalkulatorom.
Moj mora da mnozi i deli samo uz pomoc operacija + i - , ali nikako da ga nateram da mi to i uradi.
moze li mi neko pomoci?
Pokusavam kroz switch, ali nikako nece da izbaci rezultat
Code:
#include <stdio.h>
main()
{
float a, b, rez;
char op;
printf(" + \n -\n /\n *\n");
scanf("%f%c%f",&a,&op,&b);
switch(op)
{
case'+':
printf("%f\n",a+b);
break;
case'-':
printf("%f\n",a-b);
break;
case'*':
do {
(a+a);
}
while (a<b);
printf("%f\n",a+b);
break;
default:
printf("error");
break;
}
return(0);
}
ovo je bio neki moj pokusaj, ali ne ide
izbacuje rezultat, ali ne pravilno. Broblem je samo u *
[Ovu poruku je menjao ivanzj dana 02.11.2008. u 19:32 GMT+1]
[ zivotus @ 02.11.2008. 21:26 ] @
case'*':
do {
(a+a);
}
while (a<b);
printf("%f\n",a+b); //vraca ti a+b umesto a...
break;
[ ivanzj @ 02.11.2008. 22:11 ] @
ne radi mi ni ovo.
10*5=15
3*2=5 :D
kad mu stavim a+a u printf
5*4=10
10*5=20
3*2=6
,ali hvala u svakom slucaju
[ Aleksandar Ružičić @ 03.11.2008. 01:23 ] @
Code:
case'*':
if (b == 0) a = 0;
else for (int i = 1; i < b; i++) a += a;
printf("%f\n",a);
break;
ovako?
[ ivanzj @ 03.11.2008. 16:38 ] @
:) nije
pokusacu ja jos nesto, a cu javiti da l sam nasao resenje
Hvala u svakom slucaju
[ zivotus @ 04.11.2008. 11:43 ] @
Ti rezultat smestas u promenjljivu a, znaci na stampi treba da bude promenjljiva a ne a+a, nego a.
case'*':
do {
(a+=a);
}
while (a<b);
printf("%f\n",a);
break;
samo stavi if za 0 i to je to...
[Ovu poruku je menjao zivotus dana 04.11.2008. u 15:55 GMT+1]
[ Aleksandar Ružičić @ 04.11.2008. 13:49 ] @
nije mi jasno kako sa
Code:
do {
(a+=a);
}
while (a<b);
printf("%f\n",a+b);
pokusavate da mnozite a i b?
recimo da je a = 100 a b = 3:
1. prvi prolaz kroz petlju: a += 100 ( a je sada 200 )
2. provera uslova a < b ( 200 < 3) daje false i petlja nikada ne ulazi u drugi krug
3. kao rezultat se stampa a + b = 200 + 3 = 203!
@ivanzj: sta je pogresno u onom resenju koje sam ja dao? (nisam ga testirao, priznajem, ali bi trebalo da radi...)
[ ivanzj @ 04.11.2008. 20:05 ] @
Citat: Aleksandar Ružičić: Code:
case'*':
if (b == 0) a = 0;
else for (int i = 1; i < b; i++) a += a;
printf("%f\n",a);
break;
ovako?
@ivanzj: sta je pogresno u onom resenju koje sam ja dao? (nisam ga testirao, priznajem, ali bi trebalo da radi...)
Radi, ali ne radi kako treba. za 1*3 izbaci 4, 1*4=8, 1*5=16, 3*4=24; 2*5=32
[ Aleksandar Ružičić @ 04.11.2008. 21:45 ] @
u pravu si, ja sam napravio (glupu, priznajem :p) gresku...
ovo je ispravno:
Code:
case'*':
int r = 0;
for (int i = 0; i < b; i++) r += a;
printf("%f\n",r);
break;
ili, malo optimizovano:
Code:
case'*':
int r = 0;
if ( a != 0 && b != 0 )
{
if ( ! ( a >= b ) )
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
for (int i = 0; i < b; i++) r += a;
}
printf("%f\n",r);
break;
[ ivanzj @ 05.11.2008. 19:19 ] @
sa maliim ispravkama radi
Code:
case'*':
{r = 0;};
for ( i = 0; i < b; i++) r += a;
printf("%f\n",r);
break;
[ Aleksandar Ružičić @ 06.11.2008. 00:22 ] @
kojim kompajlerom ti to kompajliras?
[ ivanzj @ 06.11.2008. 12:24 ] @
To je MS studio c++ 6, pa verovatno taj sto se u njemu nalazi, posto i komajlujem preko njega
[ X Files @ 06.11.2008. 13:09 ] @
Ako si int r; deklarisao negde van (ispred) switch/case, onda ovo {r = 0;}; može da bude samo ovako: r = 0; bez potrebe da bude u svom bloku.
[ ivanzj @ 12.11.2008. 11:01 ] @
NE znam da li mi je poruka izbrisana, ili sam jednostavno zaboravio da postujem, ali treba mi ideja, kako da uradim deljenje, takodje samo uz pomoc + i -
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|