if vereinfachung



  • hi,

    /* Die Haeufigkeit der Eingabezeichen wird Untersucht */
    #include <stdio.h>
    main()
    {
      int c,n,i;
      int h[9];
      for(i=0;i<9;++i)
        h[i]=0;
      n=0;
      while((c=getchar())!=EOF) {
        ++n;
      if(c==' ' || c=='\n' || c=='\t') {
        n=n-;1
        if(n==1)
          ++h[0];
        if(n==2)
          ++h[1];
        if(n==3)
          ++h[2];
        if(n==4)
          ++h[3];
        if(n==5)
          ++h[4];
        if(n==6)
          ++h[5];
        if(n==7)
          ++h[6];
        if(n==8)
          ++h[7];
        if(n==9)
          ++h[8];
        n=0;
      }}
    
        for(i=0;i<9;++i)
          printf("\n%d",h[i]);
            }
    

    Gibt es eine möglichkeit die vielen if Abfragen zu vermeiden?
    Vllt hat jemand einen speziellen Link auf Seiten die sich
    mit Zeichenverarbeitung mit Ansi C beschäftigen.

    cu
    Josef



  • switch http://www.google.de/search?hl=de&q=switch+c&btnG=Google-Suche&meta=

    Die ersten Links dort sollten dir helfen.

    Übrigends dürfte "n=n-;1" nicht wirklich funktionieren.

    €dit: Ok, ignoriere switch. Was die anderen gepostet haben ist natürlich 10x besser ;x Das kommt davon, wenn man sich nur die if() Zeile anguckt und nicht schaut, was dann passiert.



  • Ja, gibt es:

    if(n>=1 && n<=9)
      ++h[n-1];
    


  • if(n==1) 
          ++h[0]; 
        if(n==2) 
          ++h[1]; 
        if(n==3) 
          ++h[2]; 
        if(n==4) 
          ++h[3]; 
        if(n==5) 
          ++h[4]; 
        if(n==6) 
          ++h[5]; 
        if(n==7) 
          ++h[6]; 
        if(n==8) 
          ++h[7]; 
        if(n==9) 
          ++h[8];
    

    wird zu

    ++h[n-1];
    


  • volkard schrieb:

    ++h[n-1];
    

    hm,

    if ( n > 0 && n < 10 )
        ++h[n-1];
    

    ist besser, dann ist der Wertebereich auch gesichert.



  • moe szyslak schrieb:

    ...ist besser, dann ist der Wertebereich auch gesichert.

    ja. sollte nur eine technik näherbringen.
    er wird es eh umbauen zu nem zähler, der alle 256 zeichen zählt und dann auswertet, was er will.



  • volkard schrieb:

    moe szyslak schrieb:

    ...ist besser, dann ist der Wertebereich auch gesichert.

    ja. sollte nur eine technik näherbringen.
    er wird es eh umbauen zu nem zähler, der alle 256 zeichen zählt und dann auswertet, was er will.

    Hi,

    Auf meinem System (Mac OS 😵 ist CHAR_MAX = 127 somit ist 256 auserhalb
    dem erlaubten Wertebereich für Daten des Typs char. Wie sieht das auf
    anderen Systemen aus? (Linux, Xp, etc.)

    cu
    Josef



  • Joseph schrieb:

    Auf meinem System (Mac OS 😵 ist CHAR_MAX = 127 somit ist 256 auserhalb
    dem erlaubten Wertebereich für Daten des Typs char. Wie sieht das auf
    anderen Systemen aus? (Linux, Xp, etc.)

    auch.
    char geht normalerweise (muss aber nicht sein) von -128 bis 127.
    nimmste unsigned char, geht er von 0 bis 255.



  • Darf ich fragen wieso du nicht einfach eine for-Schleife nimmst ?



  • weil das schwachsinn waere? lies bitte den ganzen thread, bevor du antwortest.


Anmelden zum Antworten