Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.12.2006, 19:58

abhängige variablenanzahl

hi,

kurze Frage: Wie krieg ich folgendes hin. Ich hab eine Variable n in meinem Programm und wenn sie meinetwegen 3 ist, soll ein int wert1, wert2, wert3 erstellt werden aber wenn sie 5 ist wert1, wert2, wert3, wert4, wert5 etc.

Ich steh grad aufm dem Schlauch :(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

30.12.2006, 20:05

Array?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Sn3aK87

Treue Seele

Beiträge: 110

Wohnort: Freiberg, nähe Dresden

Beruf: Informatikstudent TU Dresden ab 1.10.2007

  • Private Nachricht senden

3

30.12.2006, 20:15

Re: abhängige variablenanzahl

Zitat von »"Sk!p"«

hi,

kurze Frage: Wie krieg ich folgendes hin. Ich hab eine Variable n in meinem Programm und wenn sie meinetwegen 3 ist, soll ein int wert1, wert2, wert3 erstellt werden aber wenn sie 5 ist wert1, wert2, wert3, wert4, wert5 etc.

Ich steh grad aufm dem Schlauch :(


Hey, wie wäre es wenn du ein Array nutzt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>

using namespace std;

int main()
{
    int Anzahl;
    int wert[200]; // Arrays brauchen ne konstante als indexwert :( 


    cout << "Anzahl der Variablen: ";
    cin >> Anzahl;

    for (int i = 0; i < Anzahl; i++)
        {
            cout << "Wert " << i+1 << "= ";
            cin >> wert[i+1];
        }
    
    cout << endl;

    for (int j = 0; j < Anzahl; j++)
        {
            cout << "Wert " << j+1 << "= " << wert[j+1] << endl;
        }

    cin.ignore();
    cin.get();

return 0;
}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

30.12.2006, 20:18

die new[] und delete[] variante oder ein std::vector würden sich anbieten denk ich ;)

5

30.12.2006, 21:43

oh mann hab ich das echt geschrieben? ^^

Das erinnert mich irgendwie an die eine Mathearbeit als ich 19-6 mit dem Taschenrechner rechnen musste :(

Aber nur damit ich nicht völlig in Verruf gerate: Mein Problem war schon etwas komplexer. Da geht es um ein Projekt in Java, wo ich eine variable Anzahl an Objekten erstellen muss und das ist mit Konstruktoren und Java-Syntax zumindest etwas schwieriger und irgendwie bin ich da wohl durcheinander gekommen und stand dieser unlösbaren Aufgabe gegenüber.
Ich hab dann dauernd überlegt, wie schafft man es eigentlich x Variablen mit dem namen

Typ Variablex

zu erstellen. Ich hatte irgendwie grad nen Schwarz-raus.

Wie peinlich :oops:

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

6

31.12.2006, 12:10

C-/C++-Quelltext

1
2
3
int n;
int *wert;
wert=new int[n];

Das sollte alles erklären,...

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

7

31.12.2006, 17:12

hi,

ganz einfach:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
// Variablen

int *wert;

wert = new int[n];

if(!wert)
{
// Fehler...

}

// Am ende des Programms den Speicher wieder löschen

delete[] wert;


Das wars auch schon!

Am anfang wird ein int Zeiger deklariert.
new erstellt einen Speicherbereich und gibt seine Adresse zurück.
Bei einem Fehler(zb zu wenig freier Speicher) gibt new NULL zurück.

Vergess net den Speicher mit delete wieder freizugeben da du sonst mit deinem Programm speicherleks produzierst.
Mit "[]" sagst du delete das es sich um ein Array handelt.

Wenn du noch fragen zu new und delete bitte per pn an mich oder halt hier in den Thread...

Da es ein sehr einfaches Thema ist bin ich bereit es einmal ausführlich zu erklären...

mfg,

Faule Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

31.12.2006, 17:31

Und was wenn er ein Array von Objekten haben will die nicht über einen Standardkonstruktur verfügen? :P

z.B.:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
class foo
{
public:
    foo( int x )
    {
        std::cout << "foo::foo( " << x << " );" << std::endl;
    }
};


Das Funktioniert nich:

C-/C++-Quelltext

1
2
foo* bar = new foo[ 10 ];
delete [] bar;


Also doch lieber ein vector:

C-/C++-Quelltext

1
2
std::vector< foo > bla;
bla.push_back( foo( 10 ) );


grüße
@D13_Dreinig

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

9

31.12.2006, 17:34

@Faule Socke: Guck doch mal was ich schon geschrieben hab... ;)

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

10

31.12.2006, 17:36

@David_pb: Das ist doch völlig egal...Geschmackssache meiner Meinung nach, wobei ich persönlich ein Array bevorzuge! Einfacher zu implementieren und relativ effizient!

Werbeanzeige