• Non ci sono risultati.

Moreno Marzolla

N/A
N/A
Protected

Academic year: 2021

Condividi "Moreno Marzolla"

Copied!
4
0
0

Testo completo

(1)

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;

}

(2)

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;

(3)

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]

(4)

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



Stampare i valori del vettore vet[] invertito

Riferimenti

Documenti correlati

 Gli indirizzi Internet sono rappresentati, a livello più basso, come numeri di 32 bit, suddivisi in una serie di 4 numeri di 8 bit.

 “Prendi il contenuto della cella sulla colonna A, stessa riga (1), sommaci 1 e inserisci il risultato nella cella corrente”.  Se copio la cella B1 in D4, il contenuto di D4

cin &gt;&gt; n; // chiede all'utente di inserire n cin &gt;&gt; m; // chiede all'utente di inserire m cout &lt;&lt; massimo( n, m ) &lt;&lt; endl;.

 Scrivere una funzione inverti() che accetta come parametro un vettore di interi a[] e la sua dimensione dim_a; la funzione inverte gli. elementi di a[] (cioè scambia il

relazioni commerciali attraverso tecnologie di trasferimento elettronico di fondi e dati. Moreno Marzolla Tecnologie

Rete privata, basata sulle tecnologie WEB, che ospita le applicazioni Internet su una rete locale E' sostanzialmente una versione “chiusa” di Internet, messa in piedi per agevolare

Le prestazioni di alcuni server degradano pauro- samente all'aumentare del numero di accessi Vi sono tipi di pagine (pagine dinamiche) che vengono gestite meno efficientemente da

Tutti i valori degli attributi vanno racchiusi tra virgolette (“) I tag di apertura e chiusura devono essere bilanciati Elementi di markup (&lt;, ]]&gt; ecc) non possono apparire