ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -

Documenti analoghi
Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

Fondamenti di Informatica T-1 Modulo 2

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Informatica B

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS

Esercitazione 6. Array

Esercizi C su array e matrici

Esercizi di programmazione in linguaggio C - Costrutto iterazione

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Esercitazione 5. Corso di Fondamenti di Informatica. Laurea in Ingegneria Informatica

Programmazione I - Laboratorio

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Obiettivi di questa esercitazione

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Corso di Informatica 1 Esercitazione n. 4

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

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Esercizio 1. Esercizio 1 Soluzione

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Esercizio 1: funzione con valore di ritorno di tipo puntatore

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

Corso di Informatica 1 (IN1) Tutorato n. 11

# include<stdio.h> int main() { // Dichiarazioni int n; int i;

LA COMPLESSITA DEGLI ALGORITMI

Linguaggio C. Aggregati di dati

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Esercizio 1: calcolo del massimo di una sequenza (versione 1)

Programmi su più moduli - Esempio

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

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

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

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

while Istruzione while Cicli ed iterazioni Istruzioni di ripetizione in C Comportamento del while

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Esercitazione 12. Esercizi di Ricapitolazione

Corso di Reti di Calcolatori L-A

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot;

Problema. Vettori e matrici. Vettori. Vettori

IL PRIMO PROGRAMMA IN C

LIA. LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica L

Programmazione I - Laboratorio

Stringhe di caratteri

Strutture di iterazione

Lezione 5 Sottoarray di somma massima

Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

main() { int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; /* inizializzazione in fase di definizione */ int b[10];

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

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

Istruzioni iterative (o cicliche)

Linguaggio C: introduzione

Istruzioni iterative. Istruzioni iterative

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Informatica 1. Prova di recupero 21 Settembre 2001

Esercitazione 3. Espressioni booleane I comandi if-else e while

Algoritmi di ordinamento in linguaggio C

Si vuole realizzare un programma in grado di verificare se una griglia assegnata rispetta le regole del gioco.

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

Informatica Applicata Laboratorio 1. Ing. Antonella Dimasi

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Corso di Fondamenti di Programmazione canale E-O. Cos è. un vettore (1) un vettore (2) un vettore (3)

Esercizi proposti. Funzioni. Esercizio Confronto tra date. Esercizi proposti. Analisi. Controlli

Programmazione I - corso B a.a prof. Viviana Bono

Stringhe e allocazione dinamica della memoria

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Breve riepilogo della puntata precedente:

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

La programmazione in linguaggio C

Esercitazione 8. Array multidimensionali

Lettura da tastiera e scrittura su monitor

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Lezione 6 Selection/Insertion Sort su interi e stringhe

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Esercizi Programmazione I

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Le strutture di controllo in C++

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

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

$QDOLVLGHOSURJUDPPDTXDGUDWR

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

Esercizi di programmazione in linguaggio C English Dictionary

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Esercizi di preparazione alla prova scritta

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Strutture di Controllo

Linguaggio C - Funzioni

Transcript:

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - Elementi di Informatica e Programmazione Università di Brescia 1

Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri interi positivi (interrompendo l acquisizione se viene inserito il numero 0), li inserisce in un vettore vet_1 e produce un vettore vet_2 che li contiene in ordine inverso. Elementi di Informatica e Programmazione Università di Brescia 2

Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri interi positivi (interrompendo l acquisizione se viene inserito il numero 0), li inserisce in un vettore vet_1 e produce un vettore vet_2 che li contiene in ordine inverso. Algoritmo (per la parte di inversione) vet_1 0 1 2 3... 50 4 1 i=0 i=1 5 1 2 vet_2 0 1 2 3... 50 3-i 4 3-i Elementi di Informatica e Programmazione Università di Brescia 3

Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri interi positivi (interrompendo l acquisizione se viene inserito il numero 0), li inserisce in un vettore vet_1 e produce un vettore vet_2 che li contiene in ordine inverso. Algoritmo (per la parte di inversione) vet_1 0 1 2 3... 50 4 1 i=0 i=1 5 1 2 vet_2 0 1 2 3... 50 3-i 4 3-i Supponiamo n sia l ultima posizione del vettore (3 in questo caso): for(i=0; i<=n; i++) vet_2[n-i]=vet_1[i]; Elementi di Informatica e Programmazione Università di Brescia 4

printf("inserisci al massimo 50 numeri positivi (0 per terminare)\n"); i=0; // prossima posizione libera da occupare do{ scanf("%d", &num); if(num!=0){ vet_1[i]=num; i++; while(num!=0 && i<50); n=i-1; //ora n indica l ultima posizione occupata del vettore for(i=0; i<=n; i++) vet_2[n-i]=vet_1[i]; printf("vettore invertito\n"); for(i=0; i<=n; i++) printf("%d\n", vet_2[i]); Elementi di Informatica e Programmazione Università di Brescia 5

NB: per forzare l input di numeri positivi: printf("inserisci al massimo 50 numeri positivi (0 per terminare)\n"); i=0; // prossima posizione libera da occupare do{ do scanf("%d", &num); while(num<0) if(num!=0){ vet_1[i]=num; i++; while(num!=0 && i<50); n=i-1; //ora n indica l ultima posizione occupata del vettore Elementi di Informatica e Programmazione Università di Brescia 6

Esercizio 2 Sviluppare un programma che acquisisca da tastiera due array contenenti 10 numeri interi (int num1[10], int num2[10]), assicurandosi (per ogni array) che l utente non inserisca un numero già inserito (in questo caso, ripetere l acquisizione di ogni elemento che sia già stato inserito). Si trovino quindi tutti gli elementi comuni ad entrambi gli array e si stampi un messaggio indicante, per ogni elemento comune, l indice occupato nel primo array e nel secondo. Elementi di Informatica e Programmazione Università di Brescia 7

Acquisizione di un vettore con esclusione di numeri già inseriti for(i=0; i<10; i++){ do scanf( %d, &num); while(<numero ripetuto>); v1[i]=num; Acquisisci in num un numero che non sia già stato inserito Elementi di Informatica e Programmazione Università di Brescia 8

Acquisizione di un vettore con esclusione di numeri già inseriti for(i=0; i<10; i++){ do scanf( %d, &num); while(<numero ripetuto>); v1[i]=num; Raffiniamo il codice in modo da calcolare nella variabile ripetuto la condizione da verificare Acquisisci in num un numero che non sia già stato inserito for(i=0; i<10; i++){ do{ scanf( %d, &num); ripetuto=0; for(j=0; j<i; j++) if(v1[j]==num) ripetuto=1; while(ripetuto); v1[i]=num; Elementi di Informatica e Programmazione Università di Brescia 9

Identificazione degli elementi in comune tra v1 e v2 Per ogni elemento v1[i] con i=0, 9 - scorri tutti gli elementi v2[j] con j=0..9 - se v1[i]= v2[j] allora stampa messaggio Elementi di Informatica e Programmazione Università di Brescia 10

Identificazione degli elementi in comune tra v1 e v2 Per ogni elemento v1[i] con i=0, 9 - scorri tutti gli elementi v2[j] con j=0..9 - se v1[i]= v2[j] allora stampa messaggio for(i=0;i<10;i++) for(j=0; j<10; j++) if(v1[i]==v2[j]) printf("elemento in comune %d, in posizione %d e %d\n", v1[i], i, j); Elementi di Informatica e Programmazione Università di Brescia 11

#include <stdio.h> IL CODICE COMPLETO main(){ int v1[10], v2[10]; int i, j, comune; int num; printf("inserisci il primo vettore (10 numeri interi)\n"); for(i=0;i<10;i++){ do{ scanf("%d",&num); comune=0; for(j=0; j<i; j++) if(v1[j]==num) comune=1; while(comune); printf("inserito numero %d\n", num); v1[i]=num; printf("inserisci il secondo vettore (10 numeri interi)\n"); for(i=0;i<10;i++){ do{ scanf("%d",&num); comune=0; for(j=0; j<i; j++) if(v2[j]==num) comune=1; while(comune); printf("inserito numero %d\n", num); v2[i]=num; for(i=0;i<10;i++) for(j=0; j<10; j++) if(v1[i]==v2[j]) printf("elemento in comune %d, in posizione %d e %d\n", v1[i], i, j); system("pause"); return 0; Elementi di Informatica e Programmazione Università di Brescia 12

Esercizio 3 (ing. informatica 8 feb 2010) Si sviluppi un programma in linguaggio C che riceva in ingresso due vettori di interi, ciascuno di 10 elementi. Supponendo che i due vettori siano inseriti già ordinati in modo crescente, il programma deve creare e stampare un terzo vettore che rappresenti la fusione dei due vettori acquisiti, ovvero che contenga tutti i 20 elementi ordinati tra loro in modo crescente. Ad esempio, se il primo vettore contiene gli elementi 2 5 9 14 15 20 25 27 30 32 e il secondo vettore contiene gli elementi 3 5 10 11 12 22 23 24 26 27 Il programma crea e stampa un vettore contenente i seguenti elementi: 2 3 5 5 9 10 11 12 14 15 20 22 23 24 25 26 27 27 30 32 Elementi di Informatica e Programmazione Università di Brescia 13

Idea chiave Ciclo per mettere ordinatamente gli elementi del primo e secondo vettore in un terzo vettore vett3 - mantengo due variabili i e j, che rappresentano l indice del valore da considerare nel primo e secondo vettore - pongo in vett3 l elemento minore e incremento l indice corrispondente - esco dal ciclo quando uno dei due vettori è stato completamente inserito in vett3 Uscito dal ciclo proseguo inserendo tutti gli elementi del vettore non completamente inserito in vett3 Elementi di Informatica e Programmazione Università di Brescia 14

Il codice: inserimento dei vettori #include <stdio.h> #include <stdlib.h> main(){ int vett1[10], vett2[10]; int vett3[20]; int i, j, z; printf("inserisci il primo vettore\n"); for(i=0; i<10; i++) scanf("%d", &vett1[i]); printf("inserisci il secondo vettore\n"); for(i=0; i<10; i++) scanf("%d", &vett2[i]); Elementi di Informatica e Programmazione Università di Brescia 15

Ordinamento iniziale i=0; //elemento da considerare nel primo vettore j=0; //elemento da considerare nel secondo vettore z=0; //indice del posto libero nel terzo vettore (NB: = i+j) while(i<10 && j<10) if(vett1[i]<vett2[j]){ vett3[z]=vett1[i]; i++; z++; else{ vett3[z]=vett2[j]; j++; z++; Elementi di Informatica e Programmazione Università di Brescia 16

Inserimento finale e stampa if(i<10) for(;i<10;i++) vett3[z++]=vett1[i]; else for(;j<10;j++) vett3[z++]=vett2[j]; printf("stampa vettore ordinato\n"); for(z=0;z<20;z++) printf("%d ", vett3[z]); printf("\n"); system("pause"); return 0; Elementi di Informatica e Programmazione Università di Brescia 17

Esercizio 4 (Appello 7 aprile 2009) Scrivere un programma C che: richiede all'utente, in ordine strettamente crescente, l'inserimento di una serie di numeri interi (al massimo 19), salvandoli nel vettore num1. L'acquisizione termina dopo l'inserimento del diciannovesimo numero, o dopo che l'utente inserisce un numero non ordinato (questo numero non deve essere salvato); stampa a video il vettore acquisito; acquisisce dall'utente un numero intero N e lo inserisce nel vettore, nella posizione corretta (il vettore deve rimanere in ordine crescente); stampa a video il vettore ottenuto. Elementi di Informatica e Programmazione Università di Brescia 18

Il codice: inserimento del vettore ordinato printf("inserisci in ordine crescente al massimo 19 numeri\n"); scanf("%d", &num); vett[0]=num; n=1; // indice in cui inserire il prossimo elemento nonordinato=0; // nonordinato posto a 1 se inserimento numero // non ordinato do{ scanf("%d", &num); if(num>vett[n-1]){ vett[n]=num; n++; else nonordinato=1; while(nonordinato==0 && n<19); Elementi di Informatica e Programmazione Università di Brescia 19

Stampa vettore ordinato e acquisizione numero da inserire n=n-1; // posizione ultimo elemento inserito for(i=0; i<=n; i++) printf("%d ", vett[i]); printf("inserisci numero da inserire nel vettore\n"); scanf("%d", &num); Elementi di Informatica e Programmazione Università di Brescia 20

Inserimento numero num e stampa finale i=0; while(i<=n && num>vett[i]) i++; //i: posizione in cui inserire l'elemento for(j=n; j>=i; j--) vett[j+1]=vett[j]; vett[i]=num; for(i=0; i<=n+1; i++) printf("%d ", vett[i]); system("pause"); Elementi di Informatica e Programmazione Università di Brescia 21