CATEGORII DOCUMENTE |
Bulgara | Ceha slovaca | Croata | Engleza | Estona | Finlandeza | Franceza |
Germana | Italiana | Letona | Lituaniana | Maghiara | Olandeza | Poloneza |
Sarba | Slovena | Spaniola | Suedeza | Turca | Ucraineana |
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
Dato il seguente numero binario in complemento a 2, dire quale È il numero intero corrispondente:
Soluzione:
Convertire il seguente numero intero in binario complemento a 2 su 8 bit
Soluzione:
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)
#include <iostream.h>
double x;
char c;
void main()
#include<iostream.h>
int x,y;
void main()
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
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:
#include<iostream.h>
int x,y,z,k;
void main()
#include<iostream.h>
int x,y,z;
void main()
#include<iostream.h>
#include<stdio.h>
int a,b,c;
void main()
#include<iostream.h>
#include<stdio.h>
int x,y,x_old;
void main()
#include<iostream.h>
#include<stdio.h>
int x,y;
void main()
#include <iostream.h>
char c;
void main() else if (c>='A' && c<='Z') else cout << 'Non hai inserito un carattere ' << endl;
#include<iostream.h>
#include<stdio.h>
int x;
void main()
else cout << 'Numero maggiore di 5'<<endl;
getchar();
#include<iostream.h>
#include<stdio.h>
int x;
void main()
getchar();
#include<iostream.h>
#include<stdio.h>
int x;
void main()
cout << “Il nuovo valore di x e’ “<< x<<endl;
getchar();
#include<iostream.h>
#include<stdio.h>
int x;
void main()
#include<iostream.h>
#include<stdio.h>
int x;
void main()
#include<iostream.h>
#include<stdio.h>
long double
base,
unsigned long int esponente;
char c;
void main()
getchar();
#include<iostream.h>
unsigned long n,d;
int count;
void main()
cout << 'nUn numero primo e' '<< d << ' ed ha potenza '<< count << endl;
};
#include<iostream.h>
#include<stdio.h>
int n;
void main()
while (n<4 || n>8);
cout << “Il numero inserito e’ “<< n <<endl;
getchar();
#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();
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();
#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) |
#include<iostream.h>
long double max,x;
double y;
int i,n;
void main()
cout << 'Il massimo numero e' ' << max << endl;
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()
#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');
#include<iostream.h>
#include<stdio.h>
int x=14;
int *p;
void main()
#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();
#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;
#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;
#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();
#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;
#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;
#include <iostream.h>
char parola[30];
double x;
char c;
void main()
#include <iostream.h>
#include <stdio.h>
const int dim=10;
char *p1, *p2;
void main()
#include <iostream.h>
#include <stdio.h>
const int dim=10;
char *p1, *p2;
void main()
#include <iostream.h>
#include <stdio.h>
const int dim=10;
char *p1, *p2;
void main()
#include<iostream.h>
#include<stdio.h>
int x;
void main()
#include<iostream.h>
#include<stdio.h>
void prova()
void main()
#include <iostream.h>
#include <stdio.h>
long double base;
unsigned long int esponente;
void potenza();
void main()
void potenza()
#include <iostream.h>
#include <stdio.h>
long double b1,b2,b3;
unsigned long int e1,e2,e3;
void
void main()
void potenza(long double b, unsigned int e)
#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)
#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()
#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
#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()
#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');
#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();
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)
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)
#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()
#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()
#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()
#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()
#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()
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
#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);
#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();
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 |
Vizualizari: 1069
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved