Vorstellung meiner Programme

  • geschlossen
  • C

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Vorstellung meiner Programme

    Hallo!
    Ich wollte mal fragen, was ihr von diesen Quelltexten haltet,
    es sind zwei meiner ersten Programme.

    PHP-Quellcode

    1. /*******************************************************************/
    2. /* Prgoramm zur Berechnung eines Rechtwinkligen Dreiecks */
    3. /* */
    4. /* */
    5. /* */
    6. /* ©2005 Björn Johannes */
    7. /* */
    8. /*******************************************************************/
    9. #include <stdio.h>
    10. #include <math.h>
    11. #define PI 3.14159265
    12. main()
    13. {
    14. double alpha, beta, gamma = 90.00; //Erstellen der Variablen
    15. double a, b, c; //Erstellen der Variablen
    16. int check_winkel = 0;
    17. int check_seiten = 0;
    18. alpha = 0;
    19. beta = 0;
    20. a = 0;
    21. b = 0;
    22. c = 0;
    23. //Ausgeben der Überschrift
    24. printf("\n\t\tProgramm zum Berechnen eines Rechtwinkligen Dreieckes.");
    25. printf("\n\t\t\t\270Dezember 2005 Bj\224rn Johannes\n");
    26. //Einlesen des Winkels alpha
    27. printf("\nWenn der Winkel alpha bekannt ist, bitte eingeben,\n"
    28. "ansonsten 0 eingeben: ");
    29. scanf("%lf", &alpha);
    30. //Einlesen des Winkels beta
    31. printf("\nWenn der Winkel beta bekannt ist, bitte eingeben,\n"
    32. "ansonsten 0 eingeben: ");
    33. scanf("%lf", &beta);
    34. //Einlesen der Seite a
    35. printf("\n\nWenn die Seitenl\204nge a bekannt ist, bitte eingeben,\n"
    36. "ansonsten 0 eingeben: ");
    37. scanf("%lf", &a);
    38. //Einlesen der Seite b
    39. printf("\nWenn die Seitenl\204nge b bekannt ist, bitte eingeben,\n"
    40. "ansonsten 0 eingeben: ");
    41. scanf("%lf", &b);
    42. //Einlesen der Seite c
    43. printf("\nWenn die Seitenl\204nge c bekannt ist, bitte eingeben,\n"
    44. "ansonsten 0 eingeben: ");
    45. scanf("%lf", &c);
    46. //Anzeige der eingegebenen zahlen
    47. printf("\n Sie haben eingegeben:"
    48. "\n a = %.2lfcm alpha = %.2lf\370"
    49. "\n b = %.2lfcm beta = %.2lf\370"
    50. "\n c = %.2lfcm gamma = %.2lf\370\n\n", a, alpha, b, beta, c, gamma);
    51. if (alpha > 0 && beta > 0)
    52. {
    53. printf("\n\n\n\t\a\aFehler bei der Eingabe, es d\201rfen nicht\n"
    54. "zwei Winkel eingegeben werden!");
    55. printf("\n\tDr\201cken Sie [Enter]");
    56. getchar();
    57. getchar();
    58. exit(0);
    59. }
    60. if (alpha > 0)
    61. check_winkel ++ ;
    62. if (beta > 0)
    63. check_winkel ++ ;
    64. if (a > 0)
    65. check_seiten ++ ;
    66. if (b > 0)
    67. check_seiten ++ ;
    68. if (c > 0)
    69. check_seiten ++ ;
    70. if (check_seiten > 2 || check_seiten < 1)
    71. {
    72. printf("\n\n\n\t\a\aFehler bei der Eingabe!");
    73. printf("\n\tDr\201cken Sie [Enter]");
    74. getchar();
    75. getchar();
    76. exit(0);
    77. }
    78. if (check_seiten == 2 && check_winkel > 0)
    79. {
    80. printf("\n\n\n\t\a\aFehler bei der Eingabe!");
    81. printf("\n\tDr\201cken Sie [Enter]");
    82. getchar();
    83. getchar();
    84. exit(0);
    85. }
    86. if (alpha > 89 || beta > 89)
    87. {
    88. printf("\n\n\n\t\a\aFehler bei der Eingabe!");
    89. getchar();
    90. getchar();
    91. exit(0);
    92. }
    93. if (alpha == 0)
    94. {
    95. if (beta > 0)
    96. alpha = 90 - beta;
    97. else
    98. {
    99. if (a > 0)
    100. {
    101. if (b > 0)
    102. alpha = atan (a / b) * 180 / PI;
    103. else if (c > 0)
    104. alpha = asin (a / c) * 180 / PI;
    105. }
    106. else if (b > 0 && c > 0)
    107. alpha = acos (b / c) * 180 / PI;
    108. }
    109. }
    110. if (beta == 0)
    111. {
    112. if (alpha > 0)
    113. beta = 90 - alpha;
    114. else
    115. {
    116. if (a > 0)
    117. {
    118. if (b > 0)
    119. beta = atan (a / b) * 180 / PI;
    120. else if (c > 0)
    121. beta = acos (a / c) * 180 / PI;
    122. }
    123. else if (b > 0 && c > 0)
    124. beta = asin (b / c) * 180 / PI;
    125. }
    126. }
    127. if (a == 0)
    128. {
    129. if (b > 0)
    130. {
    131. a = b * tan (alpha * PI / 180);
    132. if (c > 0)
    133. a = sqrt((c * c) - (b * b));
    134. }
    135. else if (c > 0)
    136. a = c * cos (beta * PI / 180);
    137. }
    138. if (b == 0)
    139. {
    140. if (a > 0)
    141. {
    142. b = a / tan (beta * PI / 180);
    143. if (c > 0)
    144. b = sqrt((c * c) - (a * a));
    145. }
    146. else if (c > 0)
    147. b = c * cos (alpha * PI / 180);
    148. }
    149. if (c == 0)
    150. {
    151. if (a > 0)
    152. {
    153. c = a / sin (alpha * PI / 180);
    154. if (b > 0)
    155. c = sqrt((a * a) + (b * b));
    156. else if (b > 0)
    157. c = b / sin (beta * PI / 180);
    158. }
    159. //Anzeigen der Ergebnisse
    160. printf("\n die Ergebnisse:"
    161. "\n a = %.3lfcm alpha = %.3lf\370"
    162. "\n b = %.3lfcm beta = %.3lf\370"
    163. "\n c = %.3lfcm gamma = %.3lf\370\n", a, alpha, b, beta, c, gamma);
    164. }
    165. }
    Alles anzeigen


    Das war das erste, und jetzt kommt das zweite.

    PHP-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #define clrscr() system("cls")
    4. main()
    5. {
    6. int zufallszahl;
    7. int i;
    8. int eingabe;
    9. char nochnspiel;
    10. printf("\n\tEin kleines Zahlenrat-Spiel");
    11. printf("\n\t\270 Januar 2006 Bjoern Johannes");
    12. anfang:
    13. printf("\n\nSie haben drei Versuche, eine Zahl zwischen 1 und 10 zu erraten,");
    14. printf("\ndie der Computer sich ausdenkt!");
    15. srand(time(NULL));
    16. zufallszahl=rand()%10+1;
    17. for (i = 1; i < 4; i ++)
    18. {
    19. printf("\n\nVersuch %d", i);
    20. printf("\nIhre Eingabe: ");
    21. scanf("%d", &eingabe);
    22. fflush(stdin);
    23. if (eingabe == zufallszahl)
    24. {
    25. printf("\n\n\tErraten!\n");
    26. goto nochnspiel_;
    27. }
    28. if (eingabe < zufallszahl)
    29. printf("\n\tDie gesuchte zahl ist gr\224sser als die Eingegebene!");
    30. if (eingabe > zufallszahl)
    31. printf("\n\tDie gesuchte zahl ist kleiner als die Eingegebene!");
    32. }
    33. printf("\n\nDie Zahl lautete: %d", zufallszahl);
    34. nochnspiel_:
    35. printf("\n\nNoch ein Spiel? Dr\201cke <j> f\201r ja, <n> f\201 nein: ");
    36. scanf("%c", &nochnspiel);
    37. if (nochnspiel == 'j')
    38. {
    39. clrscr();
    40. goto anfang;
    41. }
    42. if (nochnspiel == 'n')
    43. exit(0);
    44. }
    Alles anzeigen


    Gruß aus dem Norden,
    Johannes
  • Schön das Ihr Kritik üben könnt, aber grade ein Anfänger würde sich bestimmt wünschen das man ihm zeigt was denn leichter ginge :) und was mann tun kann damit es nicht mehr "wirr" ist ;)
    "It is possible to commit no mistakes and still lose. That is not a weakness. That is life." - Captain Jean-Luc Picard
  • na gut dann...

    Beim ersten Beispiel ist es zwar super das du Kommentare hinzugefügt hast aber Sie sind an der falschen Stelle.

    Das einlesen dürfte auch nach längerem nicht bearbeiten des Programms klar sein, aber bei den if´s wo man sicher bald nicht mehr weis um was es geht sollte vermehrt kommentiert werden.

    musst du schon PI beim ersten Prog. bestimmen ist das nicht in der math.h?

    Statt den vielen If´s könntest du auch switch-> case anweisungen nehmen

    mfg marx
    [SIZE="1"] Wenn wer nen IPV sucht, melden!!!
    (\_/)
    (o.0)
    (><)
    This is Bunny. Copy Bunny into your signature to help him on his way to world domination
    [/SIZE]
  • Für den Anfang doch garnicht schlecht, der durchblick dauert etwas wegen der größe (geht einfacher) aber mach weiter so!

    mfg mrgame

    p.s. mach doch eine Main und eine Funktion dann kommt man besser zurecht ;)
    [size=3]5 Jahre mrgame im FS-B Board !![/size]
  • unser Dozent hat uns mal als regel gesagt...

    pro Funktion/Methode bloß eine Seite

    schau die mal Unterprogrammtechnik an, dein Prog kannst dui schön aufteilen in Unterprogramme z.B. Eingabe, rechnen, Ausgabe...
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • ich findes recht gut, ich programmiere auch die ersten Schritte. :) ich glaub bei mir wäre es ähnlich ausgefallen oder nur umständlicher. Welches Tut oder Buch haste du benutzt? Ich nutze das Buch "C Programmieren von Anfang an" und eine C/C++ Referenzen vom Grabbeltisch.
  • Könntest natürlich auch ein hauptprogramm mit einem eingabe und einem ausgabeprogramm und globale variablen verwenden, macht die ganze sache noch übersichtlicher. Wobei glaub ich lohnt sich des für so ein prog net, aber ist unverzichtbar für größere progs.

    viel spaß weiterhin beim programmieren!!!

    greetz friezy
  • friezy schrieb:

    ... und globale variablen verwenden, ...


    Globale Variablen sind bäh, NICHT verwenden!! dafür gibtd Übergabewerte :flag: :flag:

    :depp: :depp: :depp:
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • Also es gibt da n paar sachen zum verbessern:

    PHP-Quellcode

    1. double alpha, beta, gamma = 90.00; //Erstellen der Variablen
    2. double a, b, c; //Erstellen der Variablen
    3. int check_winkel = 0;
    4. int check_seiten = 0;
    5. alpha = 0;
    6. beta = 0;
    7. a = 0;
    8. b = 0;
    9. c = 0;
    Alles anzeigen


    mach draus:

    PHP-Quellcode

    1. double alpha = 0, beta = 0, gamma = 90.00, a=0, b=0, c=0;
    2. int check_winkel = 0, check_seiten = 0;

    und dann zum zweiten:
    kein goto verwenden... Für das gibt schleifen

    Gruss

    lukas
  • Hi Johannes,
    ich habe mal dein Ratespiel verbessert.
    Es gibt jetzt keine gotos mehr, was es sehr übersichtlich macht.
    Das fflush() habe ich durch ein getchar() ersetzt. Das getchar() holt dir den Zeilenumbruch aus dem Tastaturkanal.
    Das while ('j' == nochnspiel) ersetz deine gotos. Durch das Schreiben der Variable rechts vom Gleichheitszeichen kann es nicht passieren, dass du versehentliche eine Zuweißung machts (= statt ==).
    Wenn du ein Buch zum lernen suchst kann ich dir noch den Kernighan & Ritchie "The C Programming Language" empfehlen. Gibt es auch auf Deutsch.

    PHP-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #define clrscr() system("cls")
    4. int main(void)
    5. {
    6. int zufallszahl;
    7. int i;
    8. int eingabe;
    9. char nochnspiel='j';
    10. printf("\n\tEin kleines Zahlenrat-Spiel");
    11. printf("\n\t\270 Januar 2006 Bjoern Johannes");
    12. while('j' == nochnspiel)
    13. {
    14. printf("\n\nSie haben drei Versuche, eine Zahl zwischen 1 und 10 zu erraten,");
    15. printf("\ndie der Computer sich ausdenkt!");
    16. srand(time(NULL));
    17. zufallszahl=rand()%10+1;
    18. for (i = 1; i < 4; i ++)
    19. {
    20. printf("\n\nVersuch %d", i);
    21. printf("\nIhre Eingabe: ");
    22. scanf("%d", &eingabe);
    23. getchar();
    24. if (eingabe == zufallszahl)
    25. printf("\n\n\tErraten!\n");
    26. else if (eingabe < zufallszahl)
    27. printf("\n\tDie gesuchte zahl ist gr\224sser als die Eingegebene!");
    28. else
    29. printf("\n\tDie gesuchte zahl ist kleiner als die Eingegebene!");
    30. }
    31. printf("\n\nDie Zahl lautete: %d", zufallszahl);
    32. printf("\n\nNoch ein Spiel? Dr\201cke <j> f\201r ja, <n> f\201 nein: ");
    33. scanf("%c", &nochnspiel);
    34. getchar();
    35. clrscr();
    36. }
    37. return 0;
    38. }
    Alles anzeigen