View Full Version : Non riesco a fare questo in C: che vergogna!!;(
Maverick82^
18-02-2002, 14:59
Ragazzi come faccio a visualizzare questo in C?
*
**
***
****
*****
******
Usando dei cicli for con una sola istruzione printf. Non riesco a farlo porca eva!!
Maverick82^
18-02-2002, 15:25
Ho provato a fre così:
#include <stdio.h>
main()
{
int x, i;
for (x=6; x>=1; x--) {
for (i=1; i<=6; i++) {
printf("*");
}
printf("\n");
}
return 0;
}
ma giustamente ottengo questo:
******
******
******
******
******
******
Forse ci vuole una condizione dopo il 2nd for prima di stampare *
for (x = 1; x < 7; x++)
{
for (i = 1; i <= x; i++)
...
Così, al volo, dovrebbe filare.
meglio non lincare a variabili contenute in ciclo for:
ti conviene usare un array string:
cosi' eviti il doppio ciclo
prova con:
#include <stdio.h>
main()
{
char stringa[7]="/*6spazi*/\n"
int x;
for (x=0; x<7; x++){
stringa[x]="*";
printf("%s",stringa);
}
}
Originariamente inviato da homero
[B]meglio non lincare a variabili contenute in ciclo for:
Che intendi ?
for(x=0;x<7;x++){
for(y=0;y<X;y++){
usare come variabile di controllo un'altra variabile di controllo.
porc...devo andare a ripetizioni di italiano...
Perchè ? E' perfettamente legale...
ilsensine
18-02-2002, 19:46
Come desideri :D
for (x=1, y=1; x<7; y=(printf("*"),y<x) ? y+1: (printf("\n"), ++x, 1));
si si è legale in pieno stardard ansi, ma diciamo che non è elegante...
Originariamente inviato da homero
[B]si si è legale in pieno stardard ansi, ma diciamo che non è elegante...
Io non ci vedo niente di strano...anzi l'ho visto usare anche in qualche algoritmo all'università...
Originariamente inviato da ilsensine
[B]Come desideri :D
for (x=1, y=1; x<7; y=(printf("*"),y<x) ? y+1: (printf("\n"), ++x, 1));
Oh....questa è vera programmazione !!! :D :D :D :D
for (x=1, y=1; x<7; y=(printf("*"),y<x) ? y+1: (printf("\n"), ++x, 1));
bello ma poco efficente :)
comunque è utile quando non si puo' caricare integralmente la stringa nella cache del processore :)
ilsensine
18-02-2002, 20:14
Sei incontentabile :)
for(x=5; x>=0; --x) printf("******\n"+x);
Azzo...a questa non ci avevo pensato...ma sei un genio !!! :)
Raga...abbiamo tutti molto da imparare da ilsensine...almeno io di sicuro ;)
/\/\@®¢Ø
18-02-2002, 20:32
Originariamente inviato da homero
[B]for (x=1, y=1; x<7; y=(printf("*"),y<x) ? y+1: (printf("\n"), ++x, 1));
bello ma poco efficente :)
comunque è utile quando non si puo' caricare integralmente la stringa nella cache del processore :)
Chissa perche mi viene in mente un 'vecchio' detto...
"Premature optimization is the root of all evil."
Donald Knuth ( o Edsger Dijkstra ? )
:D:D
Maverick82^
18-02-2002, 21:08
Grazie ragazzi, grazie a voi ho capito! Questo si che è un gran forum!!
Originariamente inviato da ilsensine
[B]Sei incontentabile :)
for(x=5; x>=0; --x) printf("******\n"+x);
:eek:
Originariamente inviato da /\/\@®¢Ø
[B]
Chissa perche mi viene in mente un 'vecchio' detto...
"Premature optimization is the root of all evil."
Donald Knuth ( o Edsger Dijkstra ? )
:D:D
grande verità!
'azz Dijkstra oltra al cognome impronunciabile ha pure il nome... poverino! :D
Originariamente inviato da ilsensine
[B]Sei incontentabile :)
for(x=5; x>=0; --x) printf("******\n"+x);
Perchè non ci penso mai io a 'ste belle cosine.... :D
#include <stdio.h>
main()
{
int x, i;
for (x=1; x<=6; x=x+1) {
for (i=1; i<=x; i++) {
printf("*");
}
printf("\n");
}
getch();
return 0;
}
io l'avrei fatto cosi',dovendo usare i 2 cicli
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.