ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Documenti analoghi
Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

ESERCIZIO: Analisi di un programma. Dato il seguente programma C:

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

ESERCIZIO: SHIFT ARRAY (1)

PARTE

Introduzione al C. Lez. 2. Funzioni e Puntatori

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

Introduzione al C. Lez. 2 Funzioni e Puntatori

PROVA SCRITTA DI FONDAMENTI DI INFORMATICA L A 4 DICEMBRE 2003 Prof. Michela Milano COMPITO A

Ambienti di Programmazione per il Software di Base

Introduzione al linguaggio C Puntatori

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio sintesi (1) Esercizio sintesi (1)

Parte 1: tipi primitivi e istruzioni C

Corso di Informatica 1 Esercitazione n. 7

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1

Esempio di Prova Scritta

Laboratorio di Informatica I

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizio 1 Liste: calcolo perimetro di un poligono

Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Introduzione al linguaggio C Puntatori

Lezione 6: Array e puntatori

Esercizio 1. Liste di interi

Fondamenti di Programmazione

Esempio di Prova Scritta

Fondamenti di Informatica T-1 Modulo 2

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista

Esercizi su strutture dati

Lab 08 Stringhe e strutture

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Esercitazioni di Fondamenti di Informatica - Lez /12/2018

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

a.a Codice corso: 21012

Laboratorio 26/09/2000

Esercizi di preparazione alla I Prova Intermedia di Fondamenti di Informatica L-A a.a. 2002/2003 Prof. Paola Mello, Prof.

Lezione 8 Struct e qsort

Esercizio 1: media di numeri reali (uso funzioni e struct)

Lezione 6 Struct e qsort

Informatica 1. Prova di recupero 21 Settembre 2001

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008

Capitolo 19. Ricorsione

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;

ESERCIZIO 1 ESERCIZIO 2

Lab 08 Stringhe e strutture

Calcolatori Elettronici Lezione 2 8/10/2012. Emiliano Casalicchio

Esercitazione 7. Soluzione:

Esercitazione di Reti degli elaboratori

Esercizio 1: parole nel testo

#include <stdio.h> #include <stdlib.h> #define L 20 void Proc(char [], int); int N=L; main () { char *s; int i;

Complessità algoritmi su strutture dati (riassunto)

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Lezione 11: Liste a Puntatori e Input/Output

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Progetti su più File Array e Funzioni

PROVA SCRITTA 23 MARZO 2010

Implementazione dell albero binario in linguaggio C++

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Array. Definizione e utilizzo di vettori

Ricerca binaria ricorsiva!

Elementi di Informatica e Programmazione Allievi Ingegneria Informatica, Elettronica e delle Telecomunicazioni, Automazione Industriale

ESERCIZIO Grammatiche (1) ESERCIZIO Grammatiche (1) Espressioni algebriche

Introduzione al linguaggio C Puntatori

Esercitazione 11. Liste semplici

Fondamenti di Informatica 1 - Compito A

Esercizio 1 Conta degli elementi distinti (file esercizio1.c e leggi.h/leggi.c - 15 punti)

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Informatica (A-K) 14. Linguaggio C -4

Complessità algoritmi su strutture dati

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Strutture dati. Le liste

Metodi statici. Dichiarazione e chiamata di metodi statici

Le Funzioni e la Ricorsione

C: panoramica. Violetta Lonati

Linguaggi di programmazione + laboratorio a.a. 2012/2013

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Esercizi Programmazione I

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

METODI ESERCIZI. 07-xx_Esercizi[01] Versione del: venerdì 3 maggio Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Algoritmi di ordinamento: Array e ricorsione

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

Esercizi di preparazione alla prova scritta

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

Lezione 8: Stringhe ed array multidimensionali

a.a Codice corso: 21012

Esercizio 1 File: ordinamento di un archivio di studenti (file binario)

Transcript:

3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il secondo con il penultimo, ecc. Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. Scrivere una funzione che, data una stringa, verifica se è palindroma Scrivere una funzione che, data una stringa, conta il numero di parole contenute in essa Realizzare un programma che permette di generare una password: prese due stringhe rappresentanti nome e cognome di un utente, restituisce una password generata automaticamente. Tale stringa è ottenuta concatenando i primi tre caratteri del cognome e gli ultimi tre del nome. ESERCIZIO 6 Scrivere un programma che conta le occorrenze di una stringa x dentro ad un altra t; Ad esempio: x = buona t = una buona, buona, buonissima ed ancora buona giornata a tutti Risultato: 3 MATRICI Scrivere una funzione che, data una matrice di dimensioni scelte dall'utente, assegna ad ogni suo elemento 1 se la somma degli indici dell'elemento è dispari o 0 se la somma degli indici dell'elemento è pari. Verificare se gli elementi di una matrice quadrata di interi di ordine n x n sono tutti uguali tra loro. Verificare se una matrice quadrata di ordine n x n è unitaria. Una matrice è unitaria se gli elementi sulla diagonale principale sono tutti 1 e i restanti sono uguali a 0. Verificare se gli elementi di due matrice di interi entrambe n x n sono tutti uguali. Compiti delle vacanze Pagina 1 di 6

RICORSIONE Scrivere un programma che calcoli il prodotto tra due numeri interi mediante somme successive utilizzando la formula ricorsiva a*b = a*(b-1)+a; Scrivere un programma che calcoli la somma dei primi n numeri interi positivi utilizzando la ricorsione Scrivere un programma che calcoli il corrispondente in base 2 di un numero decimale inserito utilizzando la ricorsione Determina l'elemento massimo di un vettore usando una funzione ricorsiva Scrivere una funzione ricorsiva int somma (int n, int m) che restituisce la somma degli interi tra n a m (n e m compresi). ESERCIZIO 6 Scrivere una funzione ricorsiva che moltiplica per due tutti i valori di un array di interi. Modificarla perchè moltiplichi per due solo i valori dispari. ESERCIZIO 7 Scrivere una funzione ricorsiva che, data una base e un esponente, calcoli l elevamento a potenza di un numero. Esempio: base = 2, esponente = 3, valore di ritorno = 2 3 = 8. ESERCIZIO 8 Si scriva una funzione ricorsiva int prod(int x) che, ricevuto come parametro un numero intero positivo (pari o dispari), calcoli ricorsivamente il prodotto di tutti i numeri dispari compresi tra 1 e quel numero (compreso). ESERCIZIO 9 Si scriva una funzione ricorsiva double f(double c, int m); che calcoli il seguente valore: 0 Si scriva una funzione ricorsiva int s (int n) che calcoli il seguente valore: essendo int pow (int base, int esponente) la funzione potenza che si suppone già disponibile. Compiti delle vacanze Pagina 2 di 6

RECORD DI ATTIVAZIONE Si consideri la seguente funzione F: int G(double x){ if (x>0) { x-=2; return G(x)/2; } else return 1; } Si scriva il risultato della funzione quando invocata come G(6) e si disegnino i corrispondenti record di attivazione. Si consideri la seguente funzione F: double F(int x){ if (x<0) { x++; return 3*F(x/2); } else return -1; } Si scriva il risultato della funzione quando invocata come F(-7) e si disegnino i corrispondenti record di attivazione. Si consideri la seguente funzione g(): int g(int a, int b) { if ((a/b) <2 ) return (b-1); else return 1 + g(a-2, b); } Si scriva il risultato della funzione quando invocata come g(9, 2) e si mostrino i record di attivazione. STRUCT E FILE Svolgere i seguenti esercizi creando le opportune strutture e memorizzando in modo permanente le informazioni su file. Per ogni esercizio fornire almeno le funzionalità di inserimento, ricerca, ordinamento e modifica. Scrivere un programma che gestisca le misurazioni delle precipitazioni dato giorno, ora e valore della misurazione utilizzando le struct. Creare una struttura per la gestione delle informazioni di una città: nome, numero di abitanti, numero abitanti dello scorso anno... Scrivere una funzione per individuare la città con il maggior incremento di abitanti. Compiti delle vacanze Pagina 3 di 6

Le trasmissioni in prima serata di un canale televisivo nei diversi giorni di un mese sono organizzate in una tabella con giorno, titolo, regista, durate. L elenco viene successivamente ordinato. L utente può ottenere, fornendo da tastiera il giorno, il titolo della trasmissione, il nome del regista e la durata. Dato il file testo.txt copiare le linee pari nel file pari.txt e quelle dispari nel file dispari.txt Contare il numero di volte che una parola ricevuta dall utente compare nel file testo.txt PUNTATORI Scrivere una funzione con prototipo void somma(double *sum, double x, double y); che assegna la somma fra il secondo e il terzo argomento (passati per valore) al primo argomento (passato per riferimento) Si consideri il seguente programma: main () { float **A; float *B; float C; B = &C; A = &B; **A = 12.5; *B = 1.3; printf( il valore finale di **A è %d \n, **A); } Si dica, spiegandone brevemente le ragioni, quale sarà l output del programma. Si consideri il seguente programma: main () { int **P; int *Q; int x; x = 27; Q = malloc(sizeof(int)); P = malloc(sizeof(int *)); *P = Q; **P = 4; Q = &x; P = &Q; *Q = 5; printf( il valore finale di **P è %d e quello di x è %d \n, **P, x); } Si dica, spiegandone brevemente le ragioni, quale sarà l output del programma. Scrivere una funzione che restituisca il puntatore alla prima occorrenza del numero x in un array di interi int * cerca(int a[], int x, int size) Compiti delle vacanze Pagina 4 di 6

Data una funzione calcola: int calcola( int *a, int b, int *c) { *a = *a * 2; b = b * 2; *c = *c - 2; return *a + b + *c; } Qual è l'output del seguente frammento di programma? int z,x,*y; y = &x; z = 1; *y = 2; x = 3; z = calcola(&z,x,y); printf("%d, %d",z,x); ESERCIZIO 6 Simulare l'esecuzione di ciascuna delle 4 chiamate a sottoprogrammi, limitandosi alla descrizione dei valori stampati tramite le "printf". int X = 60; int p1(int par) { par = par - 10; return (par); } int p2(int *par) { X = *par; *par = *par - 5; return (X); } int p3(int par) { int X = par + 1; printf("\n3) X = %d", ); return (X); } main() { /* situazione iniziale */ int Y = 0, Z = 30; printf ("\n0) X = %d, Y = %d, Z = %d ", X, Y, Z); /* passo 1 */ X = p1(z); printf ("\n1) X = %d, Y = %d, Z = %d ", X, Y, Z); /* passo 2 */ Y = p2(&z); printf ("\n2) X = %d, Y = %d, Z = %d ", X, Y, Z); /* passo 3 */ Y = p3(z); printf ("\n4) X = %d, Y = %d, Z = %d ", X, Y, Z); /* passo 4 */ Y = p2(&y); printf ("\n5) X = %d, Y = %d, Z = %d ", X, Y, Z); } Compiti delle vacanze Pagina 5 di 6

LISTE Scrivere una funzione che restituisca l elemento in coda ad una lista Scrivere una funzione che faccia la copia di una lista in ingresso Letta in input una sequenza di numeri interi positivi memorizzarla in una lista. Costruire una seconda lista contenente soltanto gli elementi pari della prima lista. Stampare la seconda lista. Lette in input due liste di numeri interi ognuna delle quali ordinata, costruire una terza lista di numeri interi ordinata, mediante la fusione delle prime due. Stampare la lista. Letta in input una lista, costruire una seconda lista con gli elementi disposti al contrario rispetto alla lista originale (es.: se la lista letta in input è 1 8 4 viene costruita la lista 4 8 1). Stampare la seconda lista. Compiti delle vacanze Pagina 6 di 6