Allerdings wird unsere Source jetzt sehr unübersichtlich und lang (wobei das hier noch geht, wenn ich an die Source denk mit der ich arbeite o_O )
Doch hier kommen die Funktionen ins Spiel!
Funktionen werden ähnlich wie Variablen erzeugt aber doch anders ;D
Code:
void Funktionsname()
{
//Befehle etc.
}
Funktionen aufrufen ist auch sehr einfach.
Code:
Funktionsname();
Also müsst ihr für jede Rechenmethode eine Funktion schreiben und diese dann aufrufen.
Eure Aufgabe könnt ihr euch wohl schon denken ;D
Hausaufgabe: Schreibt einen vollständigen Rechner! =D
Und tut euch selber den Gefallen und rückt alles ein
also:
Hab nen problem mit dem erstellen von Funktionen die funktion kann nicht kompiliert werden, weil anscheinend noch nen befehl davor stehen muss oder nen semikolon. zumindest meint der compieler das kanns sein das ich noch nen bibliothek einbinden muss?
Ok hier is die source ich weiß der rechner selbst funzt so noch net aber es geht mir erstma darum das void net funzt^^
Code:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string zeichen;
int zahl;
int ergebnis;
void Plus()
{
ergebnis=ergebnis+zahl;
}
void Minus()
{
ergebnis=ergebnis-zahl;
}
void Mal()
{
ergebnis=ergebnis*zahl;
}
void Geteilt()
{
ergebnis=ergebnis/zahl;
}
while (0<1)
{
cout << "Willkommen im Burningrechner v2" << endl
<< "Bitte erst die Zahl und nach der zahl das rechenzeichen eingeben" << endl;
cin >> ergebnis;
cin >> zeichen;
cin >> zahl;
if (zeichen=="+") Plus();
if (zeichen=="-") Minus();
if (zeichen=="*") Mal();
if (zeichen=="/") Geteilt();
cin.get();
}
}
Hab mir mal die Mühe gemacht und dein Source gefixxt:
(Das Forum änderst immer automatisch überall wo "n" oder "nn" steht, kommt noch ein "\" vor, also bei "n" kommt "\n" und bei "nn" kommt "\n\n" hin, aber das Forum lässt die "\" weg. Falls du nicht weißt was ich meine dann geb ich dir den Source nochmal ohne die Umbrüche.
while (0<1)
{
cout << "Willkommen im Burningrechner v2" << endl
<< "Bitte erst die Zahl dann das Rechenzeichen und dann die zweite Zahl eingeben:n" << endl;
cin >> zahl1;
cin >> zeichen;
cin >> zahl2;
if (zeichen=="+") Plus();
if (zeichen=="-") Minus();
if (zeichen=="*") Mal();
if (zeichen=="/") Geteilt();
cin.get();
}
}
Damit du auch aus deinen Fehlern lernst erklär ich dir mal was du falsch gemacht hast.
Also wegen den 'Void', mit void erstellst du eine eigene Funktion, und du kannst keine Funktion in einer anderen Funktion erstellen, dein Source sah so aus:
Code:
int main()
{
void()
}
Richtig wäre gewesen:
Code:
int main()
{
//source
}
void()
{
//source
}
Unter anderem hast du 3 Sachen eingelesen, Ergebnis, Zahl und Rechenzeichnung, was wenn man sich das genauer ansieht Schwachsinn ist. Auch deine Funktion "ergebnis=ergebnis-zahl" das wäre ein bisschen merkwürdig oder? Hab das jetzt so verbessert das 3 Sachen eingelesen werden, Zahl1, Rechenzeichen, Zahl2, dürfte jetzt einwandfrei funktionieren.
(Beispiel: 12 + 32 ; 123123 - 12393128998123 ; falsch wäre 12+ 123, weil die drei Variablen durch ein Leerzeichen voneinander getrennt werden).
Ach ja, "\n" steht übrigens für einen Zeilenumbruch, damit springt er lediglich eine Zeile weiter bevor er den nächsten String ausgibt damit es übersichtlicher wird.
Beispiel: "Hallo, ich bin ZeroTen"
Code:
Hallo ich bin ZeroTen
"Hallo\nIch bin ZeroTen"
Code:
Hallo,
Ich bin ZeroTen
Falls du noch Fragen hast, oder ich Müll rede dann sagt mir bescheid
Erst void, dann int main ;D
Grund: Der Compiler läuft von oben nach unten durch, wenn man versucht eine Funktion aufzurufen bevor diese Deklariert wurde gibts nen Error ;D
Lol, schon klar das das nicht funktioniert, du hast mich falsch verstanden <.< , in meinem Source steht nirgends das ich eine Funktion aufrufe die nicht deklariert ist
Code:
int main()
{
//source
}
void blabla()
{
//source
}
oder siehst du irgendwo das bei int main blabla() drin steht o0 ich denke nicht, wie ich meinem Post erklärt habe soll das nur ein Beispiel dafür sein, das man keine Keine Funktion in einer anderen Funktion deklarieren kann, und das geht aus meinem Beispiel klar hervor <.<
Hast du dir nichtmals den Thread durchgelesen? Er hatte 2 Funktionen deklariert, und zwar Eine in der Anderen, und das ist falsch, die müssen auseinander deklariert, werden, was soll dann an meinem Beispiel bitte keinen Sinn machen? Wenn ich
Code:
int main()
{
}
schreiben würde dann würste er doch gar nicht was mit der 2. Funktion ist, und jetzt Back 2 Topic -_-
bzw das ich nur ergebnis und zahl brauche hatte schon seinen sinn nur war das aus dem quell code nicht ganz ersichtlich ich wollte es so haben das man unendlich viele rechenschritte machen kann und mit dem vorher gehenden ergebnis weiter rechnen.
und damit du weil das oben vielleicht komisch ausgedrückt ist hier mal die fertige source die kann man vieleicht besser verstehen^^
Code:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
string zeichen;
int zahl;
int ergebnis;
void Plus()
{
ergebnis=ergebnis+zahl;
}
void Minus()
{
ergebnis=ergebnis-zahl;
}
void Mal()
{
ergebnis=ergebnis*zahl;
}
void Geteilt()
{
ergebnis=ergebnis/zahl;
}
int main()
{
cout << "Willkommen im Burningrechner v2" << endl
<< "Bitte erst die Zahl und nach der zahl das rechenzeichen eingeben" << endl;
cin >> ergebnis;
while (0<1)
{
cin >> zeichen;
cin >> zahl;
if (zeichen=="+") Plus();
if (zeichen=="-") Minus();
if (zeichen=="*") Mal();
if (zeichen=="/") Geteilt();
cout << "=" << endl << ergebnis << endl;
cin.get();
}
}
Naja ich verstehe trotzdem nicht wie dein Source funktionieren soll.
Code:
<< "Bitte erst die Zahl und nach der zahl das rechenzeichen eingeben" << endl;
Das wäre dann ja z.B. "123 +" oder "312 -" , da fehlt doch die zweite Zahl oder nicht o0. Du könntest höchstens in den voids, z.B. void Plus () am Ende eine weitere Abfrage machen ob du mit dem Ergebnis weiter rechnen möchtest oder nicht, das würde dann gehen
öhm ja ich merk grad der satz is blöd xD
aber das ganze funktioniert so ich gebe einmalig ergebnis ein das ist meine erste zahl dann kommt das rechen zeichen und dann kommt zahl die subtrahiere/addiere etc. ich dann mit ergebnis nur so kann ich das ergebnis der vorigen rechnung behalten (außer über nen dummy aber das wäre noch mehr unötige arbeit^^)
Das mit der Abfrage ob ich weiter rechenen will kann ich noch machen muss halt grad noch ma überlegen wie
Mathe Stunde! 04/26/2009 - School & Education - 10 Replies Damit eure Gehirne nicht ganz dahinschmelzen, hier ein paar Mathe-Aufgaben:
Wenn E*pvpers 1.004.077 User hat, und die gesamte Anzahl aller
Beiträge 1.963.030 beträgt, wieviele Beiträge müsste dann (In der
Theorie) jeder User gemacht haben?
Wenn Cefion 39 Beiträge gepostet hat, und seit dem 08.05.2007
3.Stunde- Mathe und Schleifen 02/26/2008 - Coding Tutorials - 5 Replies edit: Da qhr4s3 anscheinend nicht in der Lage ist nen besseres Tut zu schreiben, hab ichs wieder geadded ;D
Guten Mittag *Pizza mampf*,
Hab lange überlegt (ca. 6Schulstunden) was Thema der 3. Stunde wird. Hab mich dann entschlossen euch mit Mathe zu quälen ;)
= Zuweisung
//z.B.
var = 3;
Mathe HA 04/18/2007 - School & Education - 12 Replies :D
Mup, ich brauche mal Hilfe von euch bei 2 Matheaufgaben.
1. Die katheten eines rechtwinkligen Dreiecks sind zusammen 12 Längeneinheiten lang. Wie groß sind die Katheten zu wählen, damit das Quadrat über der Hypotenuse möglichst klein wird. Wie groß ist das Hypotenusen Quadrat dann?
2. Der Querschnitte eines Kanals ist ein gleichschenkligen Dreieck. Aus bautechnischen Gründen soll die Basis (des Dreiecks) und die Höhe (d.D.) zusammen 23 sein. Welche Maße sind für Basis und Höhe zu...
1 in Mathe 12/09/2006 - Quotes - 8 Replies Punkt.
Close thiesssssss plieassssseeeee !1111111