[ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
jednoducha kalkulacka

Registrovaný: 18.03.07
Prihlásený: 02.06.13
Príspevky: 264
Témy: 82 | 82
NapísalOffline : 15.01.2012 10:33 | jednoducha kalkulacka

zdravim snazil som sa naprogramovat jednoduchu kalkulacku:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


    float cislo1, cislo2;
    char operand;
    float vysledek;

int main (void){

    puts("this is calculator from SVEJK");
    puts("=============================\n\n\n");


    scanf("%f%c%f", &cislo1, &operand, &cislo2);
    vypocet();


return 0;
}


void vypocet (){

    switch(operand){
        case'+':
        vysledek=cislo1+cislo2;
        printf("%f\n", vysledek);
        scanf("%c%f", &operand, &cislo2);
        vypocet();
        case'/':
        vysledek=cislo1/cislo2;
        printf("%f", vysledek);
        scanf("%c%f", &operand, &cislo2);
        vypocet();
        case'*':
        vysledek=cislo1*cislo2;
        printf("%f", vysledek);
        scanf("%c%f", &operand, &cislo2);
        vypocet();
        case'-':
        vysledek=cislo1-cislo2;
        printf("%f", vysledek);
        scanf("%c%f", &operand, &cislo2);
        vypocet();

        }

}


no je tu jeden problem.. najskor nacita cislo+operand+cislo, pokracujefunkciou vypocet kde sa podla operandu prevedie vypocet. dalej som chcel aby znovu nacital operand+cislo, a pokracoval funkciou vypocet, aby to fungovalo jak nekonecna kalkulacka..

lenze scanf("%c%f", &operand, &cislo2); poda kontrolnych vypisou nenacitava dbre znak operand. neviete niektopreco??

som zaciatocnik.. sorry za mozno debilne otazky :)


Online

Skúsený užívateľ
Skúsený užívateľ
jednoducha kalkulacka

Registrovaný: 11.01.09
Prihlásený: 23.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 15.01.2012 13:31 | jednoducha kalkulacka

1.) kedze nepouzivas prikaz break po kazdom navesti v prikaze switch, po kazdom navesti sa jednoducho prejde na dalsie navestie. Prejavi sa to sice az uplne na konci, ak zadas napr iny znak, ako + - * / , kedze pouzivas rekurziu, ale je to velmi casta chyba a zaciatocnici ju dost tazko hladaju. Nikdy preto na break nezabudaj, ak nie je nutne vykonat viac navesti - v tomto pripade to nutne nie je, prave naopak, je to chyba.

2.) predopkladam, ze ak zadavas dalsie moznosti hned po prvej, kde uz citas iba operand a cislo, chces nadvazovat na predchadzajuci vysledok. Ty ale nikde nepouzivas tento vysledok, stale pocitas odznova.

3.) tu je hlavny povodca chyby - opat zabudas, ze scanf nacitava aj znak enter a ten robi pri dalsom citani neplechu. Radu, ako sa s tym vysporiadat, som ti dal v tejto teme. Takze mozes pouzit %*c aby ho ignorovalo, kedze vravis, ze funkcia, ktoru som ti poradil, je pre teba tazkopadna.

Vysledny funkcny program:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void vypocet ();


    float cislo1, cislo2;
    char operand;
    float vysledek;

int main (void){

    puts("this is calculator from SVEJK");
    puts("=============================\n\n\n");


    scanf("%f%c%f%*c", &cislo1, &operand, &cislo2);
    vysledek = cislo1;
    vypocet();


return 0;
}


void vypocet (){

    switch(operand){
        case'+':
        vysledek=vysledek+cislo2;
        printf("%f\n", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;
        case'/':
        vysledek=vysledek/cislo2;
        printf("%f\n", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;
        case'*':
        vysledek=vysledek*cislo2;
        printf("%f\n", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;
        case'-':
        vysledek=vysledek-cislo2;
        printf("%f\n", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;
        }

}


Offline

Užívateľ
Užívateľ
jednoducha kalkulacka

Registrovaný: 18.03.07
Prihlásený: 02.06.13
Príspevky: 264
Témy: 82 | 82
Napísal autor témyOffline : 15.01.2012 16:45 | jednoducha kalkulacka

dakujem, na ten enter stale zabudam..

este by som ta prosil o vysvetlenie ohladom jedneho caseu ktory som dorobil. mal by vyrabat mocninu len hlasi ze je zly navratovy typ, no on je dobry tu je ta cast:
Kód:
case'n':
        vysledek=mocnina(vysledek, cislo2);
        printf("%f", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;

        }
return 0;
}

float mocnina (float cislo, float exponent){
float umocnene;
    for(int n=exponent; n>0; n--){
        umocnene=cislo*cislo;
        }
return umocnene;
}


to vyladovanie programou mi nejde..

// pridané po 6 minútach od posledného príspevku

alebo dalsi moznost:
Kód:
case'n':
        vysledek=mocnina();
        printf("%f", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;

        }
return 0;
}

float mocnina (){

    for(int n=cislo2; n>1; n--){
        vysledek=vysledek*vysledek;
        }
return vysledek;
}


// pridané po 7 minútach od posledného príspevku

no uz mi to funguje:
Kód:
case'n':
        vysledek=pow(vysledek, cislo2);
        printf("%f\n", vysledek);
        scanf("%c%f%*c", &operand, &cislo2);
        vypocet();
        break;

        }
return 0;
}


jaka bola chyba v tych funkciach?
diki


Online

Skúsený užívateľ
Skúsený užívateľ
jednoducha kalkulacka

Registrovaný: 11.01.09
Prihlásený: 23.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 15.01.2012 21:13 | jednoducha kalkulacka

Pretoze funkcia mocnina() bola sice definovana ( telo funkcie ), ale zrejme nebola deklarovana - v programe nebolo zavedene jej meno. Je spravne uviest prototypy ( deklaracie ) funkcii na zaciatku programu, ak nepouzivas hlavickove subory, ktore to maju za ulohu. Priklad tvojho riesenia:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void vypocet ();
float mocnina (float cislo, float exponent);

/* pokracovanie programu ... */


Offline

Užívateľ
Užívateľ
jednoducha kalkulacka

Registrovaný: 29.09.11
Prihlásený: 11.03.16
Príspevky: 170
Témy: 21 | 21
Bydlisko: Trenčín
NapísalOffline : 17.01.2012 15:18 | jednoducha kalkulacka

ak sa mozem spytat v akom jazyku je to?


Offline

Čestný člen
Čestný člen
jednoducha kalkulacka

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 17.01.2012 15:24 | jednoducha kalkulacka

C.


Offline

Užívateľ
Užívateľ
jednoducha kalkulacka

Registrovaný: 29.09.11
Prihlásený: 11.03.16
Príspevky: 170
Témy: 21 | 21
Bydlisko: Trenčín
NapísalOffline : 17.01.2012 15:33 | jednoducha kalkulacka

Dakujem


 [ Príspevkov: 7 ] 


jednoducha kalkulacka



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

kalkulačka

v Ostatné

3

548

03.02.2011 22:16

elfman

V tomto fóre nie sú ďalšie neprečítané témy.

kalkulačka

v Ostatné programy

0

677

21.02.2009 21:24

bugi512

V tomto fóre nie sú ďalšie neprečítané témy.

kalkulacka

v Ostatné

3

407

25.01.2012 14:54

jtbs

V tomto fóre nie sú ďalšie neprečítané témy.

kalkulacka

v JavaScript, VBScript, Ajax

2

755

09.08.2008 18:39

exoomer

V tomto fóre nie sú ďalšie neprečítané témy.

Kalkulacka

v Ostatné

6

855

10.03.2012 21:36

F3RY

V tomto fóre nie sú ďalšie neprečítané témy.

Kalkulačka

v Ostatné programy

1

531

30.05.2011 23:00

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi-kalkulačka

v Delphi, Visual Basic

17

1221

02.03.2013 10:18

expoox

V tomto fóre nie sú ďalšie neprečítané témy.

Kalkulačka - assembler

v Assembler, C, C++, Pascal, Java

0

719

10.11.2011 18:54

Reverser

V tomto fóre nie sú ďalšie neprečítané témy.

Java Kalkulacka

v Assembler, C, C++, Pascal, Java

1

1004

19.04.2010 15:04

Forty-

V tomto fóre nie sú ďalšie neprečítané témy.

euro kalkulacka

v PHP, ASP

16

1723

12.08.2008 9:22

javo

V tomto fóre nie sú ďalšie neprečítané témy.

Socialne stipendium - kalkulacka?

v Vzdelanie, štúdium, škola

5

1705

02.10.2013 17:12

Ominous

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc kalkulacka C++

v Assembler, C, C++, Pascal, Java

2

2021

21.01.2008 17:23

Peto670

V tomto fóre nie sú ďalšie neprečítané témy.

kalkulacka v C++

v Assembler, C, C++, Pascal, Java

12

2102

16.09.2007 16:51

Bacil

V tomto fóre nie sú ďalšie neprečítané témy.

anketa, počitadlo, kalkulačka....

v Webdesign

9

597

05.07.2014 15:00

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

kalkulacka ceny produktu

v JavaScript, VBScript, Ajax

11

1298

14.02.2009 19:06

pildo

V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic Kalkulačka

v Delphi, Visual Basic

1

1057

29.04.2011 12:28

walther



© 2005 - 2024 PCforum, edited by JanoF