Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

BiografiaBiologiaBotanicaChimicaComputerComunicazioneCostruzioneDiritto
EducazioneElettronicaFisicaGeografiaGiochiGrammaticaIngegneriaLetteratura
LibriMarketingMatematicaMedicinaMusicaNutrizionePsicologiaRicette
SociologiaStoriaVarie

Dispensa di Esercizi in C++

computer



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Dispensa di Esercizi in C++



Fondamenti di Informatica

Indice

Esercizio sul Complemento a 2 4

Esercizio sul Complemento a 2 4

Esercizio sulla Codifica degli Interi 4

Esempio di Istruzioni di I/O 4

Esempio sull'Operatore ? 5

Esercizio sull'Operatore ? 5

Esercizio sull'Operatore && 5

Esempio sugli Operatori && e || 6

Esempio sull'Operatore ++ 6

Esempio sugli Operatori =, == 7

Esempio sull'Operatore += 7

Esempio sull'Operatore / e sul Casting 7

Esempio sul Casting e sull’Istruzione If 8

Esempio sull’Istruzione If 8

Esempio sull’Istruzione If 9

Esempio sul Cattivo Uso dell’Istruzione If 9

Esempio sul Cattivo Uso dell’Istruzione If 10

Esempio sul Cattivo Uso dell’Istruzione If 10

Esempio di Ciclo While: Calcolo della potenza 10

Esempio di Ciclo While: Scomposizione in numeri primi 11

Esempio di Ciclo Do While: Verifica validita’ dati in ingresso 11

Esempio di Ciclo Do While: Calcolo della Media 12

Esercizio sul ciclo do-while 12

Esempio di Ciclo Do While: Calcolo del Fattoriale 13

Esempio di Ciclo For: Massimo tra n numeri 14

Esercizio sul Ciclo for 15

Soluzione: 15

Esempio di Ciclo For: Numeri di Fibonacci 15

Esempio sulle Variabili Puntatore 16

Esempio di Uso di Vettori Statici: Fusione di Due Vettori Ordinati 16

Esempio di Allocazione Dinamica di Vettori: Fusione di Due Vettori Ordinati 17

Esempio di Allocazione Dinamica di Vettori: Prodotto di Due Vettori 19

Esempio di Gestione delle Matrici Statiche: Riempimento e Visualizzazione 19

Esempio di Gestione Matrici Dinamiche: Inserimento e Visualizzazione 20

Esempio di Gestione Matrici Dinamiche: Prodotto di Matrici 21

Esempio di Istruzioni di I/O per le Stringhe 23

Esempio sulla Funzione STRCPY 23

Esempio sulla Funzione STRCMP 24

Esempio sulla Funzione STRLEN 24

Esempio sulle Variabili Globali e Locali 25

Esempio sulle Variabili Statiche 25

Esempio sulle Procedure senza parametri formali 26

Esempio sulle Procedure con parametri formali 26

Esempio sulle Funzioni con parametri formali 27

Esempio di Procedure con Parametri Formali: Inserimento e Visualizzazione delle Matrici Statiche 28

Esempio di Funzione Ricorsiva: Fattoriale 29

Esempio di Funzione Ricorsiva: Ricerca Binaria 30

Esempio di Cattivo Uso della Ricorsione: Numeri di Fibonacci 31

Esempio di Allocazione Dinamica di Vettore: Ricerca Binaria 31

Esercizio su Procedure, Parametri Formali e Stringhe 32

Esercizio su Procedure, Parametri Formali e Stringhe 33

Esempio di Gestione delle Matrici Dinamiche 33

Esempio di Gestione delle Matrici Dinamiche 34

Esempio di Gestione delle Matrici Dinamiche 35

Esempio di Uso della Struttura 36

Esempio di Uso della Struttura contenente Vettori 37

Esercizio su: Vettore Dinamico e tipo Struct 38

Soluzione: 39

Esempio di Template: Ricerca Binaria 40

Esercizio su ADT Lista 42

Esercizio sul Complemento a 2

Dato il seguente numero binario in complemento a 2, dire quale È il numero intero corrispondente:

Soluzione:

Esercizio sul Complemento a 2

Convertire il seguente numero intero in binario complemento a 2 su 8 bit

Soluzione:

Esercizio sulla Codifica degli Interi

Convertire il seguente numero binario in intero, supponendo che sia espresso sia in complemento a 2 sia in modulo e segno

Soluzione:

-77 (complemento a 2)

-51 (modulo e segno)

Esempio di Istruzioni di I/O

#include <iostream.h>

double x;

char c;

void main()

Esempio sull'Operatore ?

#include<iostream.h>

int x,y;

void main()

Esercizio sull'Operatore ?

Si consideri il seguente programma. Dire che cosa viene visualizzato e per quali valori di x e y.

#include<iostream.h>

#include<stdio.h>

long double x,y;

int i,n;

void main()

Soluzione:

non verra' visualizzato mai niente per qualunque valore di x e y

Esercizio sull'Operatore &&

Dire quali valori vengono visualizzati sul video alla fine del seguente programma:

#include<iostream.h>

#include<stdio.h>

int a=1, x, z;

void main()

Soluzione:

Esempio sugli Operatori && e ||

#include<iostream.h>

int x,y,z,k;

void main()

Esempio sull'Operatore ++

#include<iostream.h>

int x,y,z;

void main()

Esempio sugli Operatori =, ==

#include<iostream.h>

#include<stdio.h>

int a,b,c;

void main()

Esempio sull'Operatore +=

#include<iostream.h>

#include<stdio.h>

int x,y,x_old;

void main()

Esempio sull'Operatore / e sul Casting

#include<iostream.h>

#include<stdio.h>

int x,y;

void main()

Esempio sul Casting e sull’Istruzione If

#include <iostream.h>

char c;

void main() else if (c>='A' && c<='Z') else cout << 'Non hai inserito un carattere ' << endl;

Esempio sull’Istruzione If

#include<iostream.h>

#include<stdio.h>

int x;

void main()

else cout << 'Numero maggiore di 5'<<endl;

getchar();

Esempio sull’Istruzione If

#include<iostream.h>

#include<stdio.h>

int x;

void main()

getchar();

Esempio sul Cattivo Uso dell’Istruzione If

#include<iostream.h>

#include<stdio.h>

int x;

void main()

cout << “Il nuovo valore di x e’ “<< x<<endl;

getchar();

Esempio sul Cattivo Uso dell’Istruzione If

#include<iostream.h>

#include<stdio.h>

int x;

void main()

Esempio sul Cattivo Uso dell’Istruzione If

#include<iostream.h>

#include<stdio.h>

int x;

void main()

Esempio di Ciclo While: Calcolo della potenza

#include<iostream.h>

#include<stdio.h>

long double base, potenza;

unsigned long int esponente;

char c;

void main()

getchar();

Esempio di Ciclo While: Scomposizione in numeri primi

#include<iostream.h>

unsigned long n,d;

int count;

void main()

cout << 'nUn numero primo e' '<< d << ' ed ha potenza '<< count << endl;

};

Esempio di Ciclo Do While: Verifica validita’ dati in ingresso

#include<iostream.h>

#include<stdio.h>

int n;

void main()

while (n<4 || n>8);

cout << “Il numero inserito e’ “<< n <<endl;

getchar();

Esempio di Ciclo Do While: Calcolo della Media

#include<iostream.h>

#include<stdio.h>

long double media=0, n;

unsigned long int count=0;

char c;

void main()

while (c=='s' || c=='S');

cout << 'La media dei valori inseriti e' '<< media/count<<endl;

getchar();

Esercizio sul ciclo do-while

Scrivere un programma che riceve in ingresso una sequenza di caratteri numerici (inclusa la virgola) e calcola il corrispondente numero decimale (ad esempio se inserisco la sequenza '2' '3' '5' ',' '2' '3', il porgramma mi restituisce il numero 235,23).

#include<iostream.h>

#include<stdio.h>

unsigned int count;

long double v;

char c;

void main()

else if (c==',') count=1;

cout << 'Continui ? ';

cin >>c;

} while (c=='s' || c=='S');

cout<< (float)(v/count);

getchar();

Esempio di Ciclo Do While: Calcolo del Fattoriale

#include<iostream.h>

#include<stdio.h>

long double fattoriale;

unsigned long int n;

char risposta;

void main()

while (n<=1);

do

fattoriale*=n--;

while (n>1);

cout << 'Il fattoriale e' '<< fattoriale <<endl;

cout << 'Continui ? ';

cin >> risposta;

} while (risposta!='n' && risposta!='N');

getchar();

Valori Massimi:

unsigned long int 4.294.967.295

unsigned double E+308

unsigned long double E+4932

n

fattoriale

Tipo di dato necessario alla codifica

(unsigned long int)

(unsigned long int)

(unsigned long int)

(unsigned double)

1.6E+25

(unsigned double)

4.7E+284

(unsigned double)

7.3E+306

(unsigned double)

4.02387E+2567

(unsigned long double)

3.67E+4920

(unsigned long double)

6.42E+4930

(unsigned long double)

Esempio di Ciclo For: Massimo tra n numeri

#include<iostream.h>

long double max,x;

double y;

int i,n;

void main()

cout << 'Il massimo numero e' ' << max << endl;

Esercizio sul Ciclo for

Dire quale valore assume la variabile y alla fine del programma, ossia cosa viene visualizzato sul video:

#include<iostream.h>

#include<stdio.h>

char c;

int y;

void main()

Soluzione:

Esempio di Ciclo For: Numeri di Fibonacci

#include<iostream.h>

int n, fa, fb;

char c;

void main()

while (n<2);

fa=0, fb=1;

for (int i=1;i<n;i++)

cout<<'il Numero di Fibonacci di '<<n<<' e' '<<fb<<endl;

cout<<'continui [s/n]?';

cin>>c;

}while(c!='n'&&c!='N');

Esempio sulle Variabili Puntatore

#include<iostream.h>

#include<stdio.h>

int x=14;

int *p;

void main()

Esempio di Uso di Vettori Statici: Fusione di Due Vettori Ordinati

#include<iostream.h>

#include<stdio.h>

const int dim1=10, dim2=20, dim3=30;

double vet1[dim1], vet2[dim2], vet3[dim3];

int i,j,k;

void main() while (vet1[i]< vet1[i-1]);

i=0;

cout << 'Inserisci Elemento di indice ' << i << ' del secondo vettore ';

cin >> vet2[i];

for (i=1;i<dim2; i++)

do while (vet2[i]<vet2[i-1]);

i=0;

j=0;

k=0;

while (i<dim1 && j<dim2)

}

if (i<dim1)

while (i<dim1) vet3[k++]=vet1[i++];

else if (j<dim2) while (j<dim2) vet3[k++]=vet2[j++];

for (k=0; k<dim3; k++)

getchar();

Esempio di Allocazione Dinamica di Vettori: Fusione di Due Vettori Ordinati

#include<iostream.h>

double *vet1, *vet2, *vet3;

int i,j,k,dim1, dim2, dim3;

void main() while (dim1<=0);

vet1=new double[dim1];

do while (dim2<=0);

vet2=new double[dim2];

vet3=new double[dim3=dim1+dim2];

i=0;

cout << 'Inserisci Elemento di indice ' << i << ' del primo vettore ';

cin >> vet1[i];

for (i=1;i<dim1; i++)



do while (vet1[i]< vet1[i-1]);

i=0;

cout << 'Inserisci Elemento di indice ' << i << ' del secondo vettore ';

cin >> vet2[i];

for (i=1;i<dim2; i++)

do while (vet2[i]<vet2[i-1]);

i=0;

j=0;

k=0;

while (i<dim1 && j<dim2)

}

if (i<dim1)

while (i<dim1) vet3[k++]=vet1[i++];

else if (j<dim2) while (j<dim2) vet3[k++]=vet2[j++];

for (k=0; k<dim3; k++)

cout<<'Elemento di indice '<<k<<' del terzo vettore '<<vet3[k]<<endl;

delete vet1;

delete vet2;

delete vet3;

Esempio di Allocazione Dinamica di Vettori: Prodotto di Due Vettori

#include<iostream.h>

#include<stdio.h>

double *vet1, *vet2, prodotto;

int i,dim;

void main() while (dim<=0);

vet1=new double[dim];

vet2=new double[dim];

for (i=0;i<dim; i++)

prodotto=0;

for (i=0;i<dim; i++)

prodotto+=vet1[i]*vet2[i];

cout << 'Il prodotto dei due vettori e' '<< prodotto<<endl;

getchar();

delete vet1;

delete vet2;

Esempio di Gestione delle Matrici Statiche: Riempimento e Visualizzazione

#include <iostream.h>

#include <stdio.h>

const int righe=2, colonne=2;

int i,j;

int matrice[righe][colonne];

int row,column;

void main()

}

cout << 'Visualizzazione Matrice Statica '<<endl;

for (i=0; i<righe; i++)

for (j=0; j<colonne; j++)

cout<<'Elemento di Indice ' <<i<< ' , ' <<j<< ' = ' << matrice[i][j] <<endl;

getchar();

Esempio di Gestione Matrici Dinamiche: Inserimento e Visualizzazione

#include <iostream.h>

#include <stdio.h>

int i,j;

double **matrix;

int row,column;

void main()

cout << 'Visualizzazione Matrice Dinamica '<<endl;

for (i=0; i<row; i++)

for (j=0; j<column; j++)

cout<<'Elemento di Indice '<<i<<','<<j<<' = '<< matrix[i][j] << endl;

getchar();

for (i=0; i< row; i++)

delete matrix[i];

delete matrix;

Esempio di Gestione Matrici Dinamiche: Prodotto di Matrici

#include <iostream.h>

#include <stdio.h>

int i,j,k;

double **m1, **m2, **m3;

int r1,c1,r2,c2,r3,c3;

void main()

while (r1<1);

do while (c1<1);

r2=c1;

do while (c2<1);

m1=new double * [r1];

for (i=0; i< r1; i++)

m1[i]=new double[c1];

m2=new double * [r2];

for (i=0; i< r2; i++)

m2[i]=new double[c2];

m3=new double * [r1];

for (i=0; i< r1; i++)

m3[i]=new double[c2];

cout << 'Inserimento Prima Matrice '<<endl;

for (i=0; i<r1; i++)

for (j=0; j<c1; j++)

cout << 'Inserimento Seconda Matrice '<<endl;

for (i=0; i<r2; i++)

for (j=0; j<c2; j++)

for (i=0; i<r1; i++)

for (j=0;j<c2;j++)

cout << 'Visualizzazione Matrice Prodotto '<<endl;

for (i=0; i<r1; i++)

for (j=0; j<c2; j++)

cout<<'Elemento di Indice '<<i<<','<<j<<' = '<< m3[i][j] << endl;

getchar();

for (i=0; i< r1; i++)

delete m1[i];

delete m1;

for (i=0; i< r2; i++)

delete m2[i];

delete m2;

for (i=0; i< r1; i++)

delete m3[i];

delete m3;

Esempio di Istruzioni di I/O per le Stringhe

#include <iostream.h>

char parola[30];

double x;

char c;

void main()

Esempio sulla Funzione STRCPY

#include <iostream.h>

#include <stdio.h>

const int dim=10;

char *p1, *p2;

void main()

Esempio sulla Funzione STRCMP

#include <iostream.h>

#include <stdio.h>

const int dim=10;

char *p1, *p2;

void main()

Esempio sulla Funzione STRLEN

#include <iostream.h>

#include <stdio.h>

const int dim=10;

char *p1, *p2;

void main()

Esempio sulle Variabili Globali e Locali

#include<iostream.h>

#include<stdio.h>

int x;

void main()

Esempio sulle Variabili Statiche

#include<iostream.h>

#include<stdio.h>

void prova()

void main()

Esempio sulle Procedure senza parametri formali

#include <iostream.h>

#include <stdio.h>

long double base;

unsigned long int esponente;

void potenza();

void main()

void potenza()

Esempio sulle Procedure con parametri formali

#include <iostream.h>

#include <stdio.h>

long double b1,b2,b3;

unsigned long int e1,e2,e3;

void potenza(long double b, unsigned int e);

void main()

void potenza(long double b, unsigned int e)

Esempio sulle Funzioni con parametri formali

#include <iostream.h>

#include <stdio.h>

long double b1,b2,b3;

unsigned long int e1,e2,e3;

long double potenza(long double b, unsigned int e);

void main()

long double potenza(long double b, unsigned int e)

Esempio di Procedure con Parametri Formali: Inserimento e Visualizzazione delle Matrici Statiche

#include <iostream.h>

#include <stdio.h>

const int righe=2, colonne=2;

int i,j;

int matrice[righe][colonne];

int row,column;

void inserimento_matrice_statica(int m[][colonne], int r, int c)

void visualizza_matrice_statica(int m[][colonne], int r, int c)

void main()

Esempio di Funzione Ricorsiva: Fattoriale

#include<iostream.h>

char risposta;

int numero;

long double fattoriale(int n)

void main()

while (risposta!='n' && risposta!='N');

Il Numero piu' grande che puo' essere immesso e' n=1754, che fornisce il valore di fattoriale(1754)=1.97926*104930

Esempio di Funzione Ricorsiva: Ricerca Binaria

#include<iostream.h>

#include<stdio.h>

int i;

const int dim=10;

double vet[dim], elemento;

void inserisci(double v[], int d)

while (v[i]< v[i-1]);

int ricerca_binaria(double v[], double elem, int inf, int sup)

else return(0);

void main()

Esempio di Cattivo Uso della Ricorsione: Numeri di Fibonacci

#include<iostream.h>

int n;

char c;

int fibonacci (int v)

void main()

while (n<2);

cout<<'il Numero di Fibonacci di '<<n<<' e' '<<fibonacci(n)<<endl;

cout<<'continui [s/n]?';

cin>>c;

}while(c!='n'&&c!='N');

Esempio di Allocazione Dinamica di Vettore: Ricerca Binaria

#include<iostream.h>

#include<stdio.h>

double *vet, elemento;

int i,dim;

void inserisci(double v[], int d)

while (v[i]< v[i-1]);

int ricerca_binaria(double v[], double elem, int inf, int sup)

else return(0);

void main()

while (dim<=0);

vet=new double[dim];

inserisci(vet,dim);

cout << 'Inserisci elemento da cercare ';

cin >> elemento;

if (ricerca_binaria(vet,elemento,0,dim-1))

cout << 'Elemento trovato ' << endl;

else cout << 'Elemento non esistente ' << endl;

getchar();

Esercizio su Procedure, Parametri Formali e Stringhe

Scrivere una funzione o procedura che riceve come parametro formale un vettore di caratteri (STRINGA). La funzione o procedura NON RICEVE LA DIMENSIONE DEL VETTORE DI CARATTERI. La funzione o procedura calcola la lunghezza effettiva della stringa (ossia il numero di caratteri escluso il carattere '0') e alloca un vettore di interi di dimensione pari a tale lunghezza. Infine riempie tale vettore con i codici ASCII dei caratteri della stringa ricevuta in ingresso. La funzione o procedura deve fornire in uscita il vettore cosÌ ottenuto e la sua dimensione. CIO' NON DEVE ESSERE OTTENUTO TRAMITE L'USO DI COUT, MA DEVE ESSERE UTILIZZATO IL MECCANISMO DEI PARAMETRI FORMALI VARIABILE (REFERENCE).

Soluzione:

void compito (char * v, int * & c, int & dim_c)

Esercizio su Procedure, Parametri Formali e Stringhe

Scrivere una funzione che riceve come parametro formale una stringa di caratteri tutti minuscoli e calcola il carattere piÙ piccolo (in ordine alfabetico). LA FUNZIONE NON RICEVE LA DIMENSIONE DELLA STRINGA COME PARAMETRO FORMALE.

Soluzione:

char minimo (char *s)

Esempio di Gestione delle Matrici Dinamiche

#include <iostream.h>

#include <stdio.h>

int i,j;

int **matrix;

int row,column;

void inserimento_matrice_dinamica(int **m, int r, int c)

void visualizza_matrice_dinamica(int **m, int r, int c)

void main()

Esempio di Gestione delle Matrici Dinamiche

#include <iostream.h>

#include <stdio.h>

int i,j;

int *vettore;

int row,column;

void inserimento_matrice_dinamica(int v[], int r, int c)

void visualizza_matrice_dinamica(int v[], int r, int c)

void main()

Esempio di Gestione delle Matrici Dinamiche

#include <iostream.h>

#include <stdio.h>

int i,j;

int **matrix;

int *vettore;

int row,column;

void inserimento_matrice_dinamica(int **m, int r, int c)

void visualizza_matrice_dinamica(int **m, int r, int c)

void main()

Esempio di Uso della Struttura

#include<iostream.h>

struct persona ;

void stampa(struct persona p) //si puÃ’ anche non mettere struct

void inserisci(struct persona & p) //si puÃ’ anche non mettere struct

void main()

Esempio di Uso della Struttura contenente Vettori

#include<iostream.h>

const int d=5000;

struct media ;

void inserisci(media &m, int dim)

}

long double calcola(const media &m) //si passa per puntatore a causa delle grosse dimensioni

void main()

Esercizio su: Vettore Dinamico e tipo Struct

Scrivere un programma composto da:

una definizione di un tipo struct con campi: cognome, nome, etÀ, cittÀ. Nel seguito tale tipo verrÀ chiamato persona.

una funzione o procedura che alloca un vettore di puntatori al tipo persona. La funzione o procedura riceve in ingresso il vettore e la sua dimensione. La funzione o procedura, oltre ad allocare il vettore di puntatori, deve porre tutti gli elementi del vettore (ossia i puntatori al tipo persona) al valore NULL.

una funzione o procedura che riceve come parametro formale un vettore di puntatori al tipo persona e la sua dimensione. La funzione o procedura deve allocare una variabile di tipo persona per ciascun elemento del vettore e porre in tale elemento il puntatore alla variabile struct persona appena allocata. Infine la funzione o procedura deve riempire i campi cognome, nome, etÀ e cittÀ di ogni variabile di tipo struct persona precedentemente allocata.

una funzione che riceve come parametro formale un vettore di puntatori al tipo persona, la sua dimensione e calcola l'etÀ piÙ alta tra tutte le variabili i cui puntatori sono contenuti nel vettore. La funzione deve restituire tale valore.

una funzione o procedura che disalloca un vettore di puntatori al tipo persona.

un main che richiama opportunamente tutte le funzioni/procedure precedenti

Soluzione:

#include<iostream.h>

#include<stdio.h>

/*una definizione di un tipo struct con campi: cognome, nome, etÀ, cittÀ. Nel seguito tale tipo verrÀ chiamato persona.*/

struct persona ** vettore;

int dimensione;

/* una funzione o procedura che alloca un vettore di puntatori al tipo persona. La funzione o procedura riceve in ingresso il vettore e la sua dimensione. La funzione o procedura, oltre ad allocare il vettore di puntatori, deve porre tutti gli elementi del vettore (ossia i puntatori al tipo persona) al valore NULL.*/

void alloca (persona ** & v, int dim)

/*una funzione o procedura che riceve come parametro formale un vettore di puntatori al tipo persona e la sua dimensione. La funzione o procedura deve allocare una variabile di tipo persona per ciascun elemento del vettore e porre in tale elemento il puntatore alla variabile struct persona appena allocata. Infine la funzione o procedura deve riempire i campi cognome, nome, etÀ e cittÀ di ogni variabile di tipo struct persona precedentemente allocata.*/

void riempi (persona ** v, int dim)

/*una funzione che riceve come parametro formale un vettore di puntatori al tipo persona, la sua dimensione e calcola l'etÀ piÙ alta tra tutte le variabili i cui puntatori sono contenuti nel vettore. La funzione deve restituire tale valore.*/

unsigned int max (persona ** v, int dim)

/* una funzione o procedura che disalloca un vettore di puntatori al tipo persona.*/

void disalloca(persona **v)

/*un main che richiama opportunamente tutte le funzioni precedenti*/

void main()

while (dimensione <=0);

alloca(vettore,dimensione);

riempi(vettore,dimensione);

cout<<'L'eta' piÙ alta e' --> '<<max(vettore, dimensione);

getchar();

disalloca(vettore);

Esempio di Template: Ricerca Binaria

#include<iostream.h>

#include<stdio.h>

int *vet_int, elemento_int;

double *vet_double, elemento_double;

int i,dim;

template <class T>

void inserisci(T v[], int d)

while (v[i]< v[i-1]);

}

template <class T>

int ricerca_binaria(T v[], T elem, int inf, int sup)

else return(0);

}

void main()

while (dim<=0);

vet_double=new double[dim];

inserisci(vet_double,dim);

cout << 'Inserisci elemento da cercare ';

cin >> elemento_double;

if (ricerca_binaria(vet_double,elemento_double,0,dim-1))

cout << 'Elemento trovato ' << endl;

else cout << 'Elemento non esistente ' << endl;

delete vet_double;

do while (dim<=0);

vet_int=new int[dim];

inserisci(vet_int,dim);

cout << 'Inserisci elemento da cercare ';

cin >> elemento_int;

if (ricerca_binaria(vet_int,elemento_int,0,dim-1))

cout << 'Elemento trovato ' << endl;

else cout << 'Elemento non esistente ' << endl;

delete vet_int;

getchar();

Esercizio su ADT Lista

Una segreteria studenti mantiene l'archivio degli studenti iscritti, tramite un vettore a N dimensioni. Ciascun elemento del vettore contiene un puntatore ad una lista di elementi. Ciascun elemento contiene le seguenti informazioni:

Cognome

Nome

Matricola

Residenza

Telefono

Si suppone che ciascuna lista sia ordinata per COGNOME e NOME.

Si suppone che tutte le operazioni tipiche di un archivio (ad esempio inserimento e ricerca) vengano fatte per numero di matricola. Supposto sia m una variabile contenente la matricola dello studente, la somma delle cifre contenute in questa variabile modulo N, fornisce l'indice del vettore in cui effettuare ad esempio l'inserimento e la ricerca.

Si codifichi in C++:

le strutture dati

una procedura di inserimento di un nuovo studente. L'inserimento avviene per matricola al fine di individuare la lista in cui effettuare l'inserimento. Una volta individuata la lista, l'inserimento in essa È ORDINATO per COGNOME E NOME.

una procedura di modifica solo di alcuni campi di uno studente giÀ inserito nell'archivio: residenza e telefono. Lo studente È individuato dalla matricola.

una procedura di ricerca per matricola, che visualizzi cognome, nome, residenza, e telefono.

un main che richiami le precedenti procedure

#include <iostream.h>

#include <string.h>

/*LISTA PRINCIPALE */

#define LISTAVUOTA NULL

typedef struct studente tipobase;

typedef struct nodo * list;

typedef list position;

void MAKENULL(list &l)

position FIRST(list l)

position END(list l)

int EMPTY(list l)

position LOCATE(list l, tipobase x)

return(l);

void INSERT (list &l, position p, tipobase x)

else

tipobase RETRIEVE(list l, position p)

position NEXT(list l, position p)

void insord(list &l, tipobase x)

INSERT(l,p,x);

void modifica(list l, position p, tipobase x)

/*Procedura per l'individuazione dell'elemento del vettore */

/*dim e' la dimensione del vettore, e m e' la matricola */

int calcola_elemento (int dim, char m[])

/*Procedura per l'inserimento di un nuovo studente*/

void inserisci_studente (list v[], int dim, tipobase x)

/*Procedura per la modifica dei dati di uno studente*/

void modifica_dati(list v[], int dim, tipobase x)

cout << ' Vuoi Cambiare il Telefono ? (s/n)';

cin >> r;

if (r=='s' || r=='S')

modifica(v[index],p,x);

} else cout << 'Lista Vuota o Studente non esistente ' << endl;

/*Procedura per la ricerca e visualizzazione di tutti i dati dello studente */

void ricerca_visualizza(list v[], int dim, tipobase x)

else cout << 'Lista Vuota o Studente non esistente ' << endl;

void main()

case 2 :

case 3 :

}

} while (s<4);




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1014
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved