Array in C++
Moreno Marzolla
moreno.marzolla@pd.infn.it
Moreno Marzolla Fondamenti di Informatica 2
Copyright © 2006 Moreno Marzolla
This work is licensed under the Creative Commons Attribution- Noncommercial-Share Alike 2.5 Italy License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc- sa/2.5/it/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Esercizio di riscaldamento
Esercizio di riscaldamento
Chiedere all'utente un intero N>0
Se l'utente inserisce N<=0, richiederlo finché la condizione sopra non viene soddisfatta
Stampare a video un triangolo fatto in questo modo (es. con N=5)
* **
***
****
*****
Soluzione Soluzione
#include <iostream>
using namespace std;
int main( void ) {
int N;
int i;
int j;
// Richiesta valore di N do {
cout << Inserisci N >= 0 << endl;
cin >> N;
} while ( N <= 0 );
// Stampa triangolo for ( i=0; i<N; i=i+1 ) {
// Stampa (N-i-1) spazi for ( j=0; j<N-i-1; j=j+1 ) {
cout << ' '; // virgolette singole, no endl }
// Stampa (i+1) asterischi for ( j=0; j<i+1; j=j+1 ) {
cout << '*'; // virgolette singole, no endl }
// vai a capo cout << endl;
} return 0;
}
Esercizio per domani Esercizio per domani
Chiedere all'utente un intero N>0
Se l'utente inserisce N<=0, richiederlo finché la condizione sopra non viene soddisfatta
Stampare a video un albero di natale fatto in questo modo (es. con N=5)
* ***
*****
*******
*********
Moreno Marzolla Fondamenti di Informatica 6
Esercizio: DNA Esercizio: DNA
Consideriamo un array vet[] di 10 caratteri (char)
E' necessario richiedere all'utente i valori dei 10 caratteri; tali valori devono essere
tassativamente una delle lettere seguenti:
'A', 'C', 'T', 'G' (maiuscole)
Il programma deve stampare il numero di lettere 'A', 'C', 'T', 'G', presenti nell'array
Il programma deve utilizzare due fasi separate per la lettura dei caratteri e la conta degli stessi.
Moreno Marzolla Fondamenti di Informatica 7
Soluzione Soluzione
#include <iostream>
using namespace std;
int main( void ) {
char vet[10];
int i;
char c;
int contaA = 0, contaC = 0, contaG = 0, contaT = 0;
// Lettura dei caratteri in input for ( i=0; i<10; i = i+1 ) {
do {
cout << Inserire elemento i= << i << endl;
cin >> c;
} while ( c != 'A' && c != 'C' && c != 'T' && c != 'G' );
vet[i] = c;
}
// Conta dei caratteri for ( i=0; i<10; i = i+1 ) {
if ( vet[i] == 'A' ) contaA = contaA+1;
if ( vet[i] == 'C' ) contaC = contaC+1;
if ( vet[i] == 'T' ) contaT = contaT+1;
if ( vet[i] == 'G' ) contaG = contaG+1;
}
// Stampa risultati
cout << Num caratteri A= << contaA << endl;
cout << Num caratteri C= << contaC << endl;
cout << Num caratteri T= << contaT << endl;
cout << Num caratteri G= << contaG << endl;
return 0;
}
Moreno Marzolla Fondamenti di Informatica 8
Esercizio 2: Prima occorrenza Esercizio 2: Prima occorrenza
Riconsiderare l'esercizio precedente;
inizializzare l'array vet[] allo stesso modo
Questa volta vogliamo stampare la posizione della prima occorrenza della lettera 'A'
Cioè, l'indice i del primo elemento vet[i] tale che vet[i] ==
'A'
Se non esiste un tale elemento, cioè se tutti gli elementi
di vet[] sono diversi da 'A', allora il programma deve
stampare -1;
Moreno Marzolla Fondamenti di Informatica 9
Soluzione 1 Soluzione 1
#include <iostream>
using namespace std;
int main( void ) {
char vet[10];
int i;
char c;
int primo = -1;
// Lettura dei caratteri in input for ( i=0; i<10; i++ ) {
do {
cout << Inserire elemento i= << i << endl;
cin >> c;
} while ( c != 'A' && c != 'C' && c != 'T' && c != 'G' );
vet[i] = c;
}
// Trova la prima occorrenza del carattere 'A' i=0;
while ( i<10 && primo == -1 ) { if ( vet[i] == 'A' )
primo = i;
i = i+1;
}
// Stampa risultato
cout << Prima occorrenza in posizione << primo << endl;
return 0;
}
Moreno Marzolla Fondamenti di Informatica 10
Soluzione 2 Soluzione 2
#include <iostream>
using namespace std;
int main( void ) {
char vet[10];
int i;
char c;
int primo = -1;
// Lettura dei caratteri in input for ( i=0; i<10; i++ ) {
do {
cout << Inserire elemento i= << i << endl;
cin >> c;
} while ( c != 'A' && c != 'C' && c != 'T' && c != 'G' );
vet[i] = c;
}
// Trova la prima occorrenza del carattere 'A' for ( i=0; i<10 && primo == -1; i = i+1 ) {
if ( vet[i] == 'A' ) primo = i;
}
// Stampa risultato
cout << Prima occorrenza in posizione << primo << endl;
return 0;
}
Moreno Marzolla Fondamenti di Informatica 11
Soluzione 3 Soluzione 3
#include <iostream>
using namespace std;
int main( void ) {
char vet[10];
int i;
char c;
int primo = -1;
// Lettura dei caratteri in input for ( i=0; i<10; i++ ) {
do {
cout << Inserire elemento i= << i << endl;
cin >> c;
} while ( c != 'A' && c != 'C' && c != 'T' && c != 'G' );
vet[i] = c;
}
// Trova la prima occorrenza del carattere 'A' for ( i=0; i<10; i = i+1 ) {
if ( vet[i] == 'A' && primo == -1 ) primo = i;
}
// Stampa risultato
cout << Prima occorrenza in posizione << primo << endl;
return 0;
}
Moreno Marzolla Fondamenti di Informatica 12
Esercizi per domani Esercizi per domani
Definire un array vet[10] di 10 interi
Inizializzare tutti gli elementi di vet[] con un intero >=0;
se l'utente inserisce un intero negativo, richiederlo finché la condizione precedente non è soddisfatta
Stampare, una sotto l'altra, una fila di barre di
asterischi, tali che la lunghezza della barra i-
esima sia uguale al valore di vet[i]
Moreno Marzolla Fondamenti di Informatica 13
Esercizio per domani / Esempio Esercizio per domani / Esempio
Ad esempio, se
vet == { 1, 3, 2, 4, 4, 1, 0, 1, 8, 5 }
Il programma stamperà
*
***
**
****
****
*
*
********
*****
Moreno Marzolla Fondamenti di Informatica 14
Esercizio per domani Esercizio per domani
(un po' piu' difficile) (un po' piu' difficile)
Definire un vettore vet[10] di 10 interi;
inizializzare questo array in modo qualsiasi
Invertire il vettore vet[]; in altre parole, occorre scambiare il valore del primo elemento di vet[]
con l'ultimo elemento, il secondo con il penultimo e così via