Matrix erstellen



  • guten Morgen.
    aus welchem Grund funktioniert das hier denn nicht?

    for(i=0;i<anzahlZeilen<i++)
    	{
    		cout<<"Bitte geben Sie den Wert für a1"<<anzahlZeilen+1<<"ein:";
    		cin>>anzahlZeilen[i];
    	}
    

    das ist mein Code bisher:

    int anzahlZeilen=0;
    	int anzahlSpalten=0;
    	int i,j;
    	do
    	{
    		cout<<"Bitte Geben Sie die Anzahl der Zeilen ein: ";
    		cin>>anzahlZeilen;
    	}while(anzahlZeilen>4);
    	do
    	{
    		cout<<"Bitte geben Sie die Anzahl der Spalten ein: ";
    		cin>>anzahlSpalten;
    	}while(anzahlSpalten>4);
    	for(i=0;i<anzahlZeilen<i++)
    	{
    		cout<<"Bitte geben Sie den Wert für a1"<<anzahlZeilen+1<<"ein:";
    		cin>>anzahlZeilen[i];
    	}
    	int* matrix = new int[anzahlZeilen*anzahlSpalten];
    

    Aber warum kann die for Schleife nicht funktionieren?

    Schwer das programmieren 😞



  • Freeza schrieb:

    guten Morgen.
    aus welchem Grund funktioniert das hier denn nicht?

    for(i=0;i<anzahlZeilen<i++)
    	{
    		cout<<"Bitte geben Sie den Wert für a1"<<anzahlZeilen+1<<"ein:";
    		cin>>anzahlZeilen[i];
    	}
    

    "Funktioniert nicht" ist keine gute Fehlermeldung. Normalerweise würd man dich jetzt sitzen lassen bis du die erste Fehlermeldung des Compilers postest. In diesem Fall ists allerdings leicht: Schau dir mal Zeichen für Zeichen deinen for-Schleifen Kopf an und vergleiche ihn mit den Schleifenköpfen aus deinem Buch/Tutorial.
    Und dann nimm dir einen Tip zu Herzen: sei nicht so geizig mit den Leerzeichen, die machen den Quellcode einiges lesbarer und hätten dafür gesorgt dass dein Fehler viel einfacher zu finden gewesen wäre.

    Freeza schrieb:

    Schwer das programmieren 😞

    So ganz ohne Grips gehts sicher nicht, aber so schwer ists nun auch wieder nicht. Man darf nur nicht erwarten dass gleich alles auf anhieb klappt wie man es sich vorstellt.



  • Wieso verdammt willst du überhaupt dafür Arrays benutzten? Eine eigene Klasse geht tausend mal besser!



  • Ad aCTa schrieb:

    Wieso verdammt willst du überhaupt dafür Arrays benutzten? Eine eigene Klasse geht tausend mal besser!

    Ja, wieso nicht gleich eine Lineare-Algebra-Bibliothek für Matrizen?

    So, wie ich ihn einschätze, sind Arrays bereits Herausforderung genug. Klassen sollten da besser noch etwas warten... 🙂



  • Ad aCTa schrieb:

    Wieso verdammt willst du überhaupt dafür Arrays benutzten? Eine eigene Klasse geht tausend mal besser!

    Naja ganz einfach, weil es die Aufgabe so hergibt. 😞

    Nexus schrieb:

    Ad aCTa schrieb:

    Wieso verdammt willst du überhaupt dafür Arrays benutzten? Eine eigene Klasse geht tausend mal besser!

    Ja, wieso nicht gleich eine Lineare-Algebra-Bibliothek für Matrizen?

    So, wie ich ihn einschätze, sind Arrays bereits Herausforderung genug. Klassen sollten da besser noch etwas warten... 🙂

    richtig :). Bin nunmal nicht solange dabei. Und wenn jemand etwas verschachtelt schreibt wird es für mich schnell unlesbar. Nicht jeder kann es sogut wie du Ad aCTa. Du musst lernen zu lehren 😉



  • Also habe das nun vergessert 🙂 danke für den Hinweis. Heute ... das war wohl zu früh 🙂

    void main()
    {
    	int anzahlZeilen=0;
    	int anzahlSpalten=0;
    	int i,j;
    	do						
    	{
    		cout<<"Bitte Geben Sie die Anzahl der Zeilen ein: ";
    		cin>>anzahlZeilen;
    	}while(anzahlZeilen>4);
    	do
    	{
    		cout<<"Bitte geben Sie die Anzahl der Spalten ein: ";
    		cin>>anzahlSpalten;
    	}while(anzahlSpalten>4);
    	for(i=0;i<anzahlZeilen;i++)
    	{
    		cout<<"Bitte geben Sie den Wert fuer a1"<<anzahlZeilen<<"ein:";
    		cin>>anzahlZeilen;
    	}
    	int* matrix = new int[anzahlZeilen*anzahlSpalten];
    	cout<<matrix;
    }
    

    Nun lässt er mich einen Wert für Zeilen und Spalten eingeben. Wenn der Wert größer 4 ist, macht er das auch nicht weiter. Allerdings verstehe ich nicht so ganz die for Schleife... einen Tipp evtl.?



  • Freeza schrieb:

    Allerdings verstehe ich nicht so ganz die for Schleife... einen Tipp evtl.?

    Wenn du die for-schleife an sich nicht verstehst lautet der Tip: Lies im Buch/Tutorial deiner Wahl den Abschnitt über for-Schleifen.
    Ansonsten lautet der Tip: erklär uns genauer was du an der for-schleife nicht verstehst, dann kann man dir auch helfen statt nur zu raten was es sein könnte was dir Probleme bereitet.



  • Freeza schrieb:

    Allerdings verstehe ich nicht so ganz die for Schleife... einen Tipp evtl.?

    Ja. Du solltest dir dringend ein anständiges Buch zulegen oder zumindest ein Tutorial. Die Dinge, mit denen du Mühe hast, gehören nämlich zu den absoluten Grundlagen. Wenn du richtig C++ lernen willst, kommst du ohnehin nicht darum herum, auch in die Theorie Zeit zu investieren.



  • Hi,
    jop sorry. Hab ja ein Buch hier allerdings ist das anscheinend nicht auf mein Problem abgestimmt :D.

    Naja also ich habe ja eine Abfrage am Anfang bzgl. der Spaltenanzahl und der Zeilenanzahl.

    Wenn nun ein 2x2 eingibt, muss er ja schließlich 4 Werte eingeben. Wenn z.B: bei 2x2 der Benutzer die zahlen eingibt: 2346. Muss ja folgendes rauskommen.

    beispiel
    a1[2] b1[4]
    a2[3] b2[6]

    Ich verstehe jetzt nicht richtig, wie ich in der for Schleife angebe, dass der Benutzer bei einer länge(für Spalte und Zeile) von z.B.4 auch 8 Werte eingegeben werden müssen nämlich einfach 4 für spalte a und 4 für spalte b. Ich finde dafür keine richtige lösung 😞
    versteht ihr das Problem?



  • Freeza schrieb:

    Ich verstehe jetzt nicht richtig, wie ich in der for Schleife angebe, dass der Benutzer bei einer länge(für Spalte und Zeile) von z.B.4 auch 8 Werte eingegeben werden müssen nämlich einfach 4 für spalte a und 4 für spalte b. Ich finde dafür keine richtige lösung 😞
    versteht ihr das Problem?

    das geht fein mit zwei verschachtelten schleifen.



  • Hi,
    also hier mal der veränderte Code. Allerdings sagt er

    Fehler 2 error C2109: Index erfordert ein Array oder einen Zeigertyp
    

    und ich nutze keinen Zeigertyp und kenne mich damit auch nicht aus. Was kann denn nun der Fehler sein?

    Hier der Code

    void main()
    {
    	int anzahlZeilen=0;
    	int anzahlSpalten=0;
    	int s,z;
    
    	do						
    	{
    		cout<<"Bitte Geben Sie die Anzahl der Zeilen ein: ";
    		cin>>anzahlZeilen;
    	}while(anzahlZeilen>4);
    
    	do
    	{
    		cout<<"Bitte geben Sie die Anzahl der Spalten ein: ";
    		cin>>anzahlSpalten;
    	}while(anzahlSpalten>4);
    
    	int* matrix = new int[anzahlZeilen*anzahlSpalten];
    
    	for (z=0;z<anzahlZeilen;z++)
    	{
    		for(s=0;s<anzahlSpalten;s++)
    		{
    			cout<<"Bitte geben Sie einen Wert ein: ";
    			cin>>matrix[z][s];
    		}
    	}
    
    	for (z=0;z<anzahlZeilen;z++)
    	{
    		for(s=0;s<anzahlSpalten;s++)
    		{
    			cout<<"Deine Matrix lautet ("<<matrix[z][s]<<")";
    		}
    	}	
    }
    

    Habe bei Visual C++ Developer Center mal nachgeschaut nach diesem Fehlercode allerdings ist mir nicht klar, wann ich nach deren Beschreiben versucht hätte eine variable zu indizieren, die kein array ist?



  • Bitte in Zukunft die Zeile, in der der Fehler auftritt, mitteilen. 🙂

    Dein matrix -Zeiger zeigt auf ein eindimensionales (dynamisches) Array. Du willst aber mit zwei Index-Operatoren darauf zugreifen, was zwei Dereferenzierungen zur Folge hätte und deshalb nicht geht. Also versuche, den benötigten Index in einer eckigen Klammer auszudrücken:

    std::cout << "Deine Matrix lautet (" << matrix[ /* was könnte hier stehen? */ ] << ")";
    

    Dem Text nach zu urteilen, versuchst du aber, die ganze Matrix auf einmal auszugeben, was so nicht geht. Du müsstest mit einer Schleife Element für Element ausgeben.



  • Supi danke dir 🙂

    habe nun einen Ausgabefehler.

    Ich habe mal eine 2x2 matrix erstelle und 1 3 6 und 8 eingegeben.

    Danach sagt er mir immer Deine Matrix lautet 8. Danach sagt er mir immer Deine Matrix lautet 8. Danach sagt er mir immer Deine Matrix lautet 8. Danach sagt er mir immer Deine Matrix lautet 8.

    Eigentlich sollte er die Matrix folgendermaßen darstellen

    1 3
    6 8

    😞

    hilfe? 🙂



  • schaust du nochmal auf die erste seite von diesem thread.



  • habs danke für eure Hilfe 🙂

    bis denn


Anmelden zum Antworten