Anteprima
Vedrai una selezione di 6 pagine su 23
Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 1 Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 2
Anteprima di 6 pagg. su 23.
Scarica il documento per vederlo tutto.
Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 6
Anteprima di 6 pagg. su 23.
Scarica il documento per vederlo tutto.
Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 11
Anteprima di 6 pagg. su 23.
Scarica il documento per vederlo tutto.
Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 16
Anteprima di 6 pagg. su 23.
Scarica il documento per vederlo tutto.
Fondamenti di informatica - Raccolta di esercizi svolti e commentati sul linguaggio di programmazione C Pag. 21
1 su 23
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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 ;

/* IL CICLO FOR SCANDISCE LA STRINGA DI CARATTERI "parola" E VERIFICA

SE E’ PALINDROMA L’INDICE "i" SCORRE LA PRIMA META’ DI "parola". L’INDICE

"j" SCORRE LA SECONDA META’ DI "parola" PARTENDO DALL’ULTIMO CARATTERE.

LA RICERCA TERMINA QUANDO SI TROVA SI

Dettagli
Publisher
A.A. 2013-2014
23 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher mdiego di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Matera Maristella.