[C] Kalkulator

lordmatiz
Użytkownik
Użytkownik
Posty: 36
Rejestracja: 3 lut 2010, o 04:23
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy

[C] Kalkulator

Post autor: lordmatiz »

Witam. Mam problem z napisaniem kalkulatora, który ma obliczać sumę, różnicę, iloraz, iloczyn i potęgę... Wszystko ma się dziać bez udziału jakiegokolwiek menu - czyli wpisując 4^3 oblicza konkretną potęgę, albo 2*2 i wyświetla iloczyn... Z góry zaznaczam, że jestem całkowicie świeży w temacie programowania i nie wiem co mam źle.
Oto co samemu wydziergałem:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdafx.h>
#include <math.h>
int iloczyn(float a, float b, float *wartosc) 
	{
	if((a<0||a>9)||(b<0||b>9)) return 1;
	else *wartosc=a*b;
	}
float iloraz(float a, float b, float *wartosc)
	{
	if((a<0||a>9)||(b<0||b>9)) return 1;
	else *wartosc=a/b;
	}
int suma(float a, float b, float *wartosc)
	{
	if((a<0||a>9)||(b<0||b>9)) return 1;
	else *wartosc=a+b;
	}
int roznica(float a, float b, float *wartosc)
	{
	if((a<0||a>9)||(b<0||b>9)) return 1;
	else *wartosc=a-b;
	}
int potega(float a, float b, float *wartosc)
	{
	if((a<0||a>9)||(b<0||b>9)) return 1;
	else *wartosc=pow(a,b);
	}
int main() 
{
float wynik,a,b;
char bufor[1024], znak;
printf("Podaj dzialanie (np.2*2)=");
scanf("%f",bufor);
if (sscanf(bufor,"%f%c%f",&a,&znak,&b)==3)
	{
	if (!iloczyn(a,b,&wynik) && znak=='*')
	printf("Iloczyn=%f\n",wynik);
	
	if (!iloraz(a,b,&wynik) && znak =='/')
	printf("Iloraz=%f\n",wynik);
	
	if (!suma(a,b,&wynik) && znak=='+')
	printf("Suma=%f\n", wynik);
	
	if (!roznica(a,b,&wynik) && znak=='-')
	printf("Roznica=%f\n", wynik);
	
	if (!potega(a,b,&wynik) && znak=='^')
	printf("Potega=%f\n", wynik);
	
	else printf("\nNiewlasciwe liczby lub zle dzialanie\n");
	}
else printf("\nNiewlasciwa liczba argumentow\n");
return 0;
}
Proszę bardziej doświadczonych forumowiczów o pomoc :)
Pozdrawiam.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

[C] Kalkulator

Post autor: Sokół »

Po pierwsze, błąd we wczytywaniu do bufora, wczytujesz wyrażenie do floata. Po drugie, spójrzmy na warunek

Kod: Zaznacz cały

 if (!iloczyn(a,b,&wynik) && znak=='*')
   printf("Iloczyn=%f\n",wynik); 

co mówi mniej więcej tyle:
jeśli funkcja iloczyn nie daje wyrażenia różnego od zera i znak działania to mnożenie, to wypisz...

czyli bes sęsu, jak to mówił Jasiu Śmietana. Napisz warunki na sam znak działania, albo stwórz switch case, będzie czytelniej i ekonomiczniej, bo dla każdych dwóch argumentów w ten sposób liczysz każde możliwe działanie.

Inna sprawa, nie rozumiem w samych funkcjach tego:

Kod: Zaznacz cały

if((a<0||a>9)||(b<0||b>9)) return 1;
   else *wartosc=a/b;
 
To ma być kalkulator dla liczb 1,2,3,..., 9?
ODPOWIEDZ