Kalkulator u C-u

poruka: 41
|
čitano: 20.808
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Kalkulator u C-u
pitanje

E ovako ...dobio sam zadatak da napravim u C-u kalkulator sa cetri osnovne operacija (+-*/)...i sada treba omoguciti unosenje niza izraza ( 5+7*7-15/4 ....) ..e ja napravim program da mi radi za dva broja samo...a ne mogu za vise...posto smo tek poceli da radimo u c-u..znaci koristimo samo if/else...do/whilei switch..e kontam da treba preko do/while ..al kako napravit ne znam...eo koda ugl...

 

#include <stdio.h>

main()
{
  int operand1, operand2;
  int rez = 0;
  char operacija;


  printf("\n\t\tUnesite izraz -> ");
  scanf("%d %c %d", &operand1, &operacija, &operand2);

 

 

  switch(operacija) {
  case '+':
    rez = operand1 + operand2;
    break;

  case '-':
    rez = operand1 - operand2;
    break;

  case '*':
    rez = operand1 * operand2;
    break;

  case '/':
    if (operand2 != 0)           //u slucaju delenja sa nulom
      rez = operand1 / operand2;
    else
      printf("\n\tDELENJE SA 0 \n");
    break;

  default:
    printf("Nepravilna operacija\n");
    break;
  }

 


  //rezultat
  printf("Rezultat je %d\n", rez);
}

 

Poruka je uređivana zadnji put sub 25.10.2008 14:52 (G1L3).
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
RE: Kalkulator u C-u

prije svega da pitam, srednja škola ili faks? I daj TOČAN tekst zadatka.

17 godina
neaktivan
offline
RE: Kalkulator u C-u
autorov komentar

fax...txt zadatka...Napraviti kalkulator sa 4 osnovne aritmeticke operacije..omoguciti unos izraza ( 5+4-9*8+3/8 ... )...koristiti tri promenjive operacija, operand, rezultat...

moze se i vise korsitit al manje bodova dobijes...

17 godina
protjeran
offline
RE: Kalkulator u C-u

Evo, možeš unijeti niz neograničene duljine:

 

#include <stdio.h>

int main()
{
    char pom, operacija;
    int k = 0;
    double rez = 0;

    printf("Unesite niz izraza: ");
    do{
        pom = getch();
        printf("%c", pom);
        if(pom >= '0' && pom <='9')
        {
            if(k == 0)
                rez = pom - 48;
            else
            {
                if(operacija == '+') rez = rez + (pom - 48);
                if(operacija == '-') rez = rez - (pom - 48);
                if(operacija == '/') rez = rez / (pom - 48);
                if(operacija == '*') rez = rez * (pom - 48);
            }
        }
        if(pom == '+') operacija = '+';
        if(pom == '-') operacija = '-';
        if(pom == '/') operacija = '/';
        if(pom == '*') operacija = '*';
        k++;
    }while(pom != '\r');
    printf("\n=%f", rez);
    return 0;
}

 

Par napomena: Brojevi koji se unose u izrazima trebaju biti jednoznamenkasti. Za višeznamenkaste je potrebno koristiti polja, a pošto niste polja radili a oni ni u primjeru to nisu naveli onda vjerujem da je samo za jednoznamenkaste. Isto tako, prioritete operacija nije moguće definirati bez upotrebe polja, pa se izrazi obrađuju redom kao da imaju iste prioritete. Dok ne budete radili polja bolje ne može.

Poruka je uređivana zadnji put sub 25.10.2008 15:26 (Tracer).
17 godina
neaktivan
offline
Kalkulator u C-u
autorov komentar

hmm pa ne ide :)..mislim sve je oke..mozes kao niz... ovo bi ti trebalo uzeti u obzir da je mnozenje pre sabiranja i oduzimanja...e uneo sam bio 5+7*7 i izbacilo mi 84..a treba 54 :)...hvala inace na pokusaju...

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: Kalkulator u C-u
procitaj malo bolje njegov post
17 godina
neaktivan
offline
Kalkulator u C-u
autorov komentar

ah da..vidi stvarno..sorry :)

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Kalkulator u C-u

i meni treba pomoc oko istog, s tim sto ja nisam razumela nacin na koji je uradjen zadatak. :(

 

konkretno  ne znam  zasto  je stavljeno  da je int k=0 i  zasto  je double rez=0 , zatim sta znaci getch, i zasto se oduzima 48...

 

meni    treba  kalkulator koji koristi  naredbu switch, da ima 3 promenljive i  da racuna u nizu kao npr. 4+5/9... nebitno  za redosled operacija... svima  sam unapred  zahvalna!!!!!

 

pusa!!

nobody
17 godina
protjeran
offline
RE: Kalkulator u C-u
adm88dp kaže...

i meni treba pomoc oko istog, s tim sto ja nisam razumela nacin na koji je uradjen zadatak. :(

 

konkretno  ne znam  zasto  je stavljeno  da je int k=0 i  zasto  je double rez=0 , zatim sta znaci getch, i zasto se oduzima 48...

 

meni    treba  kalkulator koji koristi  naredbu switch, da ima 3 promenljive i  da racuna u nizu kao npr. 4+5/9... nebitno  za redosled operacija... svima  sam unapred  zahvalna!!!!!

 

pusa!!

 Početna suma (rez) treba biti jednaka PRVOM unesenom broju, a brojač "k" broji koliko ih je uneseno. Stoga, kada je k == 0 to znači da je riječ o prvom broju, te se tada on dodjeljuje početnoj sumi (rez).

Funkcija getch služi kako bi "čitala" što tipkaš po tipkovnici. Čim stisneš tipku odmah se pamti što si unijela. Ne treba ni stiskati Enter. Pošto nije sigurno da li ćeš unijeti operaciju ili broj sve što unosiš se tretira kao znak (char). Zato, ako je riječ o brojevima, oni počinju od ASCII 48:

ASCII 48 - znak '0'.
ASCII 49 - znak '1'.
...

Znači, ako ti na tipkovnici utipkaš broj 5, on će se shvatiti kao znak '5' tj. ASCII 53. Da bi od 53 dobila 5 moraš oduzeti 48. Zato se pri radu s tim brojevima uvijek oduzima 48.

Ako već ipak ne shvaćaš većinu ovoga bolje bih ti preporučio da preskočiš ovo rješenje, jer da budem iskren, u ovom tekstu zadatka je puno toga nejasno i može biti da je ovo sve nepotrebno i da se zadatak zapravo svodi na nešto puno jednostavnije.
Poruka je uređivana zadnji put ned 26.10.2008 17:43 (Tracer).
17 godina
neaktivan
offline
RE: Kalkulator u C-u

Eto...zbrisano....sretno...

Poruka je uređivana zadnji put ned 26.10.2008 21:53 (v_maxcpp).
16 godina
neaktivan
offline
Kalkulator u C-u

hvala puno na objasnjenju. medjutim mi nista od toga nismo radili i zato to ne smem da koristim. treba biti uradjeno switch naredbom, ukoliko znate nacin rada pomozite :D. hvala vam unapred.

nobody
Poruka je uređivana zadnji put ned 26.10.2008 19:09 (adm88dp).
 
0 0 hvala 0
17 godina
neaktivan
offline
RE: Kalkulator u C-u
adm88dp kaže...

hvala puno na objasnjenju. medjutim mi nista od toga nismo radili i zato to ne smem da koristim. treba biti uradjeno switch naredbom, ukoliko znate nacin rada pomozite :D. hvala vam unapred.

 
Eh sad.. ako znaš ćemu služi switch onda ti ne bi trebalo biti problem :). Koliko vidim switch se može primjeniti na 2 dijela, ja ću promijeniti gornji:

switch(operacija)
{
case '+':
 rez = rez + (pom - 48);
 break;

case '-':
 rez = rez - (pom - 48);
 break;

case '/':
 rez = rez / (pom - 48);
 break;

case '*':
 rez = rez * (pom - 48);
 break;
}

edit: maximalni cplusplusu, zaboravio si da C nema iostream biblioteku ;)

Poruka je uređivana zadnji put ned 26.10.2008 20:50 (itf4n).
17 godina
protjeran
offline
RE: Kalkulator u C-u
adm88dp kaže...

hvala puno na objasnjenju. medjutim mi nista od toga nismo radili i zato to ne smem da koristim. treba biti uradjeno switch naredbom, ukoliko znate nacin rada pomozite :D. hvala vam unapred.

 Molim TOČAN i PRECIZAN tekst zadatka. Niti jedno rješenje neće biti dobro ukoliko nije jasno precizirano o čemu se radi.

@v_maxcpp
Riječ je o programskom jeziku C. Tamo se ne koriste tokovi jer su to klase, a C ne radi s klasama. Isto tako, biblioteka iostream se ne koristi zbog funkcije system. Za nju se koristi zaglavlje stdlib.h. Također, iostream umjesto system koristi cin.ignore funkciju, te u mom zadatku si zamjenio funkcije getch i getchar. To nisu iste stvari.
Poruka je uređivana zadnji put ned 26.10.2008 21:42 (Tracer).
17 godina
neaktivan
offline
RE: Kalkulator u C-u

....znam da je riječ o C-u i samo sam objašnjavao zašto 48 ili '0',a i naveo sam da se radi o Dev-u,jedino nisam spominjao c++(mislio sam ali eto nisam),ali mislim da
bi se autor sam obratio da nije nešto shvatio....ako student ili netko tko želi naučiti, naučiti će i potruditi se shvatiti razlike,ili bar pitati,
 ,ako ti smeta zbrišem odmah to što napisah.

Poruka je uređivana zadnji put ned 26.10.2008 21:48 (v_maxcpp).
17 godina
neaktivan
offline
Kalkulator u C-u

Ajde molim te izbriši. Kako će shvatiti kad mu krivo govoriš?

 
0 0 hvala 0
17 godina
protjeran
offline
Kalkulator u C-u

Ništa meni ne smeta osim ako nije točno napisano. Tako da, zamjeni getchar u getch jer si krivo izmjenio moj kod. getchar zahtjeva tipku enter i već time cijeli koncept unosa niza pada u vodu. Isto tako, makni iostream i umjesto njega već dodaj stdlib ako već želiš system "pauze"....

Poruka je uređivana zadnji put ned 26.10.2008 21:54 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Kalkulator u C-u

hvala punoooo!!!! ipak mi smo totalni pocetnici i profesor mi nikada nece progutati to sa oduzimanjem 48 jer to nikada nije ni spominjao kao i jos neke stvari tu. ja sam pokusala uraditi jedan jednostavniji ali nece da se kompajlira prikazuje gresku u na poslednjoj viticastoj zagradi (end u paskalu) evo ga moj kod... nadam se da cete mi pomoci da otkrijem gresku...
__________________________________________________ ___________

#include <stdio.h>

main()
{
double operand1, operand2,rez;
char operacija;

do{
printf("\n\t\tUnesite izraz -> ");
scanf("%ld %c %ld", &operand1, &operacija, &operand2); //nisam sigurna za %ld (kontam kao long double, posto je %d int

switch(operacija) {
case '+':
rez = operand1 + operand2;
break;

case '-':
rez = operand1 - operand2;
break;

case '*':
rez = operand1 * operand2;
break;

case '/':
if (operand2 != 0) //u slucaju delenja sa nulom
rez = operand1 / operand2;
else
printf("\n\tDELENJE SA 0 NIJE DOZVOLJENO \n");
break;

default:
printf("Nepravilna operacija\n");
break;
}
while(rez!=0);
}
}
__________________________________________________ _____________

hvala punooo jos jednom

nobody
 
0 0 hvala 0
17 godina
protjeran
offline
RE: Kalkulator u C-u

poslije svakog case treba ići vitičasta zagrada, koja se zatvara poslije break. isto vrijedi i za poslije default. ovo vidim tek na prvi pogled pošto nemam ovdje nikakav C++ IDE.

17 godina
neaktivan
offline
RE: Kalkulator u C-u
nije mi se dalo compileati ali ovaj main()...

napisi int main()
16 godina
neaktivan
offline
RE: Kalkulator u C-u

pa isto ti je main() ili int main()

17 godina
protjeran
offline
RE: Kalkulator u C-u

kad smo već kod toga fali i return na kraju...

16 godina
neaktivan
offline
RE: Kalkulator u C-u

ja sam sad probo i neradi program

17 godina
neaktivan
offline
RE: Kalkulator u C-u

Jedna od vecih gresaka ti je while uvijet koji nisi dobro smjestila,ide iza vitičaste zagrade nakon završetka do uvjeta!Ovako na prvi pogled ali pogledam još ostatak.
ne moraš staviti int ako nema ni return.To boldano ti je ta greška koja ti se pojavljuje.
Na žalost ovdje se moje mišljenje ne traži baš u C-u,stoga ima onih koji će ti bolje objasniti da se ne mješam i da te ne zbunim.

Poruka je uređivana zadnji put pon 27.10.2008 20:42 (v_maxcpp).
17 godina
protjeran
offline
Kalkulator u C-u

#include <stdio.h>

int main()
{
    double operand1, operand2,rez;
    char operacija;

    do{
        printf("\n\t\tUnesite izraz -> ");
        scanf("%d %c %d", &operand1, &operacija, &operand2);

        switch(operacija) {
            case '+':
            {   
                rez = operand1 + operand2;
                break;
            }
            case '-':
            {
                rez = operand1 - operand2;
                break;
            }
            case '*':
            {
                rez = operand1 * operand2;
                break;
            }
            case '/':
            {
                if (operand2 != 0) //u slucaju delenja sa nulom
                    rez = operand1 / operand2;
                else
                    printf("\n\tDELENJE SA 0 NIJE DOZVOLJENO \n");
                break;
            }
            default:
            {       
                printf("Nepravilna operacija\n");
                break;
            }
        }
    }
    while(rez!=0);
    return 0;
}

 

A ti sad piši dalje...

 

I mala napomena: funkcija main u pravilu UVIJEK treba biti tipa int. neki compileri neće htjeti niti prevesti program ukoliko tako nije definirano. stoga, int i return je čak i obavezno koristiti kod funkcije main.

Poruka je uređivana zadnji put pon 27.10.2008 20:54 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Kalkulator u C-u

malo razmišljam o ovom zadatku i nije mi jasno kako se ovaj zadatak može riješiti bez polja, ako je proizvoljan niz brojeva i znakova?

 
0 0 hvala 0
17 godina
protjeran
offline
RE: Kalkulator u C-u
gad kaže...

malo razmišljam o ovom zadatku i nije mi jasno kako se ovaj zadatak može riješiti bez polja, ako je proizvoljan niz brojeva i znakova?

 Gore sam već prikazao rješenje bez polja, ali zbog nedostatka polja nije moguće definirati matematičke prioritete, već sve mora ići sekvencijalno...
16 godina
neaktivan
offline
RE: Kalkulator u C-u

aha. nisam vidio. A na koji to faks idete kad vam daju takve zadatke a nisu vam objasnili vrijednost char znamenci?

16 godina
neaktivan
offline
RE: Kalkulator u C-u
gad kaže...

malo razmišljam o ovom zadatku i nije mi jasno kako se ovaj zadatak može riješiti bez polja, ako je proizvoljan niz brojeva i znakova?

 ja sam tek pocetnik i ne razumem se preterano, ali koliko sam ja shvatila naredba do-while ti omogucuje beskonacan duz izraz. jednostavno mozes tipkati brojeva koliko god zelis i kad stisnes jednako operacije se izvrsavaju :D ja sam to tako zamislila mada moj se jos nije kompajlirao :( vise mi ne prikazuje gresku vec debug a nemam pojma sta je to, jednostavno mi neda da vise kompajliram .... kme kme....
nobody
17 godina
neaktivan
offline
RE: Kalkulator u C-u

Ako možeš uploadaj slike tvojih grešaka i koji IDE koristiš ,to bi bilo od velike koristi.

16 godina
neaktivan
offline
RE: Kalkulator u C-u

da ali to radi ako uneseš broj ili znak i stisneš enter ali ako u jedan red upišeš cijeli niz i stisneš enter onda to nije to

Nova poruka
E-mail:
Lozinka:
 
vrh stranice