Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
E’ DIVISORE, CON RESTO UGUALE A 0, SIA DI "numero1" CHE
DI "numero2" */
if ( numero1%divisore == 0 && numero2%divisore == 0 )
{ /* POICHE’ IL RESTO E’ UGUALE A 0, IL VALORE DI "divisore"
E’ UN POSSIBILE MASSIMO COMUN DIVISORE. AGGIORNA IL VALORE
DEL MASSIMO COMUM DIVISORE */
mcd = divisore ;
printf("%d e’ divisore \n", mcd) ;
}
/* INCREMENTA IL VALORE DI "divisore" */
divisore = divisore + 1 ;
}
/* STAMPA IL RISULTATO */
printf("\n") ;
printf("Il massimo comun divisore per i numeri %d e %d e’ %d\n",
numero1, numero2, mcd) ;
}
exit(0) ;
}
Verificare se un vettore di interi è ordinato
Scrivere un programma in linguaggio C che riceve in ingresso una sequenza di N numeri
interi. I numeri sono memorizzati in un vettore. Il valore N è inserito dall’utente, ma
il vettore può contenere al massimo 30 numeri. Terminato l’inserimento della sequenza
di numeri, il programma deve verificare se il vettore contiene una sequenza di numeri
ordinata in modo strettamente crescente.
/* PROGRAMMAZIONE IN C */
#include <stdio.h>
#include <stdlib.h>
int main(void)
const int MAXN = 30 ;
int N ;
int vet[MAXN] ;
int i ;
int crescente ;
4 4
* LEGGI LE DIMENSIONI DEL VETTORE */
do
{
printf("Quanti numeri saranno inseriti? ") ;
scanf("%d",&N) ;
/* LA DIMENSIONE MASSIMA DEL VETTORE E’ COMPRESA TRA 1 E MAXN */
if ( N > MAXN || N <=0 )
printf("Errore: il numero deve essere compreso tra %d e 0\n",
MAXN) ;
}
while ( N > MAXN || N <=0 ) ;
/* LEGGI UNA SEQUENZA DI N NUMERI INTERI, MEMORIZZANDOLI IN UN VETTORE */
printf("Inserisci una sequenza di %d numeri\n", N) ;
for ( i=0; i<N; i++ )
{ printf("Elemento %d: ", i+1) ;
scanf("%d", &vet[i]) ;
}
printf("\n") ;
/* STAMPA IL VETTORE DI INTERI */
printf("La sequenza inserita e’ la seguente\n") ;
for ( i=0; i<N; i++ )
printf("Elemento %d: %d\n", i+1, vet[i]) ;
printf("\n") ;
/* VERIFICA SE LA SEQUENZA DI NUMERI E’ ORDINATA IN MODO CRESCENTE */
crescente = 1 ;
* NEL CICLO FOR SI CONFRONTA OGNI CELLA DEL VETTORE CON LA CELLA
PRECEDENTE.
SI OSSERVA CHE LA CELLA CON INDICE 0 (VET[0]) NON PUO’ ESSERE CONFRONTATA
CON LA CELLA PRECEDENTE (CON INDICE -1). PERTANTO L’INDICE "i" DEL CICLO
ASSUME I VALORI TRA 1 E N-1 */
for ( i=1; i < N && crescente==1; i++ )
{ if ( vet[i] <= vet[i-1] )
/* SEQUENZA NON CRESCENTE, AGGIORNA IL FLAG
"crescente" */ crescente = 0 ;
}
/* STAMPA IL RISULTATO */
if ( crescente == 0 )
printf("La sequenza non e’ crescente\n") ;
else printf("La sequenza e’ crescente\n") ;
exit(0) ;
}
Calcolo di occorrenze
Scrivere un programma in linguaggio C che legge N numeri interi da tastiera e li memo-
rizza in un vettore. Il numero N viene inserito dall’utente ed è minore di 20. Il programma
deve visualizzare, per ogni cifra contenuta nel vettore, il numero di occorrenze.
Ad esempio, si supponga N=7 e si consideri la sequenza di numeri 1 6 15 6 2 15 15. Il
programma deve visualizzare:
1 occorrenze 1
6 occorrenze 2
5 5
15 occorrenze 3
2 occorrenze 1
Suggerimento. Per ogni numero presente nel vettore, il numero di occorrenze deve es-
sere visualizzato una sola volta (ad esempio per i numeri 6 e 15). Utilizzare un vettore
di supporto per poter tenere traccia dei numeri nel vettore per cui sono già state calco-
late le occorrenze.
/* PROGRAMMAZIONE IN C */
include <stdio.h>
#include <stdlib.h>
int main(void)
{
const int MAXN = 20 ;
int vet[MAXN] ;
int compatto[MAXN] ;
int N ;
inr compatto ;
int i, j, t ;
int trovato ;
int occorrenze;
* LEGGI LE DIMENSIONI DEL VETTORE */
do
{
printf("Quanti numeri saranno inseriti? ") ;
scanf("%d",&N) ;
/* LA DIMENSIONE MASSIMA DEL VETTORE E’ COMPRESA TRA 1 E MAXN */
if ( N > MAXN || N <=0 )
printf("Errore: il numero deve essere compreso tra %d e 0\n",
MAXN) ;
}
while ( N > MAXN || N <=0 ) ;
/* LEGGI UNA SERIE DI N NUMERI INTERI, MEMORIZZANDOLI IN UN VETTORE */
printf("Inserisci il vettore di %d elementi\n", N) ;
for ( i=0; i< N; i++ )
{ printf("Elemento %d: ", i+1) ;
scanf("%d", &vet[i]) ;
}
printf("\n") ;
/* AGGIORNA IL VETTORE "compatto" E CALCOLA IL NUMERO DI OCCORRENZE */
/* INIZIALMENTE IL VETTORE "compatto" NON CONTIENE NESSUN NUMERO */
N_compatto = 0 ;
/* IL CICLO FOR SCANDISCE IL VETTORE "vet1" */
for ( i=0; i< N; i++ )
{
/* INIZIALIZZA IL FLAG "trovato". IL FLAG ASSUME I VALORI
-- "trovato" E’ UGUALE A 0 SE IL VETTORE "compatto" NON CONTIENE IL VALORE IN
"vet[i]"
-- "trovato" E’ UGUALE A 1 SE IL VETTORE "compatto" CONTIENE IL VALORE IN "vet[i]"
*/
trovato=0 ;
/* PER OGNI ELEMENTO vet1[i] DI vet1, IL CICLO FOR SCANDISCE IL VETTORE
"compatto" E VERIFICA SE "compatto" CONTIENE IL VALORE IN "vet1[i]"
LA RICERCA TERMINA QUANDO SI TROVA UNA CELLA "compatto[j]" UGUALE A "vet1[i]"
O QUANDO SONO STATE CONSIDERATE TUTTE LE CELLE DEL VETTORE "compatto" */
6 6
for ( j=0; j< N_compatto && trovato==0; j++ )
{
/* SE "compatto" CONTIENE "vet1[i]", AGGIORNA IL FLAG "trovato" */
if ( compatto[j] == vet[i] )
trovato = 1 ;
}
if ( trovato == 0 )
{
/* SE "trovato" E’ UGUALE A 0, COPIA NEL VETTORE "compatto" ILVALORE IN "vet[i]"
*/
compatto[N_compatto] = vet[i] ;
N_compatto = N_compatto + 1 ;
/* CALCOLA IL NUMERO DI OCCORRENZE DI "vet[i]" NEL VETTORE "vet". IL CICLO
FOR SCANDISCE IL VETTORE "vet" E CONTA QUANTE VOLTE IL VALORE IN "vet[i]" E’
PRESENTE NEL VETTORE "vet" */
occorrenze = 0 ;
for ( t=0; t< N; t++ )
{
if ( vet[t] == vet[i] )
occorrenze = occorrenze + 1 ;
}
/* STAMPA DELLE OCCORRENZE */
printf("Elemento %d: %d, occorrenze %d\n", i+1, vet[i], occorrenze) ;
}
}
exit(0) ;
}
Sostituisci carattere
Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase
è terminata dall’introduzione del carattere di invio e contiene complessivamente al più 100
caratteri. Il programma deve svolgere le seguenti operazioni:
• visualizzare la frase inserita
• costruire una nuova frase in cui tutte le occorrenze del carattere ’.’ sono sostituite
con il carattere di ritorno di linea ’\n’. Il programma deve memorizzare la nuova
frase in una opportuna variabile
• visualizzare la nuova frase.
/* PROGRAMMAZIONE IN C */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
const int MAXDIM = 100 ;
char frase[MAXDIM + 1] ;
char frasemodificata[MAXDIM + 1] ;
int lung_stringa ;
int i ;
* LEGGI LA FRASE INSERITA DA TASTIERA */
printf ("Inserisci una frase di al massimo %d caratteri: ", MAXDIM) ;
gets(frase) ;
7 7
/* CALCOLA LA LUNGHEZZA DELLA FRASE */
lung_stringa = strlen(frase) ;
/* STAMPA LA FRASE INSERITA */
printf("La frase inserita e’: ") ;
puts(frase) ;
printf("La frase contiene %d caratteri (inclusi gli spazi)\n", lung_stringa) ;
/* ANALIZZA LA FRASE INSERITA CARATTERE PER CARATTERE. RICOPIA LA FRASE
NELLA STRINGA "frase modificata". SE LA STRINGA INSERITA CONTIENE IL
CARATTERE ".", SOSTITUISCILO CON IL CARATTERE DI RITORNO DI LINEA "\n" */
for ( i=0; i<lung_stringa; i=i+1 )
{ if ( frase[i] == ’.’ )
frasemodificata[i] = ’\n’ ;
else frasemodificata[i] = frase[i] ;}
frasemodificata[lung_stringa] = ’\0’ ;
/* STAMPA LA FRASE MODIFICATA */
printf("La frase modificata e’: \n") ;
puts(frasemodificata) ;
exit(0) ;
}
Parola palindroma
Scrivere un programma in linguaggio C che riceve in ingresso una parola inserita da ta-
stiera. Si consideri che la parola può contenere sia caratteri maiuscoli che caratteri minu-
scoli, e complessivamente al massimo 30 caratteri. Il programma deve svolgere le seguenti
operazioni:
• visualizzare la parola inserita
• aggiornare la parola in modo che tutti i caratteri siano minuscoli. Il programma deve
visualizzare la parola ottenuta
• verificare se la parola è palindroma. Una parola è palindroma se può essere letta
indifferentemente da sinistra verso destra e da destra verso sinistra. Ad
esempio, le seguenti parole sono palindrome: otto, madam.
/* PROGRAMMAZIONE IN C */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
const int MAXDIM = 30 ;
char parola[MAXDIM+1] ;
int numcaratteri ;
int palindroma ;
int i, j ;
* LEGGI LA STRINGA DI CARATTERI INSERITA DA TASTIERA */
printf("Inserisci una parola di al massimo %d caratteri: ", MAXDIM) ;
scanf("%s", parola) ;
/* VISUALIZZA LA STRINGA DI CARATTERI INSERITA */
printf("La parola inserita e’: %s \n", parola) ;
/* LEGGI IL NUMERO DI CARATTERI DELLA STRINGA */
numcaratteri = strlen(parola) ;
printf("La parola contiene %d caratteri\n", numcaratteri) ;
8 8
/* CONVERTI TUTTI I CARATTERI DELLA STRINGA IN CARATTERI MINUSCOLI */
for ( i=0; i < numcaratteri ; i++ )
parola[i] = tolower(parola[i]) ;
/* VISUALIZZA LA STRINGA DI CARATTERI DOPO LA CONVERSIONE */
printf("La parola inserita scritta solo con caratteri in minuscolo e’: %s\n",
parola) ;
/* VERIFICA SE LA STRINGA "parola" E’ PALINDROMA */
/* INIZIALIZZA IL FLAG "palindroma". IL FLAG ASSUME I VALORI
-- "palindroma" E’ UGUALE A 1 SE "parola" E’ PALINDROMA
-- "palindroma" E’ UGUALE A 0 SE "parola" NON E’ PALINDROMA*/
palindroma = 1 ;