QUINTA ESERCITAZIONE INFO A 2008/09 prof.ssa QUINTARELLI

QUINTA ESERCITAZIONE INFO A 2008/09 prof.ssa QUINTARELLI
L. MANDELLI
EQUIVALENZE TRA LE ISTRUZIONE CHE GESTISCONO CICLI
ES: RIPETO PER 10 VOLTE LE STESSE AZIONI:
cont=1;
do
{
. . .
i++;
}while(i<=10);
cont=1;
while(i<=10)
{
. . . .
i++;
for(i=1; i<=10; i++)
{
. . . .
}
}
L’ISTRUZIONE FOR E’ COMODA PER GESTIRE CICLI DEFINITI, PERCHE’ MI BASTA UNA SOLA
ISTRUZIONE, MA CI SONO PROBLEMI PER CUI SI DEVE INTERROMPERE LA SCANSIONE QUANDO SI
VERIFICA UNA PARTICOLARE CONDIZIONE.
ES, DATA UNA SEQUENZA DI 10 NUMERI, ESEGUIRE DELLE OPERAZIONI, INTERROMPERE AL PRIMO
NEGATIVO
. . . .
trovato=0;
// dico che non ancora trovato
scanf(“%d”,&num);
for (i = 0; i < 10 && trovato==0; i++)
{
. . . .
if( variabile < 0) trovato=1;
}
if(trovato==1)
printf(“TROVATO in posizione:%d”,i-1);
else
printf(“NON TROVATO”);
oppure:
. . . .
scanf(“%d”,&num);
for (i = 0; i < 10 && variabile < 0; i++);
{
. . . .
}
if(i<10)
printf(“TROVATO in posizione:%d”,i-1);
else
printf(“NON TROVATO”);
ESERCIZIO PROPOSTO PER CASA
/* ITINPREN
Scrivere un programma C in grado di acquisire in ingresso dall'utente
una sequenza di interi che termina con uno 0 (zero).
Il programma deve stampare a video il numero di volte in cui un valore
e' seguito da un valore uguale.
Es forniti 1 2 3 3 4 5 5 0, deve stampare 2.
*/
Algoritmo:
Dichiarazioni, contatore = 0, precedente non esiste quindi lo pongo =0
Ripeto mentre i numeri inseriti sono !=0
Leggo numero
Se numero letto == precedente
Conto +1
Il precedente diventa=numero letto
Stampo il contatore
# include <stdio.h>
void main()
{
int valore; /* variabile in cui memorizzo gli interi della sequenza */
int prec=0; /* variabile in cui memorizzo il valore precedente */
int contatore=0; /* per contare numero coppie di valori uguali */
printf("\n\nInserisci una sequenza di interi (0 per terminare):\n");
do
{
scanf("%d",&valore);
if (valore==prec) contatore++;
prec=valore;
} while(valore!=0);
printf("Il numero delle coppie di valori successivi uguali e' %d",contatore);
}
ESERCIZI SVOLTI IN AULA
FAHRENHEIT-CELSIUS
Programma per la conversione da gradi Fahrenheit a gradi Celsius con float,
scrivere una tabella che dal grado 0 al grado 300 F, ogni 20 gradi, mi trovi il
corrispondente grado C
osservazioni su %d %f, costanti intere e float
PITAGORA
disegno la tavola pitagorica dei primi 10 numero naturali.
Esercizio per stampare una tabella
di 10x10, e poi di r righe e c colonne
algoritmo:
ripeto per tutte le righe
ripeto per tutte le colonne
calcolo il singolo elemento = riga*colonna
stampo l’elemento
vado a capo
CORNICE
disegno un rettangolo di larghezza e altezza variabili con un carattere di cornice e
uno di riempimento
es:
xxxxxxxxxxxxxx
xoooooooooooox
xoooooooooooox
xxxxxxxxxxxxxx
algoritmo:
ripeto per tutte le righe
ripeto per tutte le colonne
se prima o ultima riga o prima o ultima colonna
stampo il carattere di cornice
altrimenti
stampo il carattere di riempimento
vado a capo
osservazioni sull’uso delle isstruzioni per leggere caratteri
scanf(“%c”,&carattere):
legge un carattere, quindi se si digita
un carattere+invio servono due istruzioni.
getchar():
legge un carattere,quindi se si digita un carattere con invio servono due istruzioni:
getche(); legge un carattere, non e’ necessario l’invio, per cui basta digitare il
carattere quindi una sola istruzione:
esempio
oppure
oppure
FATTORN
scanf(“%c”,&carattere);
scanf(“%c”,&invio);
carattere=getchar();
invio=getchar();
carattere=getche();
Programma per il calcolo del fattoriale
n! = n(n-1) se n>1
n! = 1
se n=0 o n=1
Algoritmo:
dichiarazioni numero intero e fattoriale long int
leggo il numero
se numero < di 0 'Errore'
altrimenti se numero =0 o =1 fattoriale = 1
altrimenti per tutti i suoi precedenti
li moltiplico tra loro
stampo fattoriale
ESERCIZIO PROPOSTO PER CASA
FATTORI PRIMI
Ricordando l’algoritmo studiato che trova tutti i divisori di un numero,
scrivere un programma C, completo delle opportune dichiarazioni di variabili,
in grado di acquisire in ingresso dall'utente un valore intero num e stampare a video
tutti i fattori primi di num.