fork(4) download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. enum { PUNKTE = 100 }; /* Definieren einer Konstanten */
  5.  
  6. typedef struct /* Definieren der Struktur POLYGON */
  7. {
  8. int x; /* koordinate x */
  9. int y; /* koordinate y */
  10. } POLYGON;
  11.  
  12. /* Funktions-Prototypen */
  13. int einlesen( POLYGON p[PUNKTE] );
  14. void ausgabe (int anzahlpunkte,POLYGON p[PUNKTE]);
  15. double berechnung (int anzahlpunkte, POLYGON p[PUNKTE] );
  16.  
  17. int main (void)
  18. {
  19. POLYGON p[PUNKTE];
  20. int anzahlpunkte;
  21. int menuezahl;
  22.  
  23. puts("Dies ist ein Programm zur Berechnung eines Polygonzuges");
  24. do
  25. {
  26. /* Eingabe menue */
  27. printf("*********************************************************\n");
  28. printf("* Sie haben folgende Moeglichkeiten:\t\t\t*\n");
  29. printf("* 1: Eingabe von Werten zur Berechnung des Polygones\t*\n");
  30. printf("* 2: Ausgabe der eingegebenen Werte in Tabellenform\t*\n");
  31. printf("* 3: Berechnen des Polygonzuges\t\t\t*\n");
  32. printf("* 4: Beenden des Programmes\t\t\t\t*\n");
  33. printf("* Bitte geben sie eine Zahl ein!\t\t\t*\n");
  34. printf("*********************************************************\n");
  35. scanf("%d",&menuezahl);
  36.  
  37. switch(menuezahl)
  38. {
  39. case 1: /* Funktionsaufruf: Einlesen der Punktkoordinaten */
  40. anzahlpunkte = einlesen( p );
  41. break;
  42.  
  43. case 2: /* Funktionsaufruf: Ausgabe der eingelesenen Werte */
  44. ausgabe(anzahlpunkte,p);
  45. break;
  46.  
  47. case 3: /* Funktionsaufruf: Berechnung des Polygonzuges */
  48.  
  49. printf("der eingegebene Polygonzug ist %f lang.\n\n",berechnung (anzahlpunkte,p));
  50. break;
  51.  
  52. case 4: /* Beenden der Funktion */
  53. printf("Auf Wiedersehen, benutzen sie dieses Programm bald wieder!\n\n");
  54. break;
  55.  
  56. default: /* bei falscher Eingabe */
  57. puts("Ihrer Eingabe konnte kein Menüpunkt zugeordnet werden!\n"\
  58. "Bitte versuchen sie es erneut.");
  59.  
  60. }
  61. }
  62. while( menuezahl!=4 ); /* Ende der Schleife bei Eingabe der Zahl 4 */
  63.  
  64. return 0;
  65. }
  66.  
  67. int einlesen( POLYGON p[PUNKTE] )
  68. {
  69. int zeile;
  70. int anzahlpunkte;
  71.  
  72. do
  73. {
  74. printf("Bitte geben sie die Anzahl der Punkte des Polygons ein.\n"\
  75. "Bitte beachten sie, dass es min. 2 Punkte aber max. %i Punkte sein müssen!",PUNKTE);
  76. scanf("%d",&anzahlpunkte);
  77.  
  78. if (anzahlpunkte<2 || anzahlpunkte>PUNKTE)
  79. puts("falsche eingabe!");
  80.  
  81. }
  82. while(anzahlpunkte<2 || anzahlpunkte>PUNKTE);
  83.  
  84. for (zeile=0;zeile<anzahlpunkte;zeile++)
  85. {
  86. printf(" wert %d fuer x eingeben:",zeile+1);
  87. scanf("%d",&p[zeile].x);
  88. printf( " wert %d fuer y eingeben:",zeile+1);
  89. scanf("%d",&p[zeile].y);
  90. }
  91. puts("");
  92.  
  93. return anzahlpunkte;
  94. }
  95.  
  96. /* Funktion zur Ausgabe der eingelesenen Punkte */
  97. void ausgabe (int anzahlpunkte,POLYGON p[PUNKTE] )
  98. {
  99. int zeile;
  100.  
  101. puts("Anzahl\t| x werte \t| y werte\n");
  102. /* Schleife zum Auslesen der Struktur und Ausgabe der Tabelle */
  103. for (zeile=0;zeile<anzahlpunkte;zeile++)
  104. {
  105. printf(" %5d\t|\t",zeile+1);
  106. printf(" %5d\t|\t",p[zeile].x);
  107. printf(" %5d\n",p[zeile].y);
  108. }
  109. puts("");
  110. }
  111.  
  112. /* Funktion zum Berechnen des Polygons aus den eingelesenen Werten */
  113. double berechnung (int anzahlpunkte, POLYGON p[PUNKTE])
  114. {
  115. double ergebnis;
  116. int zeile;
  117.  
  118. ergebnis=0;
  119. /* Schleife zum Auslesen und Berechnen der Punkte */
  120. for (zeile=0;zeile<anzahlpunkte-1;zeile++)
  121. {
  122. /* pow(x,y) x^y */
  123. ergebnis += sqrt(pow(p[zeile].x - p[zeile+1].x,2) + pow(p[zeile+1].y - p[zeile].y,2));
  124. }
  125. return ergebnis;
  126. }
Success #stdin #stdout 0s 2012KB
stdin
1
3
1
2
3
4
5
6
2
3
4
stdout
Dies ist ein Programm zur Berechnung eines Polygonzuges
*********************************************************
*  Sie haben folgende Moeglichkeiten:			*
*  1: Eingabe von Werten zur Berechnung des Polygones	*
*  2: Ausgabe der eingegebenen Werte in Tabellenform	*
*  3: Berechnen des Polygonzuges			*
*  4: Beenden des Programmes				*
*  Bitte geben sie eine Zahl ein!			*
*********************************************************
Bitte geben sie die Anzahl der Punkte des Polygons ein.
Bitte beachten sie, dass es min. 2 Punkte aber max. 100 Punkte sein müssen! wert 1 fuer x eingeben: wert 1 fuer y eingeben: wert 2 fuer x eingeben: wert 2 fuer y eingeben: wert 3 fuer x eingeben: wert 3 fuer y eingeben:
*********************************************************
*  Sie haben folgende Moeglichkeiten:			*
*  1: Eingabe von Werten zur Berechnung des Polygones	*
*  2: Ausgabe der eingegebenen Werte in Tabellenform	*
*  3: Berechnen des Polygonzuges			*
*  4: Beenden des Programmes				*
*  Bitte geben sie eine Zahl ein!			*
*********************************************************
Anzahl	|   x werte 	|   y werte

     1	|	     1	|	     2
     2	|	     3	|	     4
     3	|	     5	|	     6

*********************************************************
*  Sie haben folgende Moeglichkeiten:			*
*  1: Eingabe von Werten zur Berechnung des Polygones	*
*  2: Ausgabe der eingegebenen Werte in Tabellenform	*
*  3: Berechnen des Polygonzuges			*
*  4: Beenden des Programmes				*
*  Bitte geben sie eine Zahl ein!			*
*********************************************************
der eingegebene Polygonzug ist 5.656854 lang.

*********************************************************
*  Sie haben folgende Moeglichkeiten:			*
*  1: Eingabe von Werten zur Berechnung des Polygones	*
*  2: Ausgabe der eingegebenen Werte in Tabellenform	*
*  3: Berechnen des Polygonzuges			*
*  4: Beenden des Programmes				*
*  Bitte geben sie eine Zahl ein!			*
*********************************************************
Auf Wiedersehen, benutzen sie dieses Programm bald wieder!