HI Leute,
Ich hab folgende Aufgabe:
Code
Aufgabe 1:
Modizieren Sie das Programm zum Einlesen und wieder Ausgeben einer Matrix so, dass der Zugriff auf die Feldelemente nicht über den Indizierungsoperator [ ]
erfolgt sondern über Zeigerarithmetik. Deklarieren Sie dazu eine Matrix wie im ursprünglichen
Programm und setzen Sie einen Zeiger auf die Anfangsadresse der Matrix. In Ihrem Programm
sollten daher die folgenden Deklarationen und Initialisierungen auftauchen:
double a[N][M]; // einzulesende Matrix
double *ap; // Zeiger
ap = &a[0][0]; // Zeiger zeigt auf "Anfang" der Matrix
Der Code als Vorraussetzung ist:
Code
#include<stdio.h>
#define ANZ 100
typedef double matrix[ANZ][ANZ];
int einlesenGanzeZahl(char meldung[]);
int matrixeinlesen(matrix mat,int,int);
int matrixasugeben(matrix mat,int,int);
int main(void){
matrix mat;
int zeilen,spalten;
zeilen = einlesenGanzeZahl("Bitte Anzahl der Zeilen eingeben:\n");
spalten = einlesenGanzeZahl("Bitte Anzahl der Spalten eingeben:\n");
matrixeinlesen(mat,zeilen,spalten);
matrixausgeben(mat,zeilen,spalten);
return 0;
}
int einlesenGanzeZahl(char meldung[]){
int temp;
printf(meldung);
scanf("%i",&temp);
return temp;
}
int matrixeinlesen(matrix mat,int zeilen,int spalten){
int i,j;
for(i=0;i<spalten;i++){
for(j=0;j<zeilen;j++){
do{
printf("Element von [%i][%i] eingeben:\n",i,j);
fflush(stdin);
}
while(scanf("%lf",&mat[i][j])<1);
}
}
}
int matrixausgeben(matrix mat, int zeilen,int spalten){
int i,j;
for(i=0;i<spalten;i++){
for(j=0;j<zeilen;j++){
printf("Element von [%i][%i] ist: %lf\t",i,j,mat[i][j]);
}
printf("\n");
}
return 0;
}
Alles anzeigen
Irgendwie fehlt mir voll der Sinn und das verständnis für Pointer.
Wo setzt ich den überhaupt die drei zeilen ein. Unterprogramm oder Hauptprogramm?
Echt kein Plan ich hoff ihr könnt mir helfen.