Christbaum
-
void main (void) int ein; int i; { ein=5; for(i=1;i=ein printf("%d",i); getch(); }
So gehört es natürlich. Jetzt hab ich mich auch angemeldet
Gruß Robert
-
http://www.pronix.de/pronix-4.html
wuerde dir gut tun
-
void baum(int pos, int stop){ int i; for(i=0; i<stop/2-pos; i++) printf(" "); for(i=0; i<pos; i++) printf("*"); printf("*"); for(i=0; i<pos; i++) printf("*"); printf("\n"); if(pos<stop) baum(pos+1,stop); if(pos==0) { for(i=0; i<stop/2-pos; i++) printf(" "); printf("*"); } } int main() { baum(0,10); return 0; }
Nur verwenden, wenns funktioniert und verstanden wurde. :xmas1:
-
Hi
Ich hab mal was geschrieben
#include <stdio.h> #include <conio.h> void main (void) { int a; int b; int c; int hoehe; hoehe=10; for(a=1;a<=(hoehe*2);a+=2) { for(c=1;c<=a;c++) { printf("*"); } printf("\n"); } getch(); }
Die Breite ist nun 2 mal so groß wie die Höhe.
Nur wie sollen die Leerzeichen kommen. Sie sollen von oben nach unten weniger werden.
so?
for(b=hoehe;b<=0;b--) printf(" ");
Das geht aber so nicht.
Hat wer eine Idee=
Danke im voraus;)
Gruß Robert
-
versuch's mal mit:
for(b=hoehe-a/2;b>0;--b) printf(" ");
(schließlich hängt die Anzahl der LEerzeichen davon ab, in welcher Zeile du stehst)
-
Hi @ all
Ich hab das ganze gestern noch geschrieben und es funktioniert und ich bin tottal happy
/*Christbaum - For Robert Schilling 23.12.2005*/ #include <stdio.h> #include <conio.h> void main (void) { int a,b,c; int hoehe,sth,le,st; char s[100]; do { printf("\nGeben Sie bitte die Hoehe ein [max 40]: "); gets(s); sscanf(s,"%d",&hoehe); if (0>=hoehe|hoehe>=40) printf("Sie haben eine inkorrekte Eingabe gemacht\n"); } while (0>=hoehe|hoehe>=40); for(a=1;a<=hoehe*2;a+=2) { for(b=hoehe-a/2;b>0;--b) { printf(" "); } for(c=1;c<=a;c++) { printf("*"); } printf("\n"); } for(sth=1;sth<=hoehe/3;sth++) { for(le=1;le<=hoehe-(hoehe/4);le++) printf(" "); for(st=1;st<=hoehe/2;st++) printf("*"); printf("\n"); } printf("\n\nHappy X-Mas\n\n"); getch(); }
Gibts da noch Verbesserungen ???
Happy X-Mas
Gruß Robert
-
printf(" ") -> putchar(' ')
printf("yadda\n") -> puts("yadda")
getch() -> getchar()
gets(s) -> fgets(s, laenge von s in bytes, stdin);
| ist ein bitoperator. fuer logik nimm ||
mehr leerzeichen in den befehlen verwenden: eins nach jedem komma und semikolon (aber nicht davor), je eins vor und nach einem gleichheitszeichen. keines vor einer schliessenden klammer und keines nach einer oeffnenden klammer, dafuer aber ein leerzeichen vor einer oeffnenden klammer und eines nach einer schliessenden klammer.
liest sich besser.es heisst int main. am ende bitte auch ein return 0 oder wonach dir der sinn steht.
saubere einrueckung: dein do-while ist deformiert, die beiden verschachtelten for loops danach sind eine ebene zu weit eingerueckt, bei deinem letzten for-loop ist die oeffnende blockklammer eine ebene zu weit drin.
-
Danke
Wie kann ich ungegrade Zahlen filtern?
zb so
if (hoehe="gerade")
for...
else
for...Danke im Voraus
Gruß Robert
-
es heißt
if(hoehe=="gerade")
Gerade/Ungerade lässt sich wunderbar mit modulo-rechnung filtern (zeichen
es berechnet den rest
5 % 2 = 1
6 % 2 = 0
16 % 5 = 1von der art her ganz logisch, du musst
hoehe % 2
rechnen.
was was ist solltest du ganz leicht kapieren (es können nur 1 und 0 entstehen)
-
Danke das geht super
-
Achja: IMMER int main() schreiben! ALles andere ist Bullshit!
-
Und warum
-
ItsNotYou schrieb:
es heißt
if(hoehe=="gerade")
nicht, wenn du stringinhalte vergleichen willst. ein pointervergleich mit einem stringliteral ist falsch, da sinnlos.
es heisst int main und fertig! so stehts im standard, so wirds gemacht. grund: ein programm hat einen rueckgabewert, der den erfolg/misserfolg des programmes angibt. deswegen return 0;, wenn alles gut gelaufen ist.
-
Danke
:xmas1:
-
c.rackwitz schrieb:
ItsNotYou schrieb:
es heißt
if(hoehe=="gerade")
nicht, wenn du stringinhalte vergleichen willst. ein pointervergleich mit einem stringliteral ist falsch, da sinnlos.
es heisst int main und fertig! so stehts im standard, so wirds gemacht. grund: ein programm hat einen rueckgabewert, der den erfolg/misserfolg des programmes angibt. deswegen return 0;, wenn alles gut gelaufen ist.
ich habe nur noch mal das if([...]) aufgenommen und das mit dem == klargestellt, das war kein bezug auf "gerade"...
-
nichtsdestotrotz sind diese beiden varianten korrekt aber zweifelhaften sinnes:
if (foo = "bar")... if (foo == "bar")...
laesst sich so schreiben:
foo = "bar"; // da das if immer true sein wird. ein string liegt schliesslich nicht an adresse null if (!strcmp(foo, "bar"))... // wenn man c strings vergleichen will
wollt ich nur der vollstaendigkeit halber losgeworden sein.