Initialsierung einer Matrix < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:09 Di 13.01.2009 | Autor: | carl1990 |
Hallo,
ich möchte eine mxn Matrix erstellen und ihre Elemente mit beliebigen Werten belegen können.
Leider funktioniert die Initialisierung der Matrix mit beliebigen Werten bei mir nicht.
Hier der Programmcode:
//Ausgabe einer m x n Matrix
//m und n sollen innerhalb des Programmes beliebig gewählt werden
#include <stdio.h>
#include <stdlib.h>
int main()
{
int zeile, spalte, i, j;
int **matrix;
printf("Wieviel Zeilen soll die Matrix besitzen?");
scanf("%d", &zeile);
printf("Wieviel Spalten soll die Matrix besitzen?");
scanf("%d", &spalte);
matrix=(int **)malloc(zeile* sizeof(int *));//reserviert Speicher für die m(=zeile) Zeiger
if(NULL==matrix){
printf("Es ist nicht genuegend Speicher vorhanden!");
exit(0);
}
for(i=0; i<zeile; i++)
matrix[i]=(int *)malloc(spalte* sizeof(int));/*reserviert Speicher für die n(=spalte) Felder, auf welche jeweils die Zeiger der m Zeilenfelder zeigen.*/
if(NULL==matrix){
printf("Es ist nicht genuegend Speicher vorhanden!");
exit(0);
}
printf("Geben Sie nun bitte Werte fuer die Elemente der Matrix ein!");
for(i=0; i<zeile; i++)
for(j=0; j<spalte; j++){
printf("a[%d][%d]=",i,j);
scanf("2%d",&matrix[i][j]);//Werte für die jeweiligen Elemente der Matrix eingeben
}
for(i=0; i<zeile; i++)
for(j=0; j<spalte; j++)
if(j=0){
printf("|3%d ",matrix[i][j]);
}
if(j=(spalte-1)){
printf("3%d|",matrix[i][j]);
}
for(i=0;i<zeile;i++)
free(matrix[i]);
free(matrix);
return 0;
}
Würde mich freuen, wenn mir jemand bei dieser Sache helfen könnte.
Gruß Carl
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:39 Di 13.01.2009 | Autor: | rainerS |
Hallo!
> Hallo,
>
> ich möchte eine mxn Matrix erstellen und ihre Elemente mit
> beliebigen Werten belegen können.
>
> Leider funktioniert die Initialisierung der Matrix mit
> beliebigen Werten bei mir nicht.
>
> Hier der Programmcode:
Abgesehen davon, dass das zweite Auftreten von
if(NULL==matrix){
eigentlich
if(NULL==matrix[i]){
heißen muss, ist das erste Argument von scanf falsch:
scanf("2%d",&matrix[i][j]);//Werte für die jeweiligen
Das bedeutet, dass die Eingabe mit der Ziffer 2 anfangen muss. Willst du zweistellige Zahlen einlesen? Dann muss es "%2d" heißen.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:15 Di 13.01.2009 | Autor: | carl1990 |
Vielen Dank fürs Anschauen und deine Korrekturen! Jetzt läuft das Programm wie gewollt :)
|
|
|
|