Cicli in C - Problema con un programmino
Salve a tutti. Vorrei scrivere un programma in C utilizzando soltanto costrutti semplici come i cicli while e for (no array) che, dato un numero in input inserito da tastiera, stampi tutti i numeri dall'1 al numero digitato, e che ad ognuno di esso associ delle lettere in un ordine particolare, ritornando ad associare la prima lettera assegnata in partenza una volta terminata la disponibilità di lettere differenti. Faccio un esempio:
Avendo a disposizione le lettere A, B, C e D, inserisco da tastiera il numero 10, e voglio che il mio programma stampi:
1 A
2 B
3 C
4 D
5 A
6 B
7 C
8 D
9 A
10 B
Pensavo di utilizzare un costrutto di questo tipo, ma è palese che è incompleto. Non riesco a trovare una maniera per far girare ciclicamente le lettere:
Grazie a tutti in anticipo.
Avendo a disposizione le lettere A, B, C e D, inserisco da tastiera il numero 10, e voglio che il mio programma stampi:
1 A
2 B
3 C
4 D
5 A
6 B
7 C
8 D
9 A
10 B
Pensavo di utilizzare un costrutto di questo tipo, ma è palese che è incompleto. Non riesco a trovare una maniera per far girare ciclicamente le lettere:
/* Dichiaro due variabili intere e i caratteri che mi servono, quindi invito l'utente che testa il programma ad inserire il numero*/ while(n>0) {n=n-1; printf("%d %c\n",n, nome_carattere1);}
Grazie a tutti in anticipo.
Risposte
ciao!!!
Non ho capito bene il tuo intento, ma se non devi/vuoi usare array io imposterei qualcosa del genere
variando il numero con cui esegui il modulo puoi variare le lettere a disposizione, altrimenti se non vuoi usare il modulo puoi risolvere tutto con qualche if...
Se non ho capito bene cosa intendevi scusami
Non ho capito bene il tuo intento, ma se non devi/vuoi usare array io imposterei qualcosa del genere
int main() { int n = 0; char c = 'A'; while(n < 12) { c = 'A' + (n % 3); printf("\n%d %c", n, c); n++; } }
variando il numero con cui esegui il modulo puoi variare le lettere a disposizione, altrimenti se non vuoi usare il modulo puoi risolvere tutto con qualche if...
Se non ho capito bene cosa intendevi scusami

Grazie per la risposta. Hai capito perfettamente, e il tuo input mi tornerà senz'altro utile.
Ora complico però un po' le cose: e se le lettere non fossero A, B, C e D ma A, E, T e Z?
Ora complico però un po' le cose: e se le lettere non fossero A, B, C e D ma A, E, T e Z?
beh in questo caso devi per forza salvarti le lettere da qualche parte... a meno di non voler fare "strani" calcoli...
Ma perché non vuoi usare gli array? è un obbligo imposto da qualcuno?
Ma perché non vuoi usare gli array? è un obbligo imposto da qualcuno?
Mi viene imposto dalla consegna dell'esercizio che devo risolvere.
potresti postare la traccia?
Nel caso in cui le lettere non siano consecutive devi scrivere un codice simile al seguente:
Si può ovviamente anche usare uno switch o qualche altro metodo (il metodo mostrato non è ottimale ma molto semplice e leggibile).
int c; int m = n & 4; if (m == 0) c = 'A'; else if (m == 1) c = 'E'; else if (m == 2) c = 'T'; else c = 'Z';
Si può ovviamente anche usare uno switch o qualche altro metodo (il metodo mostrato non è ottimale ma molto semplice e leggibile).