 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Thomas Zimmermann Guest
|
Posted: Tue Sep 23, 2003 2:20 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Hallo Marc
| Quote: | Ich wollte ein kleines Programm proggen. Hier ein Teil des Codes...
double rechnung() {
double w[8];
....
return w[8];
}
int main() {
double w[8]=rechnung();
....
}
Leider kommt beim Kompilieren eine Fehlermeldung...
|
Es waehre gut, wenn Du auch schreiben wuerdest, was Du
machen willst.
Die Fehlermeldung kommt sicherlich, weil Du w[8] zurueck
gibst. Der Array hat aber nur die Eintraege 0 bis 7.
Wenn du den ganzen Array zurueck geben willst, musst Du
folgendes machen:
double* rechnung()
{
double *w = new double[8]; // Speicher holen.
...
return w; // Rueckgabe des Arrays
}
int main()
{
double *w = rechnung();
...
delete [] w; // Speicher muss wieder freigegeben werden.
exit(0);
}
Sei aber vorsichtig damit, denn man vergisst das delete [] sehr
schnell.
| Quote: | Kann mir jemand helfen? Ausserdem suche ich eine
Moglichkeit, wie man mehrere Variablen in main mitnehmen
kann. Ich kenne:
int funk() {
int a;
return a;
}
int main() {
int irgentwas=rechnung();
}
Wie kann ich mehrere Variablen mit in Main mitnehmen?
|
Mehrere Variablen mitnehmen? Du meinst zurueckgeben?
Offiziell geht das garnicht, aber es gibt einen Trick:
void funk(int *var1, int *var2)
{
int a, b;
...
*var1 = a;
*var2 = b;
}
int main()
{
int x, y;
...
funk(&x, &y);
...
exit(0);
}
Hier uebergibst Du Zeiger an die Funktion, und speicherst
die Rueckgabewerte in den zugehoerigen Speicherplaetzen.
x ist demnach gleich a und y ist gleich b.
(Das funktioniert natuerlich auch mit Referenzen statt
Zeigern.)
Gruss Thomas
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
André Pönitz Guest
|
Posted: Tue Sep 23, 2003 2:23 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Marc A. Kastner <maku.kasutota (AT) web (DOT) de> wrote:
| Quote: | Hallo,
gleich am Anfang: Ich bin noch ein zimmlicher Newbie.
Ich wollte ein kleines Programm proggen. Hier ein Teil des Codes...
double rechnung() {
double w[8];
....
return w[8];
}
int main() {
double w[8]=rechnung();
....
}
|
Du kannst arrays nicht zurueckgeben.
Ueblich ist bei sowas:
void rechnung(double * w) {
w[1] = 5;
w[1] = 5;
}
int main() {
double w[8];
rechnung(w);
....
}
| Quote: | Leider kommt beim Kompilieren eine Fehlermeldung...
Kann mir jemand helfen? Ausserdem suche ich eine
Moglichkeit, wie man mehrere Variablen in main mitnehmen
kann. Ich kenne:
int funk() {
int a;
return a;
}
int main() {
int irgentwas=rechnung();
}
Wie kann ich mehrere Variablen mit in Main mitnehmen?
|
Schau mal in Deinem Lieblingslehrbuch unter 'struct' nach.
Andre'
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Christoph Rabel Guest
|
Posted: Tue Sep 23, 2003 2:30 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Marc A. Kastner wrote:
| Quote: | gleich am Anfang: Ich bin noch ein zimmlicher Newbie.
Ich wollte ein kleines Programm proggen. Hier ein Teil des Codes...
double rechnung() {
double w[8];
....
return w[8];
}
int main() {
double w[8]=rechnung();
....
}
Leider kommt beim Kompilieren eine Fehlermeldung...
|
Ich würde dir raten, es so zu machen:
#include vector;
using std::vector;
vector<double> rechnung() {
vector<double> w( ;
w[1] = 3.14;
...
return w;
}
Du kannst den vector genau wie ein array verwenden, mit diversen
Zusatzvorteilen.
| Quote: | Kann mir jemand helfen? Ausserdem suche ich eine
Moglichkeit, wie man mehrere Variablen in main mitnehmen
kann. Ich kenne:
int funk() {
int a;
return a;
}
int main() {
int irgentwas=rechnung();
}
Wie kann ich mehrere Variablen mit in Main mitnehmen?
Das sind meine Beiden Fragen, bitte helft mir!
|
Die einfachste Möglichkeit dürfte das erstellen einer Struktur sein,
aber es gibt zig Möglichkeiten dein Problem zu lösen.
struct Data
{
int data1;
int data2;
};
Data funk() {
Data a;
a.data1 = 5;
a.data2 = 6;
return a;
}
Mein bester Tipp:
Besorg dir ein gutes C++ Buch, wie z.B. Accelerated C++. Es ist für
Anfänger besonders gut geeignet.
mfg
Christoph
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Marc A. Kastner Guest
|
Posted: Tue Sep 23, 2003 3:42 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Danke! Ihr habt mir geholfen. Ich werde es mal mit vectoren ausprobieren.
mfg,
marc
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Michael Trocken Guest
|
Posted: Tue Sep 23, 2003 5:23 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Christoph Rabel <odie (AT) hal9000 (DOT) vc-graz.ac.at> wrote
| Quote: | Marc A. Kastner wrote:
gleich am Anfang: Ich bin noch ein zimmlicher Newbie.
Ich wollte ein kleines Programm proggen. Hier ein Teil des Codes...
double rechnung() {
double w[8];
....
return w[8];
}
int main() {
double w[8]=rechnung();
....
}
Leider kommt beim Kompilieren eine Fehlermeldung...
Ich würde dir raten, es so zu machen:
#include vector;
|
Du meintest vermutlich
#include <vector>
(Obwohl mir die andere Syntax ganz gut gefällt ;-)
Gruß,
Michael
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Michael Trocken Guest
|
Posted: Tue Sep 23, 2003 7:23 pm Post subject: Re: Hilfe mit Feldern und mehreren Funktionen |
|
|
Thomas Zimmermann <kuhundbaer (AT) web (DOT) de> wrote
[...]
| Quote: | Wenn du den ganzen Array zurueck geben willst, musst Du
folgendes machen:
double* rechnung()
{
double *w = new double[8]; // Speicher holen.
...
return w; // Rueckgabe des Arrays
}
int main()
{
double *w = rechnung();
...
delete [] w; // Speicher muss wieder freigegeben werden.
exit(0);
}
Sei aber vorsichtig damit, denn man vergisst das delete [] sehr
schnell.
[...] |
Hallo Thomas!
Mich würde interessieren, auf welchem Weg du C++ gelernt hast. Hast du
einen Programmierkurs belegt (etwa an der Uni), oder hast du dein
Wissen aus Büchern? Falls aus Büchern: Welche hast du gelesen?
Hast du vor C++ schon in C programmiert? Oder Java? Welche anderen
Programmiersprachen kannst du?
Gruß,
Michael
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|