Programmierung Dev-C++

Tobias01

Grünschnabel
Hy
Ich sitzte zur Zeit bei meinem Rechner und versuche ein Programm, das wir für die Schule machen müssen und komme einfach nicht weiter. Ich muss aber gestehen, das ich ein blutiger Anfänger bin. Vielleicht könnte mir jemand weiterhelfen.:

#include<stdio.h>// eingeben von eins (also beliebige Zahl1) und zwei (beliebige Zahl2) und es soll mit einem zweitem Programm zurückgegeben werden. Es sollte auch den unterschied zwischen +,-,*und / kennen, also ein kleiner Taschenrechener. Mit dezimalzahlen
float z1,z2;
float add()
{
float a;
a=z1+z2;
return z1+z2;
}
float sub()
{
float s;
s=z1-z2;
return z1-z2;
}
float mul()
{
float m;
m=z1*z2;
return z1*z2;
}
float div()
{
float d;
d=z1/z2;
return z1/z2;
}
int main()
{
char rechnen; //Datentyp Character (beliebiges Zeichen) (auch sonderzeichen)
printf("Geben Sie Zahl1 ein\n");
scanf("%f",z1);
printf("Geben Sie Zahl2 ein\n");
scanf("%f",z2);// f für eine Dezimalzahl

printf("Addition %f\n",add(z1,z2));
printf("Subtration %f\n",sub(z1,z2));
printf("Multiplikation %f\n",mul(z1,z2));
printf("Division %f\n",div(z1,z2));
getchar();
printf("Die Zahl beträgt %f\n",z1,z2);
getchar();
return 0;
// system("Pause")
}

Bitte um Antwort
 

Onkel Schuppig

Erfahrenes Mitglied
Hi,
um die Aufgabe lösen zu können, musst du doch die einfachsten Grundkenntnisse der Sprache C haben. Scheinen aber zu fehlen. Hier in dem Forum gibt's viele Quellen zum Lernen der Sprache.
 
Zuletzt bearbeitet:

Tobias01

Grünschnabel
Wir haben in der Schule leider einen Lehrer der es selbst nicht so gut kann *g*, und der hat uns einfach ein Skriptum gegeben, wo sich kein Schwein auskennt.:confused:
ich habe nun die fehlenden Parameter dazugegeben, was nun so aussieht:
#include<stdio.h>// eingeben von eins und zwei und es soll mit einem zweitem Programm das zurückgegeben werden. mit dezimalzahlen
float z1,z2;
float add()
{
float a;
a=z1+z2;
return z1+z2;
}
float sub()
{
float s;
s=z1-z2;
return z1-z2;
}
float mul()
{
float m;
m=z1*z2;
return z1*z2;
}
float div()
{
float d;
d=z1/z2;
return z1/z2;
}
int main()
{
float add;
float sub;
float mul;
float div;
char rechnen; //Datentyp Character (beliebiges Zeichen) (auch sonderzeichen)
printf("Geben Sie Zahl1 ein\n");
scanf("%f",z1);
printf("Geben Sie Zahl2 ein\n");
scanf("%f",z2);// f für eine Dezimalzahl

printf("Addition %f\n",add);
scanf("%f",add);
printf("Subtration %f\n",sub);
scanf("%f",sub);
printf("Multiplikation %f\n",mul);
scanf("%f",mul);
printf("Division %f\n",div);
scanf("%f",div);
getchar();
printf("Die Zahl beträgt %f\n",z1,z2);
getchar();
return 0;
// system("Pause")
}
 
Zuletzt bearbeitet:

Tobias01

Grünschnabel
nun, ich habe das Programm so weit hingebracht das es Funktioniert, jedoch der Windows Treiber spielt irgend wie nicht mit, es kommt immer eine Meldung, das Windows einen Fehler festgestelt hat und das EXE Programm beendet werden muss.
 

Onkel Schuppig

Erfahrenes Mitglied
Tschuldige, war einige Tage nicht im Lande.
Also, ein paar Anregungen:
Code:
float z1, z2;
In der ersten Zeile definierst du globale Variablen. Das geht zwar, ist aber sehr fragwürdig. Das solltest du besser in main() unterbringen. Aber egal. Lassen wir das so und machen weiter.
Dann sieh dir mal eine der Funktionen an:
Code:
float add()
{
float a;
a=z1+z2;
return z1+z2;
}
Da ist was doppelt. a wird zwar mit z1 + z2 belegt, aber danach gar nicht benutzt. Schreib es doch so:
Code:
float add() {
  return z1 + z2;
}
Dann kommen wir zur Funktion main(). Diese "float add, mul, sub, und div" verstehe ich nicht.
Dann noch das hier:
Code:
printf("Addition %f\n",add);
scanf("%f",add); 
printf("Subtration %f\n",sub);
scanf("%f",sub);
printf("Multiplikation %f\n",mul);
scanf("%f",mul);
printf("Division %f\n",div);
scanf("%f",div);
getchar();
printf("Die Zahl beträgt %f\n",z1,z2);
Die letzte Zeile ist meiner Meinung nach überflüssig und falsch auch noch. Die letzten 4 scanf-Befehle in diesem Abschnitt lasse mal ruhig weg. Und wenn man genau ist, sollte bei Division abgefragt werden on z2 == 0 ist.
 
Zuletzt bearbeitet:

Tobias01

Grünschnabel
Ist kein Problem, danke das du überhaupst dir für mich Zeit nimmst. :)

Das Programm habe ich jetzt mit deinen Verbesserungen umgeschrieben, man kann zwar die erste Zahl eingeben, dann kommt aber die alte meldung von Windows, das die exe datei geschlossen werden muss.

#include<stdio.h>
float z1;
float z2;
float add()
{
return z1+z2;
}
float sub()
{
return z1-z2;
}
float mul()
{
return z1*z2;
}
float div()
{
return z1/z2;
}
int main()
{
char rechnen; //Datentyp Character (beliebiges Zeichen) (auch sonderzeichen)
printf("Geben Sie Zahl1 ein\n");
scanf("%f",z1);
printf("Geben Sie die Rechenart ein\n");
scanf("%+%-%*%/");
printf("Geben Sie Zahl2 ein\n");
scanf("%f",z2);// f für eine Dezimalzahl

printf("Addition %f\n",add);
scanf("%f",add);
printf("Subtration %f\n",sub);
scanf("%f",sub);
printf("Multiplikation %f\n",mul);
scanf("%f",mul);
printf("Division %f\n",div);
scanf("%f",div);
getchar();
printf("Die Zahl beträgt %f\n",z1,z2);
getchar();
}
 

deepthroat

Erfahrenes Mitglied
Hi.

Du musst bei der Funktion scanf einen Zeiger, also die Adresse einer Variablen angeben. Dort speichert scanf bei erfolgreichem "scannen" der Eingabe den Wert.

Die Adresse einer Variablen bekommt man mit dem Adress-Operator (&):
C:
float f;

scanf("%f", &f);
Gruß
 

Onkel Schuppig

Erfahrenes Mitglied
Hi nochmal, erstmal musst du deepthroats Beitrag beachten. Schreibe das "&":
Code:
scanf("%f", &z1);
Nächstes Problem:
Code:
scanf("%+%-%*%/");
ist völliger Unsinn. Soll nicht eins der Zeichen +, -, * und / eingegeben werden?
Dann müsste der Code danach auch entsprechend diese Eingabe verarbeiten (mit einer switch-Anweisung zum Beispiel). Und diese Zeilen wie
Code:
scanf("%f", add);
sollten doch gelöscht werden.
Noch viel Arbeit!