ALCUNI ESERCIZI SUL C: mi sapreste aiutare?
3) Dato il seguente programma:
#include
int main(){
int i=1;
int numero=1;
int N=10;
while(i
numero=numero*i;
i=i+3;
}
printf(“%d”, numero);
return 0;
}
a. Scrivere l’output di questo programma.
b. Riscrivere le operazioni eseguite con il ciclo while con un ciclo for commentando le modifiche.
c. Riscrivere il programma introducendo la funzione
int calcola(int dato)
che riceva esegua le stesse operazioni del ciclo for e restituisca al programma principale il numero da stampare.
5) Trovare i 4 errori nel programma seguente (e commentarli)
#include
void doppio_tripplo(int vett[], int a, int n){
int i, coeff;
for (i=1; i
coeff=i+1;
vett=coeff*a;
}
}
void quadrato(int a, int *quad) {
*quad=a*a;
}
int main()
{
int vettore[3], dato, quadrato;
printf(“Introduci il dato \n”);
scanf(“%d”, dato);
doppio_tripplo(vettore,dato,3);
printf(“Il doppio e il triplo di %d sono: %d e %d”,
vettore[0], vettore[1], vettore[2]);
quadrato(dato,quadrato);
printf(“Invece il quadrato di %c è %c”, dato, quadrato);
return 0;
}
grazie in anticipo
#include
int main(){
int i=1;
int numero=1;
int N=10;
while(i
i=i+3;
}
printf(“%d”, numero);
return 0;
}
a. Scrivere l’output di questo programma.
b. Riscrivere le operazioni eseguite con il ciclo while con un ciclo for commentando le modifiche.
c. Riscrivere il programma introducendo la funzione
int calcola(int dato)
che riceva esegua le stesse operazioni del ciclo for e restituisca al programma principale il numero da stampare.
5) Trovare i 4 errori nel programma seguente (e commentarli)
#include
void doppio_tripplo(int vett[], int a, int n){
int i, coeff;
for (i=1; i
vett=coeff*a;
}
}
void quadrato(int a, int *quad) {
*quad=a*a;
}
int main()
{
int vettore[3], dato, quadrato;
printf(“Introduci il dato \n”);
scanf(“%d”, dato);
doppio_tripplo(vettore,dato,3);
printf(“Il doppio e il triplo di %d sono: %d e %d”,
vettore[0], vettore[1], vettore[2]);
quadrato(dato,quadrato);
printf(“Invece il quadrato di %c è %c”, dato, quadrato);
return 0;
}
grazie in anticipo
Risposte
Scrivere l'output del programma non mi sembra difficile, basta armarsi di carta, penna e tanta pazienza...
Per riscrivere il ciclo while usando un ciclo for ti rammento che:
equivale a:
Per il quesito c) nel main basta inserire:
e impostare la funzione calcola() come:
Per riscrivere il ciclo while usando un ciclo for ti rammento che:
inizializzazione while(condizione) { operazioni aggiornamento }
equivale a:
for(inizializzazione;condizione;aggiornamento) { operazioni }
Per il quesito c) nel main basta inserire:
int i=1; numero=calcola(i); printf("%d",numero);
e impostare la funzione calcola() come:
int calcola(dato) { int numero=1; int N=1; while(i<N) { numero=numero*dato; dato=dato+3; } return numero; }
Un errore nel main è:
La funzione quadrato dovrebbe essere chiamata così:
Stessa cosa per doppio_tripplo, si dovrebbe passare &vettore.
Nel main poi il comando printf corretto è questo:
scanf("%d", dato) /* scorretto */ scanf("%d", &dato) /* corretto */
La funzione quadrato dovrebbe essere chiamata così:
quadrato(dato, &quadrato);
Stessa cosa per doppio_tripplo, si dovrebbe passare &vettore.
Nel main poi il comando printf corretto è questo:
printf("Invece il quadrato di %d è %d", dato, quadrato);
e quindi nel punto b quale modifica devo fare ?
Mi sembra chiaro, dal momento che l'inizzializzazione è int N=10, la condizione è i
scusa tipper ma sono un po testone su queste cose....
quindi se il ciclo for è cosi strutturato:
for (inizializzazione;condizione; aggiornamento)
aperta la graffa
operazione
chiusa la graffa
qual è l'operazione di questo programma?
quindi se il ciclo for è cosi strutturato:
for (inizializzazione;condizione; aggiornamento)
aperta la graffa
operazione
chiusa la graffa
qual è l'operazione di questo programma?
Quella che rimane:
numero=numero*i;
grazie mille
io pensavo che passando ad un altro ciclo bisognasse cambiare l'inizializzazione e le operazione
invece è solo una cosa di struttura
io pensavo che passando ad un altro ciclo bisognasse cambiare l'inizializzazione e le operazione
invece è solo una cosa di struttura
Esatto.
scusa tipper correggimi se sbaglio:
l'output del primo programma è:
printf(“%d”, numero);
l'output del primo programma è:
printf(“%d”, numero);
"ing.pietro":
scusa tipper correggimi se sbaglio:
l'output del primo programma è:
printf(“%d”, numero);
La traccia non richiede quale istruzione genera l'output (e cioè printf(“%d”, numero);), ma richiede il valore della variabile numero che viene mandato in output tramite l'istruzione printf.
Quindi prova a fare una tabella (tavola di traccia) con tutte le variabili (in questo caso i, numero e N).
praticamenteo ogni valore che introduco me lo incrementa di 3
"ing.pietro":
praticamenteo ogni valore che introduco me lo incrementa di 3
Diciamo di si, ma la traccia chiede il valore numerico stampato a video tramite la printf.
Ciao! Sono il tuo Tutor AI, il compagno ideale per uno studio interattivo. Utilizzo il metodo maieutico per affinare il tuo ragionamento e la comprensione. Insieme possiamo:
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Il Tutor AI di Skuola.net usa un modello AI di Chat GPT.
Per termini, condizioni e privacy, visita la relativa pagina.
Per termini, condizioni e privacy, visita la relativa pagina.