Kalkulator u C-u

poruka: 41
|
čitano: 20.809
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
protjeran
offline
RE: Kalkulator u C-u
gad kaže...

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

 u mom rješenju to nije tako...
17 godina
neaktivan
offline
Kalkulator u C-u
autorov komentar
prihvaćeno rješenje

ja i zaboravih za ovu temu..ugl super sam prosao pa eo postam kod...ono sa postivanjem operacija se moglo napravit bez stringova i ostalih fora..al mi se ne nije dalo backat oko toga.. eo koda

#include <stdio.h>


main()
{
    //definisanje promenjivih
    int operand=0, rez=0;           //operand - predstavlja promenjivu drugog operanda, rez - predstavlja prvi operand a ujedno i rezultat
    char operacija;                 //operacija - promenjiva za znak operacije (+ - / * )

 

    printf("\n\tKALKULATOR ZA CELOBROJNE VREDNOSTI SA 4 OSNOVNE OPERACIJE [+ - * /] \n\n");      //STA PROGRAM RADI
    printf("\n\t\t\t\tver 1.5 \n\n");
    printf("\n\t\tKorisnik unosi izraz sve dok za operaciju ne unese [=] !!\n");

    printf("\n\t\t\tUnesite operand : ");
    scanf("%d", &rez);      //unosenje prvog operanda u promenjivu rez
    fflush(stdin);          //ciscenje bufera


    do{               //ulazenje u do/while petlju..koja omogucuje suksesivno unosenje brojeva

           do{         //do/while petlja koja predstavlja zastitu od unosenja pogresnog znaka operacije
                printf("\n\t\t\tUnesite operaciju [+ - * / =] :");
                scanf("%c", &operacija);                //unosenje znaka operacije
                if(operacija!='+'&&operacija!='-'&&operacija!='*'&&operacija!='/'&&operacija!='=')  //ako je znak operacije razlicit od predvidjenog stampa gresku
                {
                printf("\n\t\t\tMorate uneti jedan od ovih znakova [ + - * / =] !!!");
                fflush(stdin);
                }
            }while(operacija!='+'&&operacija!='-'&&operacija!='*'&&operacija!='/'&&operacija!='='); //ako je znak operacije razlicit od predvidjenog vraca na ponovni unos operacije

 

        switch(operacija)       //switch - sluzi za grananje. Ako je operacija + prebacuje se na slucaja kada je plus i vrsi sabiranje dva broja
        {
            case '+':
                        printf("\n\t\t\tUnesite operand: ");
                        scanf("%d", &operand);              //unosenje drugog operanda
                        rez+=operand;                       //rez ujedno predstavlja i prvi operand a i rezultat. rez+=operand je ekvivaletno rez=rez+operand
                        break;                              //zavrsava se switch ciklus za +
            case '-':
                        printf("\n\t\t\tUnesite operand: ");
                        scanf("%d", &operand);
                        rez-=operand;
                        break;
            case '*':
                        printf("\n\t\t\tUnesite operand: ");
                        scanf("%d", &operand);
                        rez*=operand;
                        break;
            case '/':
                        printf("\n\t\t\tUnesite operand: ");
                        scanf("%d", &operand);
                            if(operand==0)          //posto kod delenja je nedozvoljeno delenje sa nulom, zato imamo taj uslov. Ako se pojavi delenje sa nulom, program izbaci gresku o tome
                            {
                                printf("\n\t\t\tGRESKA : Ne moze se deliti sa nulom!!! \n");
                                break;

                            }else{                  //ako nije delenje sa nulom program se redovno nastavlja

                                rez/=operand;
                                break;
                             }

        }

    fflush(stdin);

    }while(operacija!='=');         //do/while petlja se vrti sve dok je operacija razlicita od =

    printf("\n\t\t\tRezultat je %d\n\n", rez);      //stampanje konacnog rezultata
    return 0;
}

ako nekome treba...

Moj PC  
0 0 hvala 0
17 godina
offline
RE: Kalkulator u C-u
Budem ovo naučio napamet pa se budem pravio pred prijatelje. "Vidite mene ja znam napravit kalkulator!"
Potuku se Jacques Houdek i Walker, teksaški rendžer. Walker udari Jacquesa kružnim, a ovaj se zavrti oko svoje osi i usiše sve oko sebe.
15 godina
neaktivan
offline
Kalkulator u C-u

molio bih pomoc oko zadatka koji glasi :

 

napisati program i realizirati sklop kalkulatora koji izracunava izzraz od brojeva i operatora + - * /  te ispisuje rezultat na ekranu.

 

npr za   uneseno  7+3*5

 

            ispisuje  7+3*5=22

 

ranije ste spomenuli da se izraz upise preko stringa i da se tako moze odrediti prioritet operatora. pa bih molio pomoc oko koda. u uto bih to trebao predati. fala unaprijed :)

Moj PC  
0 1 hvala 0
16 godina
offline
Re: Kalkulator u C-u
kagu kaže...

molio bih pomoc oko zadatka koji glasi :

 

napisati program i realizirati sklop kalkulatora koji izracunava izzraz od brojeva i operatora + - * /  te ispisuje rezultat na ekranu.

 

npr za   uneseno  7+3*5

 

            ispisuje  7+3*5=22

 

ranije ste spomenuli da se izraz upise preko stringa i da se tako moze odrediti prioritet operatora. pa bih molio pomoc oko koda. u uto bih to trebao predati. fala unaprijed :)

 

Ja ti garantiram da na ovom forumu neces samo tako dobiti gotov kod...

Mozes jedino dobiti pomoc oko svog koda i moze ti netko reci di radis gresku, al gotov kod neces dobiti ako se ne potrudis.

Inace gore imas vec skoro gotov program koji trebas samo malo promjeniti i to je to...

:D
Poruka je uređivana zadnji put ned 4.5.2014 13:37 (CroNk3r).
10 godina
neaktivan
offline
Kalkulator u C-u

Pozdrav!
Imam zadatak napisati kod za kalkulator koji glasi: 

 

Vaš program učitava string sa standard inputa koji se sastoji od cjelobrojnih brojeva i znakova matematičkih operacija. Vaš program mora pravilno prepoznati ulazne brojeve u učitanom stringu, pravilno izračunati i ispisati rješenje matematičkog izraza kojeg ulazni string predstavlja, pazeći pri tome na prednost određenih matematičkih operacija.

Napomena: Zabranjeno je korištenje biblioteka string.h i ctypes biblioteka. Svako prepoznavanje i parsiranje brojeva iz ulaznog stringa morate isprogramirati samostalno.

 

Napravila sam pomoću polja, ali ne izbacuje mi točan rezultat, jer nekako 3 mjesta moram prebaciti u 1, probala sam sa shiftanjem, ali ne radi :/

Ako netko može pomoći bila bih vrlo zahvalna.

 

#include <stdio.h>
#include <stdlib.h>

 

int main(){


char ulaz[20];
int rez=0;


printf("Unesite izraz koji treba izracunati: ");
fgets(ulaz,19,stdin);


for(int i=0;i<20;i++){
if(ulaz[i]=='*'){
rez+=(ulaz[i-1]-48)*(ulaz[i+1]-48);
ulaz[i]=rez;
for(int j=i-1;j<20;j++){
ulaz[j]=ulaz[j+1];
}
}
}
for(int i=0;i<20;i++){
if(ulaz[i]=='/'){
rez+=(ulaz[i-1]-48)/(ulaz[i+1]-48);
for(int j=i-1;j<20;j++){
ulaz[j]=ulaz[j+1];
}
}
}
for(int i=0;i<20;i++){
if(ulaz[i]=='+'){
rez+=(ulaz[i-1]-48)+(ulaz[i+1]-48);
for(int j=i-1;j<20;j++){
ulaz[j]=ulaz[j+1];
}
}
}
for(int i=0;i<20;i++){
if(ulaz[i]=='-'){
rez+=(ulaz[i-1]-48)-(ulaz[i+1]-48);
for(int j=i-1;j<20;j++){
ulaz[j]=ulaz[j+1];
}
}
}
printf("Rezultat je : %d",rez);
system("pause");
return 0;
}

 
0 0 hvala 0
14 godina
offline
Kalkulator u C-u

Krivo gledas zadatak, ovdje ti trebaju funkcije pise ti lijepo znakova matematičkih operacija, a to nisu samo + - etc. i sto si vec napisala, treba ti biblioteka #include <math.h>

http://www.cs.cf.ac.uk/Dave/C/node17.html

napocetku neki define napravi lakse ce ti biti:

#define

onda moras ici rucno po stringu jer nesmijes string.h korisiti, pocetni string, zavrsni string i rucno pretrazivati po njemu sa nekom for petljom koja je duljine ulaznog stringa...

Zadatak jako tezak, po meni :P, mozda netko od kolega zna bolje objasniti :)), ja sam ti dao viziju da to nije tako jednostavno kao u tvom primjeru.

Matematicke operaciju nisu +,-,*,/... sto ako ti profesor kaze daj mi logaritam broja 10 :))

Moj PC  
0 0 hvala 0
13 godina
offline
Re: Kalkulator u C-u
Luka123 kaže...

Krivo gledas zadatak, ovdje ti trebaju funkcije pise ti lijepo znakova matematičkih operacija, a to nisu samo + - etc. i sto si vec napisala, treba ti biblioteka #include <math.h>

http://www.cs.cf.ac.uk/Dave/C/node17.html

napocetku neki define napravi lakse ce ti biti:

#define

onda moras ici rucno po stringu jer nesmijes string.h korisiti, pocetni string, zavrsni string i rucno pretrazivati po njemu sa nekom for petljom koja je duljine ulaznog stringa...

Zadatak jako tezak, po meni :P, mozda netko od kolega zna bolje objasniti :)), ja sam ti dao viziju da to nije tako jednostavno kao u tvom primjeru.

Matematicke operaciju nisu +,-,*,/... sto ako ti profesor kaze daj mi logaritam broja 10 :))

Vjerojatno se misli na osnovni skup operacija, ovo što si ti spomenuo je definitivno teško te bi trebalo parsiranjem graditi stablo izraza pa probati sa različitim obilascima doći nekako do rješenja.

Nije valjda da se traži da implementiraju nešto poput ovoga?

 

Inače, poslao sam joj neko svoje rješenje na PM. Nije bogzna što, ali računa osnovne operacije i to samo nad cijelim brojevima, naravno.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
14 godina
offline
Re: Kalkulator u C-u
pr0n_addict kaže...
Luka123 kaže...

Krivo gledas zadatak, ovdje ti trebaju funkcije pise ti lijepo znakova matematičkih operacija, a to nisu samo + - etc. i sto si vec napisala, treba ti biblioteka #include <math.h>

http://www.cs.cf.ac.uk/Dave/C/node17.html

napocetku neki define napravi lakse ce ti biti:

#define

onda moras ici rucno po stringu jer nesmijes string.h korisiti, pocetni string, zavrsni string i rucno pretrazivati po njemu sa nekom for petljom koja je duljine ulaznog stringa...

Zadatak jako tezak, po meni :P, mozda netko od kolega zna bolje objasniti :)), ja sam ti dao viziju da to nije tako jednostavno kao u tvom primjeru.

Matematicke operaciju nisu +,-,*,/... sto ako ti profesor kaze daj mi logaritam broja 10 :))

Vjerojatno se misli na osnovni skup operacija, ovo što si ti spomenuo je definitivno teško te bi trebalo parsiranjem graditi stablo izraza pa probati sa različitim obilascima doći nekako do rješenja.

Nije valjda da se traži da implementiraju nešto poput ovoga?

 

Inače, poslao sam joj neko svoje rješenje na PM. Nije bogzna što, ali računa osnovne operacije i to samo nad cijelim brojevima, naravno.

 
Moze biti :O, cesto ovi koji drze lab vjezbe na fakultetima ili profesori sto tko joj je vec zadao zadatak copy paste rade, ali stvarno napraviti ovo sve bez koristenja stringa, pa rucno ici po njemu 1 po jedan char, nema smisla O_O, ali ako su u pitanju obicne operacije onda moze rijestiti zadatak na puno nacina, brze i "bezbolnije"!

14 godina
neaktivan
offline
Kalkulator u C-u

Ovaj zadatak sam već dosta puta vidio da se traži. Jedno od rješenja (iako ne najsretnije organizirano) je sljedeće:

 

#include <stdio.h>
#include <stdlib.h>

const char * expressionToParse = "3*2+4*1+(4+9)*6";

char peek(){
   return *expressionToParse;
}
char get(){
   return *expressionToParse++;
}
int expression();
int number(){
   int result = get() - '0';
   while (peek() >= '0' && peek() <= '9')
   {
      result = 10 * result + get() - '0';
   }
   return result;
}
int factor(){
   if (peek() >= '0' && peek() <= '9')
      return number();
   else if (peek() == '(')
   {
      get(); // '('
      int result = expression();
      get(); // ')'
      return result;
   }
   else if (peek() == '-')
   {
      get();
      return -factor();
   }
   return 0; // error
}
int term(){
   int result = factor();
   while (peek() == '*' || peek() == '/')
      if (get() == '*')
         result *= factor();
      else
         result /= factor();
   return result;
}
int expression(){
   int result = term();
   while (peek() == '+' || peek() == '-')
      if (get() == '+')
         result += term();
      else
         result -= term();
   return result;
}
int main(){
   int result = expression();
   printf("%d", result);

   return 0;
}

 

A sad si ti prepravi da možeš unijeti matematički izraz po želji, pa ga preko parametara prosljediti gore funkcijama.

Poruka je uređivana zadnji put ned 24.5.2015 15:48 (TracerCPP).
Moj PC  
3 0 hvala 1
13 godina
offline
Kalkulator u C-u

Tvoje rješenje podržava i zagrade te je definitivno bolje od mojega, šteta što se kolegica vjerojatno više neće pojaviti u temi.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice