C Uni-Aufgabe (finde Fehler nicht)

Status
Für weitere Antworten geschlossen.

erci74

Cadet 2nd Year
Registriert
Jan. 2017
Beiträge
19
Hallo,

ich muss für die Uni ein C-Programm erstellen, leider finde ich meinen Fehler nicht.

Könnte vlt einer mal drüber schauen und mir behilflich sein.

Aufgabenstellung und Struktogram sind im AnhangAnhang anzeigen 03_Aufg_03_a_Abstand_Struct.pdfAnhang anzeigen 03_Aufg_03_a_Abstand.pdf

Quellcode:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main()
{
int anz, i, j, maxi, maxj, mini, minj;
float x[50], y[50], min, max, abst;
char weiter;

do
{


printf("Anzahl der Punkte eingeben: ");
scanf("%2d", &anz);

for (i=0; i<=anz-1; i++)
{
printf("Punkt %d eingeben: ", i+1);
printf("x %d: ", i+1);
scanf("%d", &x);
printf("y %d: ", i+1);
scanf("%d", &y);
}
max = sqrt((x[1]-x[0])*(x[1]-x[0])+(y[1]-y[0])*(y[1]-y[0]));
min=max;

for (i=1; i<anz; i++)

{


for (j=i+1 ; j<=anz; j++)

{
abst =sqrt((x[j-1]- x[i-1])*(x[j-1]-x[i-1])+(y[j-1]-y[i-1])*(y[j-1]-y[i-1]));
if (abst>=max)
{
max=abst;
maxi=i;
maxj=j;

}
if (abst<=min)
{
min=abst;
mini=i;
minj=j;
}

}
}
printf("Der Punkt P%d (%d,%d) hat mit %2.2f den\nkuerzesten Abstand von Punkt P%d(%d,%d)\n", mini,x[mini-1],y[mini-1],min,minj,x[minj-1],y[minj-1]);

printf("Der Punkt P%d (%d,%d) hat mit %2.2f den\nkuerzesten Abstand von Punkt P%d(%d,%d)", maxj,x[maxi-1],y[maxi-1],max,maxj,x[maxj-1],y[maxj-1]);

printf("\n\nNochmalige Programmausfuehrung (J/N):");
scanf("%c", &weiter);
weiter = getchar();
}
while (weiter=='J' || weiter=='j');

return 0;
}
 
Ja was hast du denn für Fehler und welchen Compiler benutzt du?
Fängt ja schonmal mit
Code:
void main()
gut an.... Das ist kein Standard und wird auch nicht benutzt. gcc kompiliert das erst gar nicht und haut gleich nen Fehler raus.
 
Zuletzt bearbeitet:
Fehler Meldung wäre natürlich gut, aber was mir auf den ersten Blick auffällt, ist das du am Ende 2 mal einen Char einliest.

scanf("%c", &weiter);
weiter = getchar();

Eines von beiden sollte reichen.
 
gnu cpp compiler

..die ausgabe ist im Anhang. Unbenannt.jpg
 
erci74 schrieb:
ich muss für die Uni ein C-Programm erstellen, leider finde ich meinen Fehler nicht.
Könnte vlt einer mal drüber schauen und mir behilflich sein.

Das Programm an sich sieht auf den ersten Blick fehlerfrei aus, also stimmt die Logik des Programmablaufs wahrscheinlich nicht. Im Grunde sollst Du ja Abstände sortieren, das einfachste wäre, Du erstellst eine Matrix [N,N] und schreibst dort alle Abstände r(i,j) rein. Am Ende gehst Du über die Matrix und schaust, welches der kleinste und der größte Wert sind. Aufgrund der Indices der Matrix hast Du auch gleich die zugehörigen i und j.
 
Ja, wäre wirklich gut zu wissen was du überhaupt für ein Problem hast.

Tipps:
- Such' mal nach "scanf enter problem"
- Schau mal ob %d mit deinen Datentypen übereinstimmt.
 
secret_3des schrieb:
- Schau mal ob %d mit deinen Datentypen übereinstimmt.
Code:
   float x[50], y[50], ...
   ...
   ...
   scanf("%d", &x[i]);
   ...
   scanf("%d", &y[i]);
   ...
 
Zum Thema Hausaufgaben

Konkrete Fragen dürfen gern gestellt werden, zuerst sollte man allerdings suchen und sich mit den Basics vertraut machen.

Hier den kompletten Quellcode korrektur lesen zu lassen geht etwas zu weit.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben