ein (normales) Quadrat erstellen

sky1234

Grünschnabel
Wie kann man unter C ein Quadrat erstellen und ausgeben.
Also Kantenlänge z.B. 4 eingeben; das Programm gibt dann das Quadrat aus,
die Felder können mit Zufallszahlen gefüllt sein, oder z.B: Zahlen von 1-16
Kann mir da jemand helfen.

Ich hab gelesen es soll irgendwie mit malloc gehen, ich kann das aber nicht anwenden

danke sehr
 
Moin,

malloc holt Dir erstmal nur Speicher für eine Programmvariable !

Poste mal Deinen bisherigen Code, damit man sieht, was Du überhaupt versuchst !

Gruß
Klaus
 
ich möchte letzten endes ein magisches quadrat machen.
Aber da ich neu in der Materie bin, will ich erstmal verstehen wie man generell ein
Quadrat erzeugt und mit Zahlen füllen kann.

Wie man Bedingungen formuliert ect. das kann man sich bestimmt selber gut beibringen und das nach und nach ergänzen, das brauch ich auch erst mal nicht; aber ich find irgendwie den einstieg nicht.


Wie scanf und printf funktioniert ist soweit klar, eine Schleife bin ich gerade dabei zu üben/testen...
Aber mir fehlt da irgendwer die Vorstellung wie man ein Quadrat erzeugt und die einzelnen Felder anspricht bzw. füllen kann.
 
Hallo,

ich nehme mal an, mit dem Quadrat beziehst du dich auf ein Array, in deinem Fall ein 2 dimensionales Array. Also etwas in der Art:

Code:
int **cube = (int**) malloc(nLength * sizeof(int*));

Die Zeile würde dir ein Array initialisieren, dessen einzelnen Felder wieder Pointer auf weitere Felder sein könnten, die du dann aber noch weiter initialisieren müsstest. nLength wäre dann die Anzahl der Felder in der ersten Dimension (und da du ja ein Quadrat suchst, auch die Anzahl der Felder in der 2ten Dimension). Vielleicht hilft dir das schonmal weiter.

Gruß
 
Zur Speicherung: dynamischer Zweidimensionaler Array (int) -> calloc()

Zur Ausgabe: Schleife mit indices ausgeben, z.B.:
C:
while(i !=max_x)
{
    printf("%d ",quadrat[y][i]);
     i++;
}
Du musst aber den Rahmen z.B. mit | und _ immer mit einrechnen.

Oder du machst einen eindimensionalen Array. Dann muss du aber aufgrund der x-Grösse der Zeilenumbruch berechnen.

Poste doch mal ein Beispiel, wie du dir die Ausgabe vorstellst.

Gruss
cwriter
 
Hallo,
geh an dein Quadrat etwas abstrakter heran. Ich vermute dein Output landet am Ende in der Konsole. Schau dir mal die Formatierungsmöglichkeiten von printf an http://www.cplusplus.com/reference/cstdio/printf/

Als Beispiel könntest du jeder Zahl in dem Quadrat eine Weite von 4 geben, dann sind die Zahlen schön ausgerichtet und Spalten liegen z.B übereinander.

C++:
printf("%4d", zahl")
 
Beispiel 4x4
4 3 2 1
1 2 3 4
2 3 1 4
3 4 1 2

über die Formulierung Array komme ich schon weiter, das ist der Begriff den ich gesucht habe
, danke dafür.
Jetzt sollen die Felder mit irgendwelchen Zahlen gefüllt werden; also Feld 1/1 einfügen Zahl von 1-16
Gibts dafür auch einen Begriff?

Ich muss die Felder ja irgendwie ansprechen können, nicht nur für 4x4 sondern dynamisch.
eine Ausgabe auf der konsole langt und ist nicht so wichtig.
4d ist jjedenfalls simpel und gut

"nimm Feld 1 und mache folgendes ("Siehe Funktion"; Funktion = Zufallszahl einfügen, eine die bishernicht verwendet wurde)
 
Zuletzt bearbeitet:
habe das hier anhand eines Beispiel zusammengestellt.

Allerdings schaff ich es nicht, das für variable N anzupassen.

Anstelle #define MAX 5, möchte ich ein scanf("%d", &Groesse) haben, leider funktioniert das nicht.
Vielleicht sitz ich auch schon zu lange davor

ursprünglich:
Code:
#include <stdio.h>
#include <windows.h> // das brauch eich doch nicht oder?
#include <time.h>
#define MAX 5
 
void main()
{
    int feld[MAX][MAX]={0};
    int k,i,j;
   
    srand(time(0));
 
        k=1;
        for(i=0;i<MAX;i++)
        {
            for(j=0;j<MAX;j++)
            {
                feld[i][j]=rand() % 25 + 0;
               
                printf("Nr.%2i:\t%2i\n",k,feld[i][j]);
 
                k++;
            }
        }
}


mit Fehler (?)
HTML:
#include <stdio.h>
//#include <windows.h>
#include <time.h>
]//#define MAX 5  //auskommentiert******
 
void main()
{
int max;
]scanf("%d", &Max);  //eingefügt*******
    int feld[MAX][MAX]={0};
    int k,i,j;
   
    srand(time(0));
 
        k=1;
        for(i=0;i<MAX;i++)
        {
            for(j=0;j<MAX;j++)
            {
                feld[i][j]=rand() % 25 + 0;
               
                printf("Nr.%2i:\t%2i\n",k,feld[i][j]);
 
                k++;
            }
        }
}

Die Ausgabeform, passt natürlich überhaupt nicht, aber so kann man doch zumindest eine Zufallszahl befüllen......

Code:
****  feld[i][j]=rand() % 25 + 0;
Was ist K?
 
Zuletzt bearbeitet:
Hi

Fehler 1: max, Max und MAX sind drei verschiedene Sachen.
Fehler 2: Du brauchst eben malloc und free.

Und wie meinst du das, was k ist?
Ein int?
 

Neue Beiträge

Zurück