Problem mit Arrays



  • Hallo Forum,

    ich habe ein kleines Problem bei der Erstellung indizierte Variablen bzw. von Array.

    Normalerweise kann ich ein Array vom double-Typ mit

    double x[16];
    

    erstellen und dann mittes "x[]" drauf zugreifen. Beim Einzelschritt zeigt es mir dann auch das x nach der Bestückung mit 16 Items an.

    Jetzt hab ich das Problem, dass ich die Länge des Arrays erst im Laufe des Programmes bekomme. Also hab ich mal nachgelesen und bin dabei auf folgendes gestossen:

    double* x = new double[laenge]
    

    Führe ich jetzt wieder Einzelschritt aus, so wird mir für das x keine Items mehr aufgelistet und mein Programm stürzt auch immer ab, weil eben keine Daten in dem x drin stehen.

    Was muss ich also tun, um eine indiziertes "x" zu erhalten, wie ich es mit double x[16] bekomme, ohne das ich aber vorher die genaue Länge weiß?

    Gruß
    physici



  • ich glaube du musst ein konstanten int machen.

    const int laenge = my_int_von_vorhin;
    double* x = new double[laenge];
    


  • Das ist unsinn!

    Welchen Wert hat länge ?
    Wie sieht der Quellcode aus der mit x weiterarbeitet ?
    Wie wird x gefüllt ?

    #include <iostream>
    #include <iterator>
    #include <algorithm>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    	int len = 16;
    	double * x = new double[len];
    
    	for(int i = 0;i < 16;++i)
    		x[i] = i;
    
    	copy(x,x+len,ostream_iterator<double>(cout,"\n"));
    
    	return 0;
    }
    


  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET 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.



  • #include <iostream>
    #include <iterator>
    #include <algorithm>
    
    int main()
    {
        std::cout << "Wie groß soll der Array sein?" << std::endl;
        unsigned short len = 0;
        std::cin >> len;
        double* x = new double[len];
    
        for (unsigned short i = 0; i < len; ++i) x[i] = i;
    
        std::copy(x, x + len, std::ostream_iterator<double>(std::cout,"\n"));
    
        delete [] x;
    
        return 0;
    }
    

    😉


Anmelden zum Antworten