Tabellen in C

Hallo liebe Experten,

ich quaele mich hier mit einer C-Hausaufgabe rum. Und verstehe nichts!

Ich soll eine Tabelle programmieren, die zwischen 0*0 und 6*8 gross ist. Die groesse voll der Benutzer eingeben. Doch wie mach ich das? ich muss doch beim Array die Groesse angaben.
Ausserdem soll die Kopfzeile und die linke Spalte durch Striche von der Tabelle abgetrennt werden, wie ich das machen soll ist mir voellig schleierhaft. :frowning:

Die Aufgabe steht im Internet unter http://ni.cs.tu-berlin.de/lehre/PPR-ws0304/aufgaben/… , aufgabe 4.2…

Ich brauche dringend einen Ansatz, sonst verzweifele ich.
Liebe Gruesse,
Marlene, die in den Ferien in der Uni sitzt…

Hallo, liebe Studentin!

Schau doch mal den malloc-Befehl genauer an. Da ihr ja unter Linux/Unix arbeitet: „man 3 malloc“. Damit wäre das Problem der dynamischen Speicherreservierung gelöst. Was die Trennzeichen betrifft, so kannst Du es ganz einfach über ASCII-Zeichen (-, + und |) versuchen, oder aber Du nutzt die „ncurses“ library, um das ganze etwas aufzuhübschen. „man 3 ncurses“ hilft in dem Fall weiter.

Gruß

Fritze

Hi malila
Um Speicherplatz für die Tabelle zu reservieren kannst du malloc und free verwenden:

int x;
printf("Wieviele Spalten und Zeilen soll die Tabelle haben? (1-8)\n");
scanf("%i",&x);

/\*
Das Array anlegen: x Zeilen + 1 Kopfzeile und 1 Zeile zum unterstreichen
der Kopfzeile;
x Spalten + 1 für die Nummerierung (links) bestehend aus je 6 Buchstaben
\*/
char\* tabelle = malloc(x\*x\*6);

// Auf des erstellte Array kann jetzt ganz normal zugegriffen werden
strcpy(tabelle[zeile][spalte], " 2");

/\* Wenn die Tabelle nicht mehr gebraucht wird, muss sie gelöscht werden !
Wenn dies nicht geschieht bleibt der Speicherplatz bis zum Neustart des
Computers belegt \*/
free(tabelle);

Hier ist noch 2 links zu den entsprechenden Microsoft-Sites:
malloc: http://msdn.microsoft.com/library/default.asp?url=/l…
free: http://msdn.microsoft.com/library/default.asp?url=/l…

Ausserdem soll die Kopfzeile und die linke Spalte durch
Striche von der Tabelle abgetrennt werden, wie ich das machen
soll ist mir voellig schleierhaft. :frowning:

Um das ganze möglichs elegant zu lösen sollte man die Kopfzeile und die Zeile
darunter (----) als normale Zeilen ansehen sowie die linke Spaltennummerierung
als normale Spalte.
Die Kopfzeile sowie der Strich darunter müssen manuell ausgegeben werden, der
Rest kann dann mit einer Schleife erledigt werden.

Wahrscheinlich wirst die diese Funktion benötigen um die int-Zahlen in Buchstaben umzuwandeln:
http://msdn.microsoft.com/library/default.asp?url=/l…

buffer[6];
itoi(34, buffer, 10);

btw:
Muss man eigentlich ein Array verwenden ? Das ganze ließe sich auch mit einer normalen prinf() Schleife (einfacher) erledigen, der Array-Ansatz ist aber IMHO eleganter.

ciao,
Daniel Raffler