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
ps2code 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