Anfänger braucht Hilfe bei Tabelle



  • HI,

    ich habe erst vor 2 Wochen mit C angefangen zu programmieren und habe nun als Hausaufgabe ein Programm geschrieben, welches das 1*1 wiedergibt.

    #include <conio.h>
    #include <stdio.h>
    
    void tabelle_drucken ();
    
    int n,x,i,c,y;
    
    int main() {
    
       getchar();
        printf("Bitte legen Sie den Zahlenberiech durch eine ganzzahlige Zahl fest \n");
        scanf("%d",&n);           
        tabelle_drucken ();    
        return (0);    
    
    }
    
    void tabelle_drucken () {        
    
    for (c=1;c<=n;c++){
    
             for (i=1;i<=n;i++) {
                 x++;
                 y=i*c;                         
    
                 printf("%d \t",y);       
    
            }
            printf ("\n");
            }
            }
    

    das Ergebnis kommt in einer ziemlich "hässlichen" Form daher und ich wollte fragen, ob man nicht das ganze durch ein paar Linien trennen könnte,also ein bischen verschönern könnte. ( pimp my proggy 😉 )



  • versuchmal sowas , unt teste mit Zahl 10

    #include <conio.h>
    #include <stdio.h>

    void tabelle_drucken ();

    int n,x,i,c,y;

    int main() {

    printf("Bitte legen Sie den Zahlenberiech durch eine ganzzahlige Zahl fest \n");
    scanf("%d",&n);
    printf("\n");
    tabelle_drucken ();
    return (0);

    }

    void tabelle_drucken () {
    for (c=1;c<=n;c++){

    for (i=1;i<=n;i++) {
    x++;
    y=i*c;

    printf("%2d \t",y);
    }
    printf("--------------------------------------------------------------------------------");
    printf ("\n");
    }
    getchar();
    getchar();



  • erstmal, wieso nutz du globale Varibalen und übergibst nicht einfach nur n an tabelle_drucken?
    Dann könntest du einen festen Zeichenbereich zwischen den Spaltenlinien bestimmen.
    Bsp.
    #<--7-->|<--7-->|<--7-->|
    #<--7-->|<--7-->|<--7-->|
    #<--7-->|<--7-->|<--7-->|
    #<--7-->|<--7-->|<--7-->|

    in dem du die Ziffernanzahl der Zahlen bestimmst und sie rechts bündig anordnest

    #     1 |     2 |     3 |
    #     4 |     5 |     6 |
    #     7 |     8 |     9 |
    #    10 |    11 |    12 |
    

    Die Ziffernanzahl erhältst du in dem du die Durchläufe zählst, die eine Zahl sich durch 10 dividieren läßt.

    int getAnz(int i){
      int count = 1;
      while (i>10) i /= 10;
      return i;
    }
    


  • #include <conio.h>
    #include <stdio.h>
    
    void tabelle_drucken ();
    
    int main() {
        int n, /*kommentar was n macht*/
            x, /*kommentar was x macht*/
            i, /*kommentar was i macht*/
            c, /*kommentar was c macht*/
            y; /*kommentar was y macht*/
        fflush(stdin);
        printf("Bitte legen Sie den Zahlenberiech durch eine ganzzahlige Zahl fest \nIhre eingabe Bitte> ");
        scanf("%d",&n);          
        tabelle_drucken (c, n, i, y, x);
        return (0);    
    }/*end main*/
    
    void tabelle_drucken (int c, int n, int i, int y, int x) {            
       for (c=1;c<=n;c++){
          for (i=1;i<=n;i++) {
             x++;
             y=i*c;                        
             printf("| %2d ",y);      
          }/*end for*/
          printf("|\n");
          for(i = 1; i <= n ++i)
             printf("+------+");
       }/*end for*/
       prinf("\n\n");
    }/*end tabelledrucken*/
    

    so wuerde ich das schoener finden
    ps vielleicht waeren variablen die etwas mehr aussagen besser
    und nicht soviel mit globalen variablen arbeiten
    ps2 ⚠ code ist ohne gewaer habe zu waenig zeit zum testen gehabt ⚠



  • THX 4 die Anregungen.. sieht auf jeden fall etwas besser aus
    was bewirkt "fflush(stdin)"???



  • Den Quelltext etwas ausgedünnt, aber immer noch ohne Garantie

    #include <conio.h>
    #include <stdio.h>
    
    void tabelle_drucken ();
    
    int main() {
        int n;
        fflush(stdin);
        printf("Bitte legen Sie den Zahlenberiech durch eine ganzzahlige Zahl fest \nIhre eingabe Bitte> ");
        scanf("%d",&n);          
        tabelle_drucken (n);
        return (0);    
    }/*end main*/
    
    void tabelle_drucken (int in) {
       int c,i,y;
       for (c=1;c<=in;c++){
          for (i=1;i<=in;i++) {
             //x++; //wozu ist denn das gut?
             y=i*c;                        
             printf("| %2d ",y);      
          }/*end for*/
          printf("|\n");
          for(i = 1; i <= in; ++i)
             printf("+------+");
       }/*end for*/
       prinf("\n\n");
    }/*end tabelledrucken*/
    

    fflush() leer einen Stream, in dem Fall stdin (den Eingabestream), damit evtl. noch vorhandene Zeichen zulöschen.



  • das x++ hab ich rausgenommen.. braucht man ja nicht


Anmelden zum Antworten