1. Scostamenti percentuali

Si scriva un programma che acquisisce da input numeri float e registra su un file sequenziale testuale ogni numero x letto che differisce dal numero precedente xp di una percentuale superiore a M (valore assoluto di (x-xp)/xp*100>M). Il programma si arresta quando il numero di valori scritti nel file supera N.

M è una costante intera nota compresa fra 1 e 100, N è una costante intera nota. Il nome del file su cui vengono scritti i dati deve essere acquisito da input. Il primo numero letto non viene mai scritto

Esempio: M=10, N=3

Input: 20 25 27 29 40 30

Scritti su file: 25 40 30

Soluzione

2. Sequenze non decrescenti

Scrivere un programma che legge da un file testuale una serie di numeri e visualizza il valore e il numero d'ordine di ogni numero che conclude una sequenza non decrescente.

Al termine visualizzare il numero di sequenze individuate

Esempio

valori letti visualizzati commento
20 50 50 10 40 40 30 20 V:50 NO:3
V:40 NO:6
V:30 NO:7
V:20 NO:8
Sequenze: 4
Sequenza 20 30 50
Sequenza 10 40 40
Sequenza 30
Sequenza 20

Soluzione

3. Numeri più vicini a un valore dato

Scrivere un programma che legge da input un intero Q e una serie di numeri double diversi da zero e al termine visualizza i due numeri che più si avvicinano a Q e il numero totale di double letti. In caso di più numeri aventi la stessa distanza da Q considerare il primo incontrato. La lettura si arresta quando si riceve da il valore 0. Si supponga per semplicità che i primi due numeri siano diversi da zero e diversi tra loro in valore assoluto.

Si può utilizzare la funzione

double absD(double x){ //restituisce il valore assoluto di x
    if (x<0)
        return -x;
    else
        return x;
}

Esempio Q=10

numeri double letti risultato
7.1
5.4
12.9
13.1
21.5
0
Piu' vicino 7.1
Secondo piu' vicino 13.1
Letti 5

Algoritmo

4. Appartenenza a insieme

Scrivere un programma che legge da input N valori interi ci (N costante nota), quindi legge da un file testuale “dati.txt” dei numeri interi v e determina quanti di questi sono diversi da tutti i valori ci.

5. Media aritmetica di numeri consecutivi

Scrivere un programma che legge un file testuale contenente numeri float, uno per riga, visualizza i numeri letti e scrive su un secondo file la media aritmetica del numero corrente e dei due precedenti. Al termine visualizza il minimo e il massimo dei numeri scritti. I nomi dei files devono essere parametrici, per le prime due letture non scrive nulla nel file.

Soluzione

6. Frequenze di modalità

Un carattere può assumere modalità intere comprese tra 1 e N (costante nota a priori)

Scrivere un programma che legge da input una sequenza osservazioni del carattere e al termine visualizza le frequenze assolute, relative e relative cumulate delle modalità. Il programma termina quando la modalità che ha frequenza relativa minima supera la soglia 1/(2*N)

Esempio: N=4

input

2 3 4 2 3 4 2 3 4 2 3 1 1 

output

Modalita' 1: freq assoluta 2 freq relativa 0.153846 freq cumulata 0.153846

Modalita' 2: freq assoluta 4 freq relativa 0.307692 freq cumulata 0.461538

Modalita' 3: freq assoluta 4 freq relativa 0.307692 freq cumulata 0.769231

Modalita' 4: freq assoluta 3 freq relativa 0.230769 freq cumulata 1.000000

Soluzione

7. Classificazione di valori

Scrivere un programma che accetta da input una sequenza di numeri interi positivi e al termine visualizza un conteggio di frequenza secondo la seguente logica:

  1. se K*i<=x<K*(i+1), x viene conteggiato per la modalità i (0<=i<N)
  2. tutti i numeri di input superiori a K*N sono conteggiati a parte
  3. al termine dell’elaborazione si vogliono conoscere le frequenze relative e assolute delle N modalità e la frequenza relativa e assoluta dei valori eccedenti K*N
  4. K e N sono costanti note, l’input 0 termina la sequenza
Esempio: sia N = 4, K = 10
input 2 43 12 15 9 26 112 114 1 13 0
output Classe 0: freq 3 – perc 30
Classe 1: freq 3 – perc 30
Classe 2: freq 1 – perc 10
Classe 3: freq 0 – perc 0
Classe eccedente: freq 3 – perc 30

Soluzione

8. Classificazione di valori

Scrivere un programma con le seguenti caratteristiche:

Sono note a priori due costanti N e M

  1. legge da input una serie di N numeri reali xi
  2. ogni numero letto viene “classificato” secondo questa regola:
    1. se k-0.5 <= xi < k+0.5, con k intero fra 1 e M-1, xi “ha classe k”
    2. se xi<0.5 la classe è 0
    3. se xi>=M-0.5 la classe è M
  3. al termine dell’elaborazione, per ogni classe si vuole sapere
    1. quanti xi sono in quella classe
    2. il numero d’ordine i dell’ultimo reale appartenente a quella classe

Esempio: sia N = 10, M = 3

input -1.2 2.1 3.7 2.4 0.45 0.51 2.6 2.49 5 2.22

output

Classe 0: 2 Ultimo: 5
Classe 1: 1 Ultimo: 6
Classe 2: 4 Ultimo 10
Classe 3: 3 Ultimo 9

Soluzione

9. Inversioni di segno in una sequenza

Si scriva e si collaudi un programma con le seguenti funzionalità:

  1. apre un file testuale in scrittura, di nome assegnato dall’utente (variabile di volta in volta)
  2. legge da input una serie di numeri reali xi, la lunghezza della serie non è nota a priori
  3. ogni volta che xi-1 e xi hanno segno diverso viene scritta sul file una riga con la coppia di numeri xi-1 e xi; il valore 0 viene sempre interpretato come cambio di segno
  4. al termine del programma si visualizza in output il numero di righe scritte nel file

Soluzione

10. Distanza di punti nel piano

Si scriva e si collaudi un programma con le seguenti funzionalità:

  1. Acquisisce da input un intero N (N <= NMAX, con NMAX costante nota)
  2. Legge da input N coppie di numeri reali (xi,yi) che rappresentano coordinate di punti nel piano
  3. Individua il numero d’ordine del punto che si trova a distanza massima dall’origine
  4. Conta quanti punti si trovano a distanza inferiore a 1/3 della distanza massima e quanti a distanza superiore a 2/3 della distanza massima

Soluzione

11. Confronto di numeri in sequenza

Si scriva e si collaudi un programma con le seguenti funzionalità:

  1. Acquisisce da input un nome di file FileOut
  2. Legge da input dei numeri reali diversi da 0,
  3. Al termine delle letture visualizza il valore medio dei numeri letti da input
Soluzione

12. Confronto di numeri in sequenza

Prova di laboratorio del 13/6/2002 - B

Si scriva e si collaudi un programma con le seguenti funzionalità:

  1. Acquisisce da input un nome di file FileOut
  2. Legge da input dei numeri reali diversi da 0,
  3. Al termine delle letture visualizza il valore medio dei numeri scritti nel file

Soluzione