PDA

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 *

atragon
18-02-2002, 16:32
for (x = 1; x < 7; x++)
{
for (i = 1; i <= x; i++)
...

Così, al volo, dovrebbe filare.

homero
18-02-2002, 18:55
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);
}


}

cionci
18-02-2002, 19:29
Originariamente inviato da homero
[B]meglio non lincare a variabili contenute in ciclo for:

Che intendi ?

homero
18-02-2002, 19:33
for(x=0;x<7;x++){
for(y=0;y<X;y++){

usare come variabile di controllo un'altra variabile di controllo.

homero
18-02-2002, 19:35
porc...devo andare a ripetizioni di italiano...

cionci
18-02-2002, 19:38
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));

homero
18-02-2002, 19:47
si si è legale in pieno stardard ansi, ma diciamo che non è elegante...

cionci
18-02-2002, 19:50
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à...

cionci
18-02-2002, 19:51
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

homero
18-02-2002, 19:53
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);

cionci
18-02-2002, 20:25
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!!

alexmaz
19-02-2002, 01:18
Originariamente inviato da ilsensine
[B]Sei incontentabile :)
for(x=5; x>=0; --x) printf("******\n"+x);

:eek:

alexmaz
19-02-2002, 01:33
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

atragon
19-02-2002, 07:53
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

Micio82
21-02-2002, 00:43
#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