Agathos Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 Or dunque... nel mio manualozzo ho un problemozzo che mi stà facendo impazzire a causa della sua semplicità . Devo creare un programma che faccia il disegno: * ** *** **** ***** ****** ******* ******** ********* ********** Condizioni del problema sono: - utilizzare il comando di iterazione for; - utilizzare nel ciclo la funzione printf ( "*" ); Dunque teoricamente dovrei creare un iterazione che ad ogni "giro" aggiunge un *. Per fare questo non capisco bene se come contatore nell'intestazione di for dobbiamo mettere il numero complessivo di * oppure semplicemente il numero di righe da iterare. Oltre a questo... l'unica variabile che possiamo dichiarare è solo il contatore, visto che non possiamo (o forse non è proprio possibile) associare * ad una variabile int tramite la funzione getchar(). Dunque come far capire che nel corso del ciclo dobbiamo aggiungere un asterisco? Il problema sembrerebbe molto simile ad uno che chiede molto semplicemente la somma degli interi pari o dispari da un numero ad un altro più grande... ma in questo caso mi imbroglia il testo. printf ( "*" ); e come diavolo faccio senza alcuna variabile che io possa sommare? Mac Mini Core Duo 1.66 GHz iPod Nano RAM: 512MB Memoria: 4GB Hard Disk: 80GB Colore: azzurro Serial: YM608GJMU36 Link al commento Condividi su altri siti Altre opzioni di condivisione...
Hitan Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 non puoi dichiarare un secondo contatore? solo uno ne puoi usare? Link al commento Condividi su altri siti Altre opzioni di condivisione...
Agathos Inviato 29 Agosto 2007 Autore Segnala Condividi Inviato 29 Agosto 2007 non puoi dichiarare un secondo contatore? solo uno ne puoi usare?Mmm... non è specificato, che intendi dire? Mac Mini Core Duo 1.66 GHz iPod Nano RAM: 512MB Memoria: 4GB Hard Disk: 80GB Colore: azzurro Serial: YM608GJMU36 Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 Non ho capito bene il problema... In effetti basterebbe usare un secondo contatore. Una cosa tipo questa: #include <stdio.h> int main() { int numRighe; //e di conseguenza asterischi per ogni riga printf("Quante righe? "); scanf("%d", &numRighe); int i = 1; while(i<=numRighe) { int n; for(n=0; n<i; n++) { printf("*"); } printf("\n"); i++; } } Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
Agathos Inviato 29 Agosto 2007 Autore Segnala Condividi Inviato 29 Agosto 2007 /* PROGRAMMA 4.16 */ #include <stdio.h> int main() { int contatorefor; int contatorewhile = 1; while ( contatorewhile <= 10 ) { for ( contatorefor = 0; contatorefor < contatorewhile; contatorefor++ ) { printf ( "*" ); } /* fine del comando for */ printf ( "\n" ); contatorewhile++; } /* fine del comando while */ return 0; } Risolto mentre giocavo alla demo di skate sulla 360. Ad ogni modo è normale commettere molti errori prima di arrivare alla soluzione? Mac Mini Core Duo 1.66 GHz iPod Nano RAM: 512MB Memoria: 4GB Hard Disk: 80GB Colore: azzurro Serial: YM608GJMU36 Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacDragon Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 io avrei semplicemente usato un accumulatore .... nn ricordo la semantica del C ma ad ogni modo avrei fatto qualcosa tipo char star = "*"; string accumulatore = ""; for ( contatorefor = 0; contatorefor < 10; contatorefor++ ) { accumulatore += star; printf ( accumulatore + "\r\n" ); } oppure il mio C e' arruginitissimo???? Switcher since: some day in June '06 Nikon D40 + AF-S DX 18-55 G II ~ SIGMA 70-300 DG MACRO flickr "Solo due cose sono infinite, l'universo e la stupidità umana, e non sono sicuro della prima." (A. Einstein) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Hitan Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 ma una stupidata del tipo.... for (cont1 = 1 , cont1<10, cont1++) { for (cont2=1,cont2<cont1,cont2++) { printf("*") } printf("\n") } non funziona? Link al commento Condividi su altri siti Altre opzioni di condivisione...
balduz84 Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 due cicli for uno dentro l'altro e risolvi il tutto....forse potrebbe essere anche solo un ciclo ma per ora non mi viene come farlo....ma dato che quando sei alla riga 1 le * è una...e quando sei alla riga due le * sono due e via dicendo...forse un ciclo solo e una variabile tampone può bastare?? anche se dubito.....io di base lo risolverei con due cicli uno nell'altro.... Balduz84  AtSafe.it - Consulente Mac (Apple Certified Technical Coordinator 10.6)  MacPro - Quad-Core Xeon 2.8 Ghz - 6GB DDR2 - NVIDIA GeForce GT 120 - HD 4TB  MacBook Pro 15" - Core 2 Duo - 4GB DDR2 - SSD 120 GB Corsair Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacDragon Inviato 29 Agosto 2007 Segnala Condividi Inviato 29 Agosto 2007 mah io rimango dell'idea dell'accumulatore ... piu semplice di cosi! Switcher since: some day in June '06 Nikon D40 + AF-S DX 18-55 G II ~ SIGMA 70-300 DG MACRO flickr "Solo due cose sono infinite, l'universo e la stupidità umana, e non sono sicuro della prima." (A. Einstein) Link al commento Condividi su altri siti Altre opzioni di condivisione...
BlackICE Inviato 30 Agosto 2007 Segnala Condividi Inviato 30 Agosto 2007 mah io rimango dell'idea dell'accumulatore ... piu semplice di cosi! A parte il C arruginito l'idea dell'accumulatore ci sta bene. Certo le operazioni su stringhe non sono le più banali in C... ma una strcat(accumulatore, "*") fa al caso nostro: #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char **argv){ int ln = 0, int i=0; char *acc = NULL; // l'accumulatore printf("Quante righe? "); scanf("%d", &ln); for(i=0; i<=ln; i++){ acc = (char *) realloc((i+1)*sizefof(char)); // ci vuole lo spazio anche per il newline strcat(acc, "*"); printf("%s", acc); } free(acc); return 0; } Sicuramente c'è qualche errore, correggibile però con le man pages e un gcc/gdb. Notare che andrebbero aggiunti un pò di controlli di errore... Wii code: 0734 3828 1483 3595 Mii name: BlackICE Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacDragon Inviato 30 Agosto 2007 Segnala Condividi Inviato 30 Agosto 2007 bhe si ... il mio codice era piu una pseudo codifica! Switcher since: some day in June '06 Nikon D40 + AF-S DX 18-55 G II ~ SIGMA 70-300 DG MACRO flickr "Solo due cose sono infinite, l'universo e la stupidità umana, e non sono sicuro della prima." (A. Einstein) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.