[Gelöst]For Schleife?



  • vielleicht

    int i;

    for(i=1; i < feld[100]; i++)
    {
    cout << feld[i] << endl;
    }

    😕



  • Also das stimmt irgendwie nicht, weil ich hab ja meine Arrays feld[1] bis feld[100] jedes dieser felder ist mit a1 a2 a3 a4 usw. gefüllt.
    -> jetzt brauch ich ein neuen wert um |_| auszugeben

    also eher
    for(i=1, i<=100, i++)
    {
    cout << |_| << endl;
    }

    Besser ?



  • Nö. Das würde dir alle Elemente untereinander ausgeben, da du hinter jedem einen Zeilenumbruch ausgibst. Du willst aber immer 10 hintereinander in einer Zeile ausgeben (eventuell mit Leerzeichen getrennt), dann einen Zeilenumbruch und dann wieder 10 usw.

    Vorschlag: nicht raten, sondern lieber ausprobieren. Dann hättest du ja direkt gesehen, dass das so nicht funktioniert. 🙂

    Mach doch erst mal eine Zeile. Wenn die funktioniert, machen wir weiter.

    EDIT: Und du solltest auch bei feld[0] anfangen, nicht feld[1].



  • hab jetzt einbisschen im Internet rumgeschaut und hab nach einiger zeit etwas zusammen gestellt was wirklich funktioniert !!!

    int main()
    {
    	for(int i=0; i<10; i++)
    	{
    		char z = 0x41 + i; // 'A' .. 'J'
    		for(int j=0; j<10;j++)
    		{
    			feld[i*10+j] = "  ";
    			char s = 0x30 + j; // '0'..'9'
    			feld[i*10+j][0] = z;
    			feld[i*10+j][1] = s;
    		}
    	}
    
    	for(int i=0; i<10; i++)
    	{		
    		for(int j=0; j<10;j++)
    		{
    			char zeilenende = (j==9) ? '\n': ' ';
    			cout << "|" << feld[i*10+j] << "|" << zeilenende;
    		}
    	}
    	getch();
    }
    


  • Gratulation! Du wärst aber sicher auch selbst drauf gekommen. Sich aus dem Internet was zusammenzubasteln ist meist nicht der beste Weg, um zu lernen (man neigt dazu, das Gebastelte so hinzunehmen und es nicht vollständig zu verstehen). 🙂



  • Verstanden hab ich es 🙂
    Und ich lerne meist eh besser, wenn ich es schon mal gesehen hab 🙂



  • Ich habe davon jetzt eine Klasse Spielfeld erstellt und die in die Main-Seite "included" xD
    Ich hab das Problem das er das Programm zwar startet, aber sofort weider schließt,
    habe versucht das Problem mit getch(); zu löschen
    -> konsolenfenster ist schwarz

    Habe ich etwas nicht richtig eingebunden ?!

    #include <iostream>
    #include <conio.h>
    #include "Spieler.h"
    #include "Spielfeld.h"
    #include "Schiffe.h"
    
    using namespace std;
    
    int main()
    {
    	Spielfeld draw();
    	cout << "main" << endl;
    
    	getch();
    }
    


  • Mach noch ein "stdout::flush()"



  • meinhana schrieb:

    habe versucht das Problem mit getch(); zu löschen
    -> konsolenfenster ist schwarz

    Das "main" sollte aber eigentlich dastehen.

    Siehe Kommentare:

    #include <iostream>
    #include <conio.h>
    #include "Spieler.h"
    #include "Spielfeld.h"
    #include "Schiffe.h"
     
    using namespace std;
      
    
    int main()
    {
    	Spielfeld draw();   // <-- Das deklariert eine Funktion draw()!
    	cout << "main" << endl;
    	
    	getch();
    }
    
    // Variable:
    Spielfeld draw;
    Spielfeld draw(10); // falls es Konstruktorparameter gibt
    
    // Funktion:
    Spielfeld draw();      // ohne Parameter
    Spielfeld draw(int x); // mit Parametern
    

    Ganz häufiger Fehler.

    Jochen Kalmbach schrieb:

    Mach noch ein "stdout::flush()"

    Was soll das sein? Mal angenommen, du hast cout << flush gemeint, dann ist das im endl schon drin.



  • Alsoo
    Das "main" steht da auch, aber das was in der Funktion ist nicht
    Hier der Quelltext von dem Spielfeld

    #include"Spielfeld.h"
    #include<iostream>  
    #include<conio.h>
    #include<string>
    using namespace std;
    string feld[99];
    
    void Spielfeld::draw()
    {
       cout <<"Schiffe versenken"<<endl; 
       cout <<"Ihr Spielfeld:"<<endl; 
       cout <<endl;
       for(int i=0; i<10; i++)
    	{
    		char z = 0x41 + i; // 'A' .. 'J'
    		for(int j=0; j<10;j++)
    		{
    			feld[i*10+j] = "  ";
    			char s = 0x30 + j; // '0'..'9'
    			feld[i*10+j][0] = z;
    			feld[i*10+j][1] = s;
    		}
    	}
    
    	for(int i=0; i<10; i++)
    	{		
    		for(int j=0; j<10;j++)
    		{
    			char zeilenende = (j==9) ? '\n': ' ';
    			cout << "|" << feld[i*10+j] << "|" << zeilenende;
    		}
    	}
    }
    //________________________________________________________________________________________
    void Spielfeld::hilfe()
    {   
        cout << "Es gibt 10 Schiffe." << endl;
        cout << "- ein Schlachtschiff (5 Kästchen)" <<endl;
        cout << "- zwei Kreuzer (je 4 Kästchen)" <<endl;
        cout << "- drei Zerstörer (je 3 Kästchen)" <<endl;
        cout << "- vier U-Boote (je 2 Kästchen)" <<endl;
        cout << "Schiffe duerfen nicht aneinander stoßen" <<endl <<endl;	
    }
    //__________________________________________________________________________________________
    

    Dazu die .h datei

    #ifndef __SPIELFELD_H__
    #define __SPIELFELD_H__
    
    using namespace std;
    
    class Spielfeld
    {
    	public:
    
    	private:
    	void draw();
    	void hilfe();
    
    };
    
    #endif
    


  • Ich musste ein Objekt (Instanz) der Klasse erzeugen 🙂
    Das wusste ich nicht

    int main()
    {
    	Spielfeld meinspiel;
    	meinspiel.draw();
    	cout << "main" << endl;
    
    	getch();
    
    	return 0;
    }
    

Anmelden zum Antworten