Anda di halaman 1dari 5

Esercizio 2 (5 punti)

Descrivere un algoritmo codificato in linguaggio C/C++ che:

1. definisce due vettori: il primo di nome a contenente 1000 numeri interi e il secondo di nome b
contenente 500 numeri interi;

2. inserisce in ogni posizione del vettore a un valore letto da standard input;

3. copia il valore al posto 0 del vettore a nel posto 0 del vettore b.

4. Analizzando sequenzialmente il vettore a partendo dal secondo posto, copia lelemento del vettore a nel
vettore b solo se maggiore dellelemento precedente. Loperazione deve terminare appena sono stati
esaminati tutti gli elementi del vettore a oppure quando sono stati copiati 500 valori nel vettore b

#include <stdio.h>

#include <stdlib.h>

int main (){

int a[10];

int b[5];

int i;

int j= 0;

for (i=0; i<10;i++){

scanf("%d", &a[i]);

a[0] = b[0];

for( i=1; i<10 && j < 5; i++){

if ( a[i] > a[i-1]){

b[j] = a[i];

return 0;

}
Si considerino le seguenti istruzioni del linguaggio c/c++.

int x[100];

x[3] = fz(x, &x[99], x[3] + 9.8); // puntatori

x[3] = fz(x, x[99], x[3] + 9.8); // riferimenti

Indicando a quale versione si fa riferimento (puntatori o riferimenti), scrivere

lintestazione della funzione fz. Nella versione riferimenti lintestazione deve

essere fatta in modo che la funzione possa modificare la variabile che argomento del

secondo parametro.

int fz (int a [ ], int * b, double c);

---------------------------------------------

void F(int* c, int* y) {

*c = *c + *y;

*y = *y + *c;

int G(int* y) {

int c;

c = *y + 2;

F(y, &c);

return *y + c;

int main() {

int x, y;

x = 2;

y = G(&x) - 1;

return 0;

Esercizio 1 (8 punti)

Descrivere un algoritmo codificato in linguaggio C/C++ che:

1. definisce la funzione CercoMinori con parametri:

a di tipo vettore di 100 int;

b di tipo vettore di 100 int;

c di tipo int.
Per ogni posizione i del vettore a, se gli elementi del vettore a nelle posizioni minori ad i sono tutte
maggiori del valore contenuto in a[i] allora la funzione deve scrivere in b[i] il valore contenuto nel
parametro c altrimenti la funzione devescrivere in b[i] il valor 2*c.

La funzione deve inoltre restituire il numero di posti del vettore b dove stato copiato il valore contenuto
nel parametro c.

2. nella funzione main

I. dichiarare due vettori x e y contenenti 100 numeri interi;

II. definire una variabile di nome r e di tipo int;

III. inserisce in ogni posizione del vettore x una valore letto da standard input;

IV. leggere una sequenza di valori da standard input e per ogni numero della sequenza eseguire la funzione
CercoMinori applicata al vettore x ed al numero della sequenza scrivendo i risultati della funzione nel
vettore y e nella variabile r. Loperazione deve terminare appena, a seguito dellesecuzione della funzione
CercoMinori in tutti i posti del vettore y presente il valore letto da standard input.

#include <stdio.h>

#include <stdlib.h>

int CercoMinori (int a[], int b[], int c){

int i;

int tuttomaggiore = 0;

for(i=0;i<10;i++){

if ( a[i] < i )

}int main (){

int x[10];

int y[10];

int i;

int r;

int m;

int j =0;
for(i=0;i<10;i++){

scanf("%d", &x[i]);

while (j<10){

scanf("%d", &m);

r = CercoMinori (x, y, m);

j++;

Esercizio 2 (5 punti)

Descrivere un algoritmo codificato in linguaggio C/C++ che:

1. definisce due vettori: il primo di nome a contenente 1000 numeri interi e il secondo di nome b
contenente 500 numeri interi;

2. inserisce in ogni posizione del vettore a un valore letto da standard input;

3. per ogni coppia di elementi consecutivi del vettore a se la somma dei due valori maggiore di zero copia
il primo elemento della coppia nel vettore b altrimenti copia il secondo elemento della coppia nel vettore b.
Loperazione deve terminare appena sono state esaminate tutte le coppie consecutive del vettore a oppure
quando sono stati copiati 500 valori nel vettore b

#include <stdio.h>

#include <stdlib.h>

int main (){

int a[10];

int b[5];

int i;

int j;

for(i=0;i<10;i++){

scanf("%d", &a[i]);

}
for(i=0; i <10;i++){

if( a[i] + a[i+1] > 0)

b[j] = a[i];

else

b[j] = a[i + 1];

j++;

for(i=0;i<10;i++){

scanf("%d\n", b[i]);

return 0;

Anda mungkin juga menyukai