Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

arrays an Unterprogramm übergeben! Wie?

Empfohlene Antworten

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;

}

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

*/

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......

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...

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

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'

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

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

hmm ich seh grad das du e vordefiniert hast...

also global: double e[25];

und es ich auf ner win maschine programmiert... hmmm... :) ok... wenn ich zu hause bin werd ich mir das noch mal anschauen...

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.!

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...

mit welchem compiler compiliert ihr =?

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

kann doch nicht sein

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...

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:

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.