Zum Inhalt springen

arrays an Unterprogramm übergeben! Wie?


MikeX

Empfohlene Beiträge

Hallo,

habe folgendes Problem..

Wollte einen einfachen Rechner machen, wo man auswählen kann ob + - * oder / ... eine bestimmte Anzahl an zahlen, die man eingeben kann.

Die eingabe und ausgabe wollte ich nicht in jeder Auswahl wieder schreiben und somit mit Unterprogramme arbeiten... Bloß wie übergebe ich und geschweige wie gebe ich das Array(e[]) wieder zurück????

#include <iomanip.h>

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

double addiere(void);

double subtrahiere(void);

double multipliziere(void);

double dividiere(void);

double eingabe(void);

double x,y,erg=0;

char k;

int laenge,z,i;

double e[25];

int main ()

{

cout<<"\tRechner mit Up´s\n";

cout<<"Wieviele ZAhlen wollen Sie eingeben =?\n";

cin>>laenge;

cout<<"\n\n\n\nWollen die die Zahlen\n\t";

cout<<"addieren(a)\n\tsubtrahieren(s)\n\tmultiplizieren(m)\n\tdividieren(d)";

cout<<"\t\t???\n";

k=getch();

switch(k)

{

case 'a':{

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

eingabe();

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t";

cin>>e;

}

clrscr();

ausgabe();

for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

}

cout<<"\nErgebnis bei der Addition der Zahlen: "<<erg<<endl;

}

}

getch();

return 0;

}

/*

//--------------------------------------------------------

double eingabe(double e[]) // der wert wird in e als double empfangen =?

{

double e[25];

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++){cout<<i<<". Zahl:\t"; cin>>e;}

return e;

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double e[]) //Stimmt die Deklaration =?

{

cout<<z<<". Zahl:\t"<<e<<endl;

return e;

}

//--------------------------------------------------------

//--------------------------------------------------------

double addiere(void)

{

double e;

for(z=1;z<=laenge;z++)

{

erg=erg+e[z];

}

return erg;

}

//--------------------------------------------------------

*/

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ist ja mein Problem das es nicht so funktioniert.....

meinst so:

#include <iomanip.h>

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

double addiere(void);

double subtrahiere(void);

double multipliziere(void);

double dividiere(void);

double eingabe(void);

double x,y,erg=0;

char k;

int laenge,z,i;

double e[25];

int main ()

{

cout<<"\tRechner mit Up´s\n";

cout<<"Wieviele ZAhlen wollen Sie eingeben =?\n";

cin>>laenge;

cout<<"\n\n\n\nWollen die die Zahlen\n\t";

cout<<"addieren(a)\n\tsubtrahieren(s)\n\tmultiplizieren(m)\n\tdividieren(d)";

cout<<"\t\t???\n";

k=getch();

switch(k)

{

case 'a':{

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

eingabe(e);

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t";

cin>>e;

}

clrscr();

ausgabe(e);

for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

}

cout<<"\nErgebnis bei der Addition der Zahlen: "<<erg<<endl;

}

}

getch();

return 0;

}

//--------------------------------------------------------

double eingabe(double e[])

{

double e[25];

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++){cout<<i<<". Zahl:\t"; cin>>e;}

return e;

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double e[])

{

cout<<z<<". Zahl:\t"<<e<<endl;

return e;

}

//--------------------------------------------------------

/*

//--------------------------------------------------------

double addiere(void)

{

double e;

for(z=1;z<=laenge;z++)

{

erg=erg+e[z];

}

return erg;

}

//--------------------------------------------------------

*/

das FETT-gedruckte sind ja nur die Problemstellen......

Link zu diesem Kommentar
Auf anderen Seiten teilen

double eingabe(double *e)

{

//double e[25]; -> brauchst du nicht

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++){cout<<i<<". Zahl:\t"; cin>>e;}

//return e;

//das return brauchst du nicht weils n zeiger is

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double *e)

{

cout<<z<<". Zahl:\t"<<e<<endl;

//return e;

//das return brauchst du nicht weils n zeiger is und außerdem du hier mit dem e nix machst außer ausgeben... :)

}

versuchs mal so...

Link zu diesem Kommentar
Auf anderen Seiten teilen

//--------------------------------------------------------

double eingabe(double *e)

{

double e[25];

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t"; cin>>e;

}

return e; // wieso nicht ich will doch das array zurückgeben!!!?

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double *e)

{

cout<<z<<". Zahl:\t"<<e<<endl;

}

er sagt wie vorher : Multiple declaration for 'e'/ Connot convert 'double *' to 'double'

Link zu diesem Kommentar
Auf anderen Seiten teilen

//--------------------------------------------------------

double eingabe(double *e)

{

double e[25]; Das musst du noch weg machen oder auskommentieren oder löschen oder sonst was :)

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t"; cin>>e;

}

return e; // wieso nicht ich will doch das array zurückgeben!!!?

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double *e)

{

cout<<z<<". Zahl:\t"<<e<<endl;

}

Du hast das e[25] nämlich schon global deklariert... deswegen kannst du e nicht noch in einer funktion deklarieren... e müsstest du somit noch nicht mal an die funktionen übergeben da es ja global ist...

du musst e nicht zurück geben weil du es als pointer übergibst (wenn du e nicht global deklariert hättest) d.h. du arbeitest schon auf der variable die du in der hauptfunktion deklariert hast... ist schwer zu erklären find ich... :)

ich versuchs ma richtig zu erklären:

du übergibst in der funktion MAIN das array e an die funktion EINGABE. dieses array wird als pointer übergeben dh er übergibt die adresse des speichers an die funktion eingabe. dadurch arbeitest du weiterhin auf de array in der funktion main. dadurch brauchst du es nicht zurück zu geben... verstanden? :)

Bearbeitet von Micha82
Link zu diesem Kommentar
Auf anderen Seiten teilen

ok danke.... das jetzt mein kompletter code.....

#include <iomanip.h>

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

double addiere(void);

double subtrahiere(void);

double multipliziere(void);

double dividiere(void);

double eingabe(void);

double ausgabe(void);

double x,y,erg=0;

char k;

int laenge,z,i;

double e[25];

int main ()

{

cout<<"\tRechner mit Up´s\n";

cout<<"Wieviele ZAhlen wollen Sie eingeben =?\n";

cin>>laenge;

cout<<"\n\n\n\nWollen die die Zahlen\n\t";

cout<<"addieren(a)\n\tsubtrahieren(s)\n\tmultiplizieren(m)\n\tdividieren(d)";

cout<<"\t\t???\n";

k=getch();

switch(k)

{

case 'a':{

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

eingabe();

/*for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t";

cin>>e;

} */

clrscr();

ausgabe();

/*for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

} */

cout<<"\nErgebnis bei der Addition der Zahlen: "<<erg<<endl;

}

}

getch();

return 0;

}

//--------------------------------------------------------

double eingabe(double *e)

{

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t"; cin>>e;

}

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe(double *e)

{

for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

}

}

zwei Fehler kommen noch: (Aktualiesierung(Make) fehlgeschlagen -------

Unresolved externel 'eingabe()' referenced from D:\*Pfad*\xx.OBJ

Unresolved externel 'ausgabe()' referenced from D:\*Pfad*\xx.OBJ

komisch oder =? (arbeite mit Borland, weil wir in der Schule auch mit Borland arbeiten.!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sooo... :)

#include <iomanip>

#include <iostream>

#include <windows.h>

#include <conio.h>

using namespace std;

double addiere(void);

double subtrahiere(void);

double multipliziere(void);

double dividiere(void);

double eingabe(void);

double ausgabe(void);

double x,y,erg=0;

char k;

int laenge,z,i;

double e[25];

int main ()

{

cout<<"\tRechner mit Up´s\n";

cout<<"Wieviele Zahlen wollen Sie eingeben =?\n";

cin>>laenge;

cout<<"\n\n\n\nWollen die die Zahlen\n\t";

cout<<"addieren(a)\n\tsubtrahieren(s)\n\tmultipliz ieren(m)\n\tdividieren(d)";

cout<<"\t\t???\n";

cin>>k;

switch(k)

{

case 'a':

{

eingabe();

/*for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t";

cin>>e;

} */

//clrscr();

ausgabe();

/*for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

} */

cout<<"\nErgebnis bei der Addition der Zahlen: "<<erg<<endl;

}

}

//getch();

return 0;

}

//--------------------------------------------------------

double eingabe()

{

cout<<" Geben sie bitte ihre "<<laenge<<" Zahlen ein:\n";

for(i = 1;i<=laenge;i++)

{

cout<<i<<". Zahl:\t"; cin>>e;

}

}

//--------------------------------------------------------

//--------------------------------------------------------

double ausgabe()

{

for(z=1;z<=laenge;z++)

{

cout<<z<<". Zahl:\t"<<e[z]<<endl;

erg=erg + e[z];

}

cout<<erg<<endl;

getch();

}

so funzt es... ABER:

1. jetzt hast du keine Übergabeparameter... keine ahnung od du die dringend haben wolltest oder nicht

2. der fehler war das du oben die funktionen als void vordefiniert hast beim übergabewert und dann unten die funktion mit nem übergabewert gefüllt hast... dat funzt nicht :)

3. sollte es c++ oder c sein? ist auch immer eine gute info :P

4. probier weiter aus... so funzt es erstmal

und 5. vermeide es variablen global zu deklarieren...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast das e[25] nämlich schon global deklariert... deswegen kannst du e nicht noch in einer funktion deklarieren... e müsstest du somit noch nicht mal an die funktionen übergeben da es ja global ist...

Können schon, der Funktionsscope verdeckt die globale Deklaration.

Ich würde die Variablen so und so nicht global machen, da C++ entweder in einer Klasse kapseln oder nur in Main.

bei mir zeigt er immer och eine Fehlermeldung an.....

Verrätst du die auch? :rolleyes:

hab das schnell mit dev-c++ gemacht...

mach mal bei borland alles neu compilieren... ab und zu spinnt borland mal... irgendwo kann man das projekt komplet neu kompilieren...

Auch mal was neues, dev-C++ soll besser laufen als Borland... :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...