zweidimensionales Array nimmt kein double



  • Hallo Leute,

    ich habe ein kleines Problem mit meinem Array. das Array ist folgendermaßen in der Klasse deklariert:

    double bunt [4][3];
    

    In der CPP, bei der Ausgabe cout, wird das bunt [i] [j] rot unterstrichen und es erscheint die Fehlermeldung : der Ausdruck muss ein ganzzahliger Ennumeratortyp sein. Ich hab diesen Fehler schon gefühlte tausend mal gehabt und ich wusste nie wie ich das umgehen kann. Das Array soll gleitkommazahlen ausgeben und nicht nur ganzzahlen :S.

    for (i=0; i<4; ++i)								
    		{ cout << i+1<< "\t\t";						
    
    	for (j=0; j<3; ++j)								
    		{
    	cout << bunt[i] [j]<< "\t \t";}
    

    Habt ihr ein paar Wundertipps auf lager ?



  • Kannste die relevanten Teile in eine vollständige CPP-Datei kopieren, die so wenig wie möglich hat aber den selben Fehler?
    Dann ist das Fehlersuchen für uns ein Klacks.
    So müssen wir gehörig raten. Mir fällt gerade nichts ein, was auf die Beschreibung passen wurde, außer Du würdest den double in einem switch-Ausdruck verwenden, aber das kanns nicht sein.


  • Mod

    http://www.c-plusplus.net/forum/304133
    Stichworte: Vollständigkeit, Formatierung



  • Ok, hier meine Klasse

    using namespace std;
    class ray
    {
    private :
    	double bunt [4] [3];  
    	double zenci [4] [3];
    	double i;
    	double j;
    
    public : 
    	void Set(); 
    	void Get();
    	double arrayz ();
    	ray::ray() 
    	{ bunt[0] [0] = 30499.12 ;      
    	bunt[0] [1] = 8333.10 ;
    	bunt[0] [2] = 13762.22;
    	bunt[1] [0] = 25290.50;
    	bunt[1] [1] = 11250.12;
    	bunt[1] [2] = 16299.01;
    	bunt[2] [0] = 19500.16;
    	bunt[2] [1] = 4500.11;
    	bunt[2] [2] = 9823.22;
    	bunt[3] [0] = 45972.50;
    	bunt[3] [1] = 6211.01;
    	bunt[3] [2] = 14234.66;
    	}
    };
    

    CPP:

    #include <iostream> 
    #include <string>
    #include "Header.h"
    #include <conio.h>
    #include <Windows.h>
    
    using namespace std;  
    
    double ray::arrayz () 
    
    {
    for (i=0; i<4; ++i)								
    { cout << i+1<< "\t\t";						
    
           for (j=0; j<3; ++j)								
    	{cout << bunt[i] [j]<< "\t \t";} cout<< endl;	} <---Hier ist der Fehler
    
    	return 0; } 
    
    void ray:: Get()  
    {       
    	for (i=0; i<4; ++i)
    	{   cout << i+1<< "\t\t";
    		Sleep(1000);
    		for (j=0; j<3; ++j)
    		{	cout << zenci [i] [j]<< "\t \t";}cout <<endl;};}<-- und HIER
    
    void ray:: Set() 
    {for (i=0; i<4; ++i)
    	{   
    		for (j=0; j<3; ++j)
    		{ cin >> zenci [i] [j];}}
    

    und hier die Main :

    int main (  
    
    {ray objekt;  
     objekt.arrayz(); 
     objekt.Set();
     objekt.Get();
    
     getch(); 
    
    return 0; 
    
    }
    

  • Mod

    i und j sind vom Typ double, das ist der Fehler.

    Im Header muss das ray:: vor der Definition des Konstruktors weg.

    Mach das using namespace aus dem Header.

    Bitte nimm einen anderen Einrückungsstil! Irgendeinen! Bloß nicht den, den du jetzt benutzt!

    Da sind noch mehr Sachen drin, die man leicht besser machen könnte, aber das sind die dringendsten.



  • Sorry, ich werde in Zukunft darauf achten, dass ich meinen Einrückstil verbessere =). Danke dir, deine Hilfe war super. Dass i und j int sein müsste, darauf hätte ich selber kommen müssen -.-.

    Kann mir vllt. jmd auf Anhieb ohne Code die Ursache nennen, warum Visual bei mir alle cout`s Rot markiert und sagt " cout ist mehrdeutig " ??weiß einer vllt. was das sein soll


Anmelden zum Antworten