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); }