Speichern von Adressen einer Variablen in einem als Zeiger deklariertem Array
-
Hallo Leute,
ich habe ein echtest Problem ich habe ein Problem und zwar:
Habe angefangen ein Programm zum generieren von Lottozaheln zu schreiben, diese Lottozahlen werden durch "rand()" generiert. Die Adresse der generieten Zahl bzw. iElement soll dan in das als Zeiger deklarierte Array geschrieben werden. Nur ich finde nicht raus wie das geht, ich Probiere jetzt schon ein paar Stunden daran rum, aber ich bekomme es einfach nicht hin.
Das Programm ist modularisiert.
main.cpp:
#include <iostream.h>
#include "funktionenh.h"
randomize ();int main (void) {
// Variablen
int *aiLottoArray[6];
int iAnzahlElemente = 7;cout << "Die Lottozahlen der heutigen Ziehung sind: ";
getchar ();
}funktion.cpp (Hier ist die Funktion die in der Main dann später aufgerufen wird)
#include <iostream.h>
#include "funktionenh.h"
randomize ();// Funktionen definieren
void Lottozahlen (int *aiLottoArray, int iAnzahlElemente) {
int iElement = 0, iZaehler = 0;
iElement = rand ();
aiLottoArray[iZaehler] = &iElement;
for (iZaehler; iZaehler <= iAnzahlElemente; iZaehler++);
}Hier noch die deklaration der Funktion: void Lottozahlen (int *, int);
Fehlermeldung: E2034 Konvertierung von 'int *' nach 'int' nicht möglich
Es sind bestimmt noch andere Fehler drin im Aufbau etc. aber die wären jetzt sekundär.
Ich hoffe ihr könnt mir helfen.
MFG
Daniel
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) 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.
-
Hallo,
Es wäre schön wenn du Code-tags verwenden würdest und uns vor allem deine Fehler mitteilen.
Warum willst du hier Zeiger auf ints in deinem Array speichern? Nimm lieber ein Array (oder besser std::vector) von int.
So wie du das machen willst geht das nicht.int *aiLottoArray[6]; int iAnzahlElemente = 7; //In das Array passen aber nur 6 Werte// Funktionen definieren void Lottozahlen (int *aiLottoArray, int iAnzahlElemente) // dein Lottoarray wäre ein int** { int iElement = 0, iZaehler = 0; iElement = rand (); aiLottoArray[iZaehler] = &iElement; //hier willst du zeiger auf lokale variablen speichern //die sind außerhalb der Funktion nicht mehr gültig for (iZaehler; iZaehler <= iAnzahlElemente; iZaehler++); //was soll das denn? }
-
Entschuldigt bitte.
Hier meine Fehlermeldung:
*E2034 Konvertierung von 'int ' nach 'int' nicht möglich
Warum willst du hier Zeiger auf ints in deinem Array speichern?
Das möchte ich machen, weil wir die Aufgabe von unserem Lehrer bekommen haben, zur Übung von Zeigern bzw. wie muss ich es anders machen.
for (iZaehler; iZaehler <= iAnzahlElemente; iZaehler++);//was soll das denn?
In dieser Schleife Zähle ich iZaehler hoch, solange bis iZaehler <= iAnzahlElement ist. Damit im Array nicht immer nur z.B. bei [4] gespeichert wird sondern dann auch bei [5], [6] etc.
aiLottoArray[iZaehler] = &iElement;//hier willst du zeiger auf lokale variablen speichern
Wie kann ich das anders machen?
Vielleicht habe ich auch nur einen falschen Denkansatz.
Und wurde die definition der Schnittstelle vorgegeben diese sieht so aus:
void Ziehung (int *aiLotto, int iAnzahlElemente);Bei mir habe ich nur andere Namen benutzt. Ich dachte deswegen muss ich das so wie von mir oben beschrieben machen. War der Ansatz richtig oder liege ich ganz daneben?
Wie ihr bestimmt gemerkt habe bin ich nicht sehr gut, wir lernen das in der Schule gerade aber ich stehe leider auf einer 5, wenn ich denke ich habe es begriffen, und versuche mich daran, dann kommt es immer anders wie hier zum Beispiel.

-
Bist du sicher, dass du wirklich zeiger auf ints in ein Array packen sollst? das erscheint mir recht widersinnig. Natürlich kann es auch solche Aufgaben geben.
Deine Funktion müsste dann so aussehen.void Lottozahlen (int *aiLottoArray[6], int iAnzahlElemente) // dein Lottoarray wäre ein int** { int* iElement; for (int iZaehler = 0; iZaehler < iAnzahlElemente; iZaehler++) { iElement = new int; *iElement = rand (); aiLottoArray[iZaehler] = iElement; } }Nicht vergessen, iAnzahlElemente ist 6 und nicht 7. Außerdem mußt du vor Abschluß des programmes noch die Elemente von aiLottoArray löschen
-
Danke für deine Antwort! Ich werde es gleich einmal versuchen und das programm nochmal schreiben.
Du hast das jetzt schon dynamisch gemacht soweit ich sehe.
Ich werde das ganze noch einmal statisch machen, und dann mein Ergebniss hier rein posten.Vielen Dank schonmal!
-
Du mußt das schon dynamisch machen. Sonst geht das nicht wie du willst.
-
Also meine Vermutung ist ja dass die Signatur in der Aufgabe vorgegeben ist und dass einfach nur iAnzahlElemente Lottozahlen in das Array gepackt werden sollen.

-
Das vermute ich auch. Deswegen hatte ich auch noch mal nachgefragt aber keine Antwort bekommen.
