Parameterübergabe bei c++
-
Hallo liebe c++-Freunde,
hab ein klitze kleines Problem beim Verstehen mit der Parameterübergabe,
unzwar bräuchte ich ein lösungsbeispiel für folgendes Problem(bitte schickt mich nicht in irgendwelche tutorials weil ich da schon alles durchgelesen habe und es immernoch nicht verstanden habe) unzwar soll ich:
-ein auto hat die eigenschaften marke,farbe,leistung:
struct kfz
{
string farbe,marke;
float leistung;
}hab ich verstanden
-doch jetzt soll ich eine eingabefunktion schreiben um die daten in eine variable des kfz typs eingeben zu können, und die variablen sollen der funktion als parameter übergeben werden. - wie mache ich das(keine objektorientierte programmierung)
-
#include <iostream.h> #include <stl> struct Kfz { std::string farbe,marke; float leistung; } void meine_funktion(Kfz kfz) { } int main(char** params) { Kfz kfz; cin >> kfz.farbe; cin >> kfz.marke; cin >> kfz.leistung; mein_funktion(kfz); }so oder habe ich was falsch ?
-
DEvent schrieb:
so oder habe ich was falsch ?
#include <iostream> //ohne .h //#include <stl> Was ist denn das? #include <string> //den hier nicht vergessen using namespace std; struct Kfz { std::string farbe, marke; float leistung; } //Besser konstante Referenz nehmen, aber dein Ansatz war auch korrekt. void meine_funktion(const Kfz &kfz) { } //Wenn schon Parameter an main, dann richtig int main(int argc, char **argv) { Kfz kfz; cin >> kfz.farbe; cin >> kfz.marke; cin >> kfz.leistung; meine_funktion(kfz); }
-
hört sich vielleicht komisch an aber ich verstehe es nicht ganz könntest du es vielleicht erläutern ????
-
passt auf ich hab es so gemacht(es funktioniert doch hier ist es ohne parameterübergabe):
#include <conio.h>
#include <iostream>using namespace std;
struct kfz
{
string marke,farbe;
int anzahl,baujahr,nr;
float leistung_ps;void eingeben()
{
cout<<"####Eingabe####\n";cout<<"\n";
cout<<"Marke: ";cin>>marke;
cout<<"Farbe: ";cin>>farbe;
cout<<"Leistung in PS: ";cin>>leistung_ps;
cout<<"Anzahl der Tueren: ";cin>>anzahl;
cout<<"Baujahr: ";cin>>baujahr;
cout<<"InventarNr: ";cin>>nr;
};
void ausgeben()
{
cout<<"####AUSGABE####\n";cout<<"\n";
cout<<"Marke: "<<marke<<"\n";
cout<<"Farbe: "<<farbe<<"\n";
cout<<"Leistung in PS: "<<leistung_ps<<"\n";
cout<<"Anzahl der Tueren: "<<anzahl<<"\n";
cout<<"Baujahr: "<<baujahr<<"\n";
cout<<"InventarNr: "<<nr<<"\n";
cout<<"Leistung in kW: "<<leistung_ps*0.735<<"\n";
};};
int main()
{
kfz auto1;
auto1.eingeben();
auto1.ausgeben();
getch();
}
-
hallo??
kann mir jemand sagen wie ich das jetzt verändern muss um es mit parameterübergabe zu machen?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hehe jetzt hast du was nicht korrekt:
#include <iostream.h> // hab ich aus Volkards C++-Kurs http://www.volkard.de/vcppkold/hello_world.html #include <string> using namespace std; // wozu namespace wenn du std::string schreibst ? struct Kfz { std::string farbe, marke; // siehe oben float leistung; } // Ich wollt ein Noob nicht mit konstanten Referenzen verwirren void meine_funktion(const Kfz &kfz) { } // Bin Java gewöhnt :) int main(int argc, char **argv) { Kfz kfz; cin >> kfz.farbe; cin >> kfz.marke; cin >> kfz.leistung; meine_funktion(kfz); }
-
ja ist doch korrekt, aber ich dacht du wollst nicht OOP

hallo??
kann mir jemand sagen wie ich das jetzt verändern muss um es mit parameterübergabe zu machen?Indem du die main-Funktion mit Parameter machst ?
//Wenn schon Parameter an main, dann richtig int main(int argc, char **argv)argc ist die Anzahl der Parameter, argv sind die Parameter.
if ( argc > 0 ) { string param1 = new string(argv[0]); }ich hoff die Parameter sind null-terminiert.
-
-
Ich schreib jetzt mal weil ich glaube das du das meinst.
#include <conio.h> #include <iostream> using namespace std; struct kfz { string marke,farbe; int anzahl,baujahr,nr; float leistung_ps; void eingeben(kfz Kfz) { cout<<"####Eingabe####\n";cout<<"\n"; cout<<"Marke: ";cin>>Kfz.marke; cout<<"Farbe: ";cin>>Kfz.farbe; cout<<"Leistung in PS: ";cin>>Kfz.leistung_ps; cout<<"Anzahl der Tueren: ";cin>>Kfz.anzahl; cout<<"Baujahr: ";cin>>Kfz.baujahr; cout<<"InventarNr: ";cin>>Kfz.nr; }; void ausgeben(kfz Kfz) { cout cout<<"Marke: "<<Kfz.marke<<"\n"; cout<<"Farbe: "<<Kfz.farbe<<"\n"; cout<<"Leistung in PS: "<<Kfz.leistung_ps<<"\n"; cout<<"Anzahl der Tueren: "<<Kfz.anzahl<<"\n"; cout<<"Baujahr: "<<Kfz.baujahr<<"\n"; cout<<"InventarNr: "<<Kfz.nr<<"\n"; cout<<"Leistung in kW: "<<Kfz.leistung_ps*0.735<<"\n"; }; }; int main() { kfz auto1; eingeben(auto1); ausgeben(auto1); getch(); }Hoffe dich richtig verstanden zu haben
LG
-
Nein, das geht so nicht. Besser:
struct kfz { string marke,farbe; int anzahl,baujahr,nr; float leistung_ps; }; void eingeben(kfz& Kfz) { cout<<"####Eingabe####\n";cout<<"\n"; cout<<"Marke: ";cin>>Kfz.marke; cout<<"Farbe: ";cin>>Kfz.farbe; cout<<"Leistung in PS: ";cin>>Kfz.leistung_ps; cout<<"Anzahl der Tueren: ";cin>>Kfz.anzahl; cout<<"Baujahr: ";cin>>Kfz.baujahr; cout<<"InventarNr: ";cin>>Kfz.nr; } void ausgeben(const kfz& Kfz) { cout<<"Marke: "<<Kfz.marke<<"\n"; cout<<"Farbe: "<<Kfz.farbe<<"\n"; cout<<"Leistung in PS: "<<Kfz.leistung_ps<<"\n"; cout<<"Anzahl der Tueren: "<<Kfz.anzahl<<"\n"; cout<<"Baujahr: "<<Kfz.baujahr<<"\n"; cout<<"InventarNr: "<<Kfz.nr<<"\n"; cout<<"Leistung in kW: "<<Kfz.leistung_ps*0.735<<"\n"; }Schon erstaunlich wieviele Fehler man in einem so kurzen Stück Code machen kann. Ich hoffe mal, daß ich alle gefunden habe.
-
sorry ist schon spät

-
@Sascha_Thiel && Z2: WTF ? Ist das nicht der gleiche Code wie von Ahramys ?
Bis auf das von Z2 die 2 Funktionen jetzt ausserhalb des struct sind.
-
Er wollte doch die Parameter der Funktion Übergeben, das hat er in seinem Code ja nicht. Oder hab ich da was falsch verstanden?
-
oder gar so

struct KFZ { string marke,farbe; float leistung_ps; }kfz; void eingabe(const string& kfz_marke, const string& kfz_farbe, const float& kfz_leistung) { kfz.marke = kfz_marke; kfz.farbe = kfz_farbe; kfz.leistung_ps = kfz_leistung; } void ausgabe() { cout<<"Hersteller: "<<kfz.marke<<endl; cout<<"Farbe: "<<kfz.farbe<<endl; cout<<"Leistung: "<<kfz.leistung_ps<<endl; } int main(int argc, char* argv[]) { eingabe("VW","Silber",150); ausgabe(); getch(); return 0; }
-
DEvent schrieb:
Hehe jetzt hast du was nicht korrekt:
#include <iostream.h> // hab ich aus Volkards C++-Kurs http://www.volkard.de/vcppkold/hello_world.htmlDas ist *definitiv* veraltet, letzte Änderung war 08/25/00. iostream.h geht einfach nicht mehr.
#include <string>
using namespace std; // wozu namespace wenn du std::string schreibst ?
Macht der Gewohnheit, normalerweise hab ich kein using drin, in dem Fall drinlassen. Sonst müssen wir std::cin schreiben

// Bin Java gewöhnt

int main(int argc, char **argv)Da heißt's aber
public class Foo public static void main(String []args) { } }:p

passt schon...
MfG
GPC