Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Baerchen1
Anmeldungsdatum: 26.11.2005 Beiträge: 2
|
Verfasst am: 26. Nov 2005 09:48 Titel: Wo ist der Fehler |
|
|
Hallo. ich soll in C ein Programm schreiben, welches aus N Orten die x und y Koordinaten einliest, und anschließend die Entfernung zwischen allen Ort in eine Matrix einliest( nur in die untere Dreiecksmatrix). Hab mal angefangen, aber ich versteh nicht, was alles falsch ist. wer kann mir BITTE helfen?? DANKE!!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define maxN 5
typedef struct ORT {
float x,y;
struct ORT *n;
}; ort;
struct ORT *LA=NULL;
struct ORT *n=NULL;
void EntfMatrix(ort *LA, int *N, float A[maxN][maxN])
{ //LA ->in anderen Listen "zeiger" genannt
int i,j;
ort *anfang=NULL;
printf("Anzahl Orte: "); scanf("%d",N); //if (*N>maxN) *N=maxN;
if(anfang == NULL) //falls Liste leer ->1.Element
{ if ((anfang=(struct ORT *) malloc(sizeof(struct ORT))) == NULL)
{ printf(stderr, "Kein Speicherplatz vorhanden fuer Anfang\n");
return;
}
printf("Ort %d - x-Wert:",i+1); scanf("%f",LA->x[0]);
printf(" y-Wert:",i+1); scanf("%f",LA->y[0]);
anfang->n=NULL;
}
else
{ //es gibt schon mind.1 Element in der Liste
LA=anfang;
{while (LA->n != NULL)
{printf("Ort %d - x-Wert:",i+1); scanf("%f",LA->x[i]);
printf(" y-Wert:",i+1); scanf("%f",LA->y[i]);
anfang->n=NULL;
}
while(LA->n != NULL)
for (i=1;i<*N;i++)
{for (j=0;j<i;j++)
{A[i][j]=sqrt( (pow((LA->x[i])-(LA->x[j])),2) +
(pow((LA->y[i])-(LA->y[j])),2) );
printf("%.2f",A[i][j]);
}
printf("\n");
}
LA=LA->n;
}
}
void main()
{ float A[maxN][maxN];
int *N;
clrscr();
EntfMatrix(&LA,&N,A);
getche();
} |
|
Nach oben |
|
|
|
Baerchen1
Anmeldungsdatum: 26.11.2005 Beiträge: 2
|
Verfasst am: 26. Nov 2005 14:28 Titel: überarbeitet |
|
|
also ich hab's selber noch mal überarbeitet, es werden zwar keine Fehler mehr angezeigt, trotzdem läuft das Programm nicht richtig. Wer kann helfen? ist wirklich wichtig!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define maxN 5
typedef struct ORT {
float x,y;
struct ORT *n;
} ort;
struct ORT *n=NULL;
struct ORT *anfang=NULL;
void EntfMatrix(ort *LA, int *N, float A[maxN][maxN])
{ int i,j; float x,y;
struct ORT *anfang=NULL;
printf("Anzahl Orte: "); scanf("%d",N); //if (*N>maxN) *N=maxN;
for (i=0;i<maxN;i++)
{if(anfang == NULL)
{ anfang=(struct ORT *) malloc(sizeof(struct ORT));
printf("Ort %d - x-Wert:",i+1); scanf("%f",&x);
anfang->x=x;
printf(" y-Wert:",i+1); scanf("%f",&y);
anfang->y=y;
}
else
LA=anfang;
while (LA->n != NULL) LA=LA->n;
LA->n=(struct ORT*)malloc(sizeof(struct ORT));
LA=LA->n;
printf("Ort %d - x-Wert:",i+1); scanf("%f",&x);
LA->x;
printf(" y-Wert:",i+1); scanf("%f",&y);
LA->y;
}}
void main()
{ float A[maxN][maxN];
int N;
struct ORT *LA=NULL;
clrscr();
EntfMatrix(&LA,&N,A);
getche();
} |
|
Nach oben |
|
|
Lighthouse Gast
|
Verfasst am: 29. Nov 2005 18:13 Titel: |
|
|
wens noch aktuell ist schau ich mirs mal genauer an. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum nicht herunterladen
|
|