Hallo Lug,
mal wieder was ganz banales...Ich uebe gerade Wertuebergabe in C.
Ueber eine Fkt., die int zurueckgibt, komme ich aber irgendwie nicht
hinaus: "float fkt()" bringt mir Warnungen beim Compilieren und gibt
fantastische Werte zurueck. Habe schon diverse Literatur durchgeguckt...
Kann mir jemand einen Tip geben?
Torsten
Die Warnungen:
> gcc -o aufgabe14 aufgabe14.c
aufgabe14.c:34: warning: type mismatch with previous implicit
declaration
aufgabe14.c:26: warning: previous implicit declaration of `calc'
aufgabe14.c:34: warning: `calc' was previously implicitly declared to
return `int'
#include <stdio.h>
int main(void)
{
float x,y;
char op;
printf("\n\n\n------------------------------------\n");
printf("| Kleinrechner Vers. 1 |\n");
printf("| Grundrechenarten - max 2. Zahlen |");
printf("\n------------------------------------\n\n\n");
printf("Nur Integer-Werte!\n");
printf("Operatoren: +,-,*,/\n\n");
printf(">> ");scanf("%f%c%f",&x,&op,&y);
if(op=='+'||op=='-'||op=='*'||op=='/')
{
/*printf("\nOperator: OK...");*/
if(y==0 && op=='/') printf("\n>> ...Division durch Null\n\n");
/*else printf("\n\nEinen Moment......\n");*/
}
else
printf("\nSyntax Fehler: %c kein Operator",op);
calc(&x,&y,&op);
if(calc(&x,&y,&op)==EOF) printf(">> = Fehler\n\n\n");
else printf("\n>> = %f\n\n\n",calc(&x,&y,&op));
}
float calc(float *ix, float *yp, char *op)
{
float gibt;
switch(*op)
{
case '+': gibt=*ix+*yp;break;
case '-': gibt=*ix-*yp;break;
case '*': gibt=(*ix)*(*yp);break;
case '/': if(*yp!=0) gibt=(*ix)/(*yp);
else gibt=EOF;
default: gibt=EOF;break;
}
return(gibt);
}