Verschiedene Zahlen zaehlen

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

  • Verschiedene Zahlen zaehlen

    Hallo zusammen,

    ich hab ein programm geschrieben das mit rand() und %5 einen Array zahle zuweist.
    Nun möchte ich die 0er, 1er, 2er...und 4er zaehlen.
    Das zaehlen mache ich mit 5 If-Anweisungen.

    Gibt es statt den 5 Ifs auch was einfacheres?

    Hier das Programm:


    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. void erzeugen(float a[],int length,int x);
    4. int zaehlen(float a[]);
    5. void erzeugen(float a[],int length,int x)
    6. {
    7. a[length]=rand()%5;
    8. }
    9. int zaehlen(float a[])
    10. {
    11. int x=0;
    12. int rot=0;
    13. int gelb=0;
    14. int lila=0;
    15. int rosa=0;
    16. int schwarz=0;
    17. if(a[x] == '0')
    18. {
    19. rot++;
    20. }
    21. if(a[x] == '1')
    22. {
    23. gelb++;
    24. }
    25. if(a[x] == '2')
    26. {
    27. lila++;
    28. }
    29. if(a[x] == '3')
    30. {
    31. rosa++;
    32. }
    33. if(a[x] == '4')
    34. {
    35. schwarz++;
    36. }
    37. return(rot,gelb,lila,rosa,schwarz);
    38. }
    39. int main()
    40. {
    41. float a[300];
    42. int length=0;
    43. int x=0;
    44. int rot=0;
    45. int gelb=0;
    46. int lila=0;
    47. int rosa=0;
    48. int schwarz=0;
    49. for(x=0; x<=20; x++)
    50. {
    51. erzeugen(a,length,x);
    52. printf("a[%d] = %f\n",length,a[length]);
    53. length++;
    54. }
    55. rot,gelb,lila,rosa,schwarz=zaehlen(a);
    56. printf("%d",rot,gelb,lila,rosa,schwarz);
    57. return(0);
    58. }
    Alles anzeigen

    MfG C_Boy
  • Quellcode

    1. void erzeugen(float a[],int length,int x) {
    2. a[length]=rand()%5;
    3. }

    Du verwendest den Parameter x hier gar nicht und belegst nur einen Wert und nicht mal dass wird funktionieren, da der array-index von 0 bis length-1 geht.


    Quellcode

    1. int zaehlen(float a[])
    2. {
    3. int x=0;
    4. int rot=0;
    5. int gelb=0;
    6. int lila=0;
    7. int rosa=0;
    8. int schwarz=0;
    9. if(a[x] == '0')
    10. {
    11. rot++;
    12. }
    13. if(a[x] == '1')
    14. {
    15. gelb++;
    16. }
    17. if(a[x] == '2')
    18. {
    19. lila++;
    20. }
    21. if(a[x] == '3')
    22. {
    23. rosa++;
    24. }
    25. if(a[x] == '4')
    26. {
    27. schwarz++;
    28. }
    29. return(rot,gelb,lila,rosa,schwarz);
    30. }
    Alles anzeigen

    Diesmal hast du ein Array als Parameter, wobei du aber nicht weißt wie groß dieses ist. Zu empfehlen wäre hier eine for-Schleife (einfach mal googlen :)) und switch-Anweisung (wie schon gesagt).

    Quellcode

    1. return(rot,gelb,lila,rosa,schwarz);

    Das Zurückgeben eines Tupels funktioniert vielleicht in der fuktionalen Programmierung - aber nicht in C (Schon mal deshalb weil der Rückgabetyp ein int ist). Als Lösung würde ich dir eine struct oder ein array empfehlen.


    Diese Aufzählung an Fehlern konnte noch viel weiter gehen ... Darum mein Ratschlag: besorg dir ein gutes Buch zu C oder lies dir ein paar Tuts im Internet durch damit wenigstens mal die Grundlagen von C verstehen lernst !

    MrSpider
  • Hier hab ich jetzt das Programm:
    Aber leider geht jetzt nicht.
    Bitte verbessert es.

    Danke =)l


    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. void erzeugen(int a[],int length);
    4. void zaehlen(int a[],int length,int x);
    5. void erzeugen(int a[],int length)
    6. {
    7. a[length]=rand()%5;
    8. }
    9. void zaehlen(int a[],int length,int x)
    10. {
    11. int i=0;
    12. for(i=0;i<length;i++)
    13. {
    14. for(x=0; x<=5; x++)
    15. {
    16. if(a[i]==x)
    17. {
    18. a[x]++;
    19. }
    20. }
    21. }
    22. }
    23. int main()
    24. {
    25. int a[300];
    26. int length=0;
    27. int x=0;
    28. for(length=0; length<=20; length++)
    29. {
    30. erzeugen(a,length);
    31. printf("a[%d] = %d\n",length,a[length]);
    32. }
    33. zaehlen(a,length,x);
    34. printf("%d",a[x]);
    35. return(0);
    36. }
    Alles anzeigen