Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Info

Total questions: 38

Worksheet time: 37mins

Name
Class
Date
1.

In quale funzione viene utilizzato il concetto di sottomatrice?

a)

massimo

b)

determinante

c)

mediaRigaB

d)

calcolaC

2.

Come viene passata la matrice M[MAX][MAX] alle funzioni:

a)

Per valore (viene creata una copia completa).

b)

Come stringa di testo.

c)

Tramite puntatore al primo elemento, permettendo modifiche dirette alla matrice originale.

d)

Vengono passate tutte le righe tranne l’ultima in quanto non serve il passaggio della matrice 

3.

Cosa sono i “parametri attuali”?

a)

Sono le variabili o misure che descrivono lo stato presente di un sistema, processo o fenomeno.

b)

Sono le matrici presenti nel programma che permettono la descrizione immediata del programma

c)
  • Sono le funzioni di un programma

d)

Sono dei parametri presenti nel programma che funzionano solo se si clicca un numero da 6 a 10 

4.

Cosa sono i parametri formali?

a)

Variabili che memorizzano il risultato finale della funzione.

b)
  1. Regole sintattiche del linguaggio di programmazione.

c)

Costanti generate automaticamente dal compilatore.

d)

Variabili usate nella definizione di una funzione per ricevere dati.

5.

In C++, una matrice è:

a)

Una variabile che può contenere un solo valore alla volta

b)

Un insieme di elementi dello stesso tipo organizzati in righe e colonne

c)

Una funzione che restituisce più valori

d)

Un puntatore che memorizza indirizzi di memoria casuali

6.

Quale condizione deve essere soddisfatta affinché il programma calcoli il determinante della matrice A?

a)

La matrice deve avere almeno 2 righe e 2 colonne.

b)

La matrice deve essere quadrata (righe uguali a colonne).

c)

La matrice deve contenere solo numeri interi.

d)

La matrice deve essere stata generata casualmente.

7.

for(int i=0; i<r; i++)

    for(int j=0; j<c; j++)

        if (B[i][j] > maxv) maxv = B[i][j];

Se volessimo trovare il massimo solo della prima riga della matrice, come dovrebbero cambiare i cicli?

a)

Bisognerebbe eliminare il ciclo esterno (i) e usare solo il ciclo interno (j), fissando l'indice di riga a B[0][j].

b)

Bisognerebbe invertire i cicli: prima quello con la j e poi quello con la i.

c)

Bisognerebbe cambiare la condizione del if in if (B[i][j] < maxv).

d)

Bisognerebbe sostituire MAX con r nella dichiarazione della funzione.

8.

Quale delle seguenti righe di codice rappresenta il prototipo di una procedura (ovvero una funzione che esegue operazioni ma non restituisce alcun valore al chiamante)?

a)

int menu();

b)

int determinante(int A[MAX][MAX], int n);

c)

void generaCasuali(int M[MAX][MAX], int r, int c);

d)

float mediaRigaB(int B[MAX][MAX], int c, int rig);

9.

void calcolaC(int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX], int r, int c) {

    for(int i=0; i<r; i++)

        for(int j=0; j<c; j++)

            C[i][j] = 3*A[i][j] - 2*B[i][j];

}

Analizzando la funzione calcolaC sopra riportata, quale operazione matematica viene eseguita per ottenere ogni singolo elemento della matrice C?

a)

Viene calcolata la somma degli elementi corrispondenti di A e B moltiplicata per 5.

b)

Viene calcolata la combinazione lineare 3A - 2B per ogni elemento in posizione (i, j).

c)

Viene calcolato il prodotto scalare tra la riga di A e la colonna di B

d)

Viene eseguita la sottrazione tra il triplo di un elemento di B e il doppio di un elemento di A

10.

Analizza questo pezzo di codice del main (riga 89):

case 9: if (Ccalcolata) {

        if (c == r) {   

            if (diagonaleNulla(C, r)) {

                cout << "La diagonale e' nulla\n";

            } else {

                cout << "La diagonale NON e' nulla\n";

            }

        } else {

            cout << "NON è possibile calcolare la diagonale perchè non è una matrice quadrata" << endl;

        }

    } else {

        cout << "Prima devi calcolare la matrice C.\n";

    }

    break;

a)

Il compilatore darebbe un errore di sintassi impedendo l'esecuzione del programma.

b)

Il programma andrebbe in crash immediato perché la funzione diagonaleNulla non accetta matrici rettangolari.

c)

Il programma funzionerebbe, ma il risultato sarebbe logicamente privo di senso (o incompleto) perché la diagonale principale è definita correttamente solo nelle matrici quadrate.

d)

La funzione diagonaleNulla diventerebbe "intelligente" e calcolerebbe la diagonale della sottomatrice quadrata più piccola.

11.

Nella funzione prodottoMatrici, per calcolare ogni singolo elemento P[i][j], viene utilizzato un terzo ciclo for con indice k. Qual è lo scopo di questo ciclo?

void prodottoMatrici(int A[MAX][MAX], int B[MAX][MAX], int P[MAX][MAX], int r, int c) {

    for(int i=0;i<r;i++)

        for(int j=0;j<c;j++){

            P[i][j] = 0;

for(int k=0;k<c;k++)

                P[i][j] = P[i][j] + A[i][k] * B[k][j];

}

}

a)

Serve per azzerare la matrice P prima di iniziare i calcoli.

b)

Serve per copiare i valori della matrice A nella matrice B.

c)

Serve per verificare se le matrici sono quadrate.

d)

Serve per scorrere contemporaneamente la riga di A e la colonna di B per eseguire il prodotto scalare.

12.

Nel seguente segmento di codice, cosa viene chiesto all'utente nel case 12?

case 12: if (matInserite) {

        int N;

        cout << "Quale numero vuoi ricercare nella matrice? ";

        cin >> N;

        cout << "Nella matrice ci sono " << contaNA(A, r, c, N) << " numeri " << N << endl;

    }

    else { cout << "Prima inserisci o genera le matrici.\n"; }

    break;


a)

All'utente viene chiesto di inserire il numero di righe della matrice.

b)

L'utente deve specificare il numero da cercare nella matrice.

c)

Il programma chiede all'utente di scegliere una colonna per calcolare il massimo.

d)

L'utente è invitato a generare una nuova matrice.

13.

Data la matrice C, calcolata a partire dalle matrici A e B, quale delle seguenti operazioni è stata eseguita?

a)

C = 2A + 3B

b)

C = A - B

c)

C = 3A - 2B

d)

C = 3A + 2B

14.

Cos’è una matrice identica?

a)

Una matrice con una sola riga e una sola colonna

b)

Una matrice in cui tutti gli elementi sono nulli (pari a 0)

c)

Una matrice in cui tutti gli elementi sono pari a n (si dice matrice identica di ordine n)

d)

Una matrice quadrata in cui in cui tutti gli elementi della diagonale principale sono pari a 1 e tutti gli elementi sopra e sotto la diagonale sono nulli

15.

All'interno della funzione generaCasuali(int M[MAX][MAX], int r, int c), viene utilizzata l'istruzione:

M[i][j] = rand() % 9 - 4;

Qual è l'intervallo di valori interi che possono essere assegnati a ogni elemento della matrice e come influisce sulla funzione calcolaC?

a)

Gli elementi variano da 0 a 9; di conseguenza, la matrice C (calcolata come 3A - 2B) conterrà solo numeri positivi.

b)

Gli elementi variano da -4 a 4; pertanto, la matrice C può contenere sia valori positivi che negativi o nulli.

c)

Gli elementi variano da 1 a 9; la funzione calcolaC restituirà un errore se il risultato della sottrazione è negativo.

d)

Gli elementi variano da -9 a 9; la matrice C rappresenterà sempre il determinante della matrice originale.

16.

Nella funzione contaNA del seguente codice:

int contaNA(int A[MAX][MAX], int r, int c, int N) {

    int count = 0;

    for(int i=0;i<r;i++)

        for(int j=0;j<c;j++)

            if (A[i][j] == N) count++;

    return count;

}

cosa succede esattamente alla variabile count ogni volta che l'istruzione if (A[i][j] == N) risulta vera?

a)

Viene resettata a 0.

b)

Viene incrementata di 1

c)

Viene impostata uguale al valore di N

d)

Viene incrementata del valore dell'indice i.

17.

Quando la seguente funzione restituisce il valore “false” ? 

bool diagonaleNulla(int C[MAX][MAX], int r) {

    for(int i=0;i<r;i++)

        if (C[i][i] != 0) return false;

    return true;

        }

a)

Quando almeno un elemento sulla diagonale principale è diverso da zero.

b)

Se tutti gli elementi sulla diagonale principale sono esattamente zero.

c)

Quando tutti gli elementi della matrice, sia all'interno che all'esterno della diagonale, sono diversi da zero.

d)

Quando la funzione ha terminato di scansionare l'intera matrice e non ha trovato alcun elemento uguale a zero.

18.

Nella funzione prodottoMatrici, dove viene inizializzato a zero l'accumulatore del

prodotto scalare?

void prodottoMatrici(int A[MAX][MAX], int B[MAX][MAX], int P[MAX][MAX], int r, int c) {

    for(int i=0;i<r;i++)

        for(int j=0;j<c;j++){

            P[i][j] = 0;

            for(int k=0;k<c;k++)

                P[i][j] = P[i][j] + A[i][k] * B[k][j];

        }

}

a)

All'inizio della funzione per tutta la matrice.

b)

All'interno del secondo ciclo, prima di iniziare la sommatoria del terzo ciclo (P[i][j] = 0).

c)

Non viene inizializzato, il C++ lo fa automaticamente.

d)

Viene inizializzato nel main

19.

Quale delle seguenti affermazioni è sbagliata riguardo al funzionamento della funzione?

void visualizzaRigaB(int B[MAX][MAX], int r, int c) {

   int rig;

   cout<<"Quale riga vuoi visualizzare? (1,"<<r<<")";

   cin>>rig;

   if (rig>0 && rig<=r){ 

    for(int j=0;j<c;j++){

        cout << B[rig-1][j] << " ";

    }

    cout << endl;

   }

   else

      cout<<"Numero riga errato"<<endl;

}

a)

La funzione chiede all’utente di scegliere una riga compresa tra 1 e il numero totale di righe della matrice.

b)

L’indice rig-1 viene usato per adattare la numerazione dell’utente (che parte da 1) agli indici della matrice (che partono da 0).

c)

Il ciclo for(int j=0; j<c; j++) serve a scorrere tutte le colonne della riga scelta.

d)

Se l’utente inserisce un numero di riga non valido, la funzione stampa un messaggio di errore e non accede alla matrice.

e)

La funzione utilizza il parametro r per scorrere le colonne della matrice B.

20.

Cosa rappresenta la variabile booleana `dimScelta` nel programma?

a)

 Se l'utente ha scelto di generare le matrici casualmente

b)

Se la dimensione della matrice è stata scelta dall'utente

c)

Se la matrice A è stata inserita manualmente

d)

Se la dimensione della matrice è stata validata

e)

Se il programma è pronto per calcolare la matrice C

21.

Cosa indica una matrice diagonale?

a)

Solo gli elementi sulla diagonale principale sono diversi da zero

b)

Tutti gli elementi sono diversi da zero

c)

Solo gli elementi fuori dalla diagonale principale sono zero


d)

È una matrice quadrata

22.

Perché nel ciclo interno c’è l'istruzione if(j == x) continue?

int determinante(int A[MAX][MAX], int n) {

    if(n == 1) return A[0][0];

    int det = 0, sub[MAX][MAX];

    for(int x=0; x<n; x++){

        int subi=0;

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

            int subj = 0;

            for(int j=0;j<n;j++){

                if(j == x) continue;

                sub[subi][subj++] = A[i][j];

            }

            subi++;

        } 

        det += (x%2==0 ? 1 : -1) A[0][x] determinante(sub, n-1);

    }

    return det;

}

a)

 Per evitare un errore di compilazione

b)

Per saltare la colonna usata nello sviluppo di Laplace

c)

 Per saltare la diagonale principale

d)

Per migliorare le prestazioni

23.

La funzione determinante calcola il determinante di una matrice quadrata A di dimensione n × n.
Quale delle seguenti affermazioni è corretta?

a)

Il determinante viene calcolato usando l’eliminazione di Gauss e la matrice sub serve per salvare i pivot.

b)

Il determinante viene calcolato tramite lo sviluppo di Laplace sulla prima riga; la matrice sub rappresenta il minore ottenuto eliminando la prima riga e la colonna x.

c)

Il segno (+ / −) dipende dal valore degli elementi della matrice A.

d)

La funzione ha complessità O(n3) ed è efficiente anche per matrici di grandi dimensioni.

24.

Nel programma come viene definita una matrice che è composta da una sola riga e n colonne?

a)

Matrice colonna

b)

Matrice riga (o vettore riga)

c)

Matrice identità

d)

Matrice nulla

25.

Cos'è una matrice triangolare?

a)

una matrice quadrata con elementi pari a zero al di sopra o al di sotto della diagonale principale.

b)

una matrice in cui la diagonale vale zero

c)

È una matrice composta esclusivamente da tre elementi diversi da zero disposti ai vertici della matrice

d)

è una matrice in cui gli elementi al di sotto della diagonale valgono zero

26.

Cosa fa la funzione srand (time(NULL))?

a)

Serve a ordinare in modo casuale i numeri generati dalla funzione rand() durante

l’esecuzione del programma.

b)

Inizializza la generazione di numeri casuali che verrà usato dalla funzione rand() in

modo che a ogni esecuzione generi numeri diversi.

c)

Imposta il limite massimo dei numeri casuali che possono essere generati da rand().

d)

Attiva la funzione time() per misurare il tempo di esecuzione del programma e

migliorare le prestazioni.

27.

Cosa fa la funzione void clearScreen?

a)

B. organizza visivamente lo schermo separando le varie parti del programma

b)

C. Resetta tutte le variabili globali e locali ogni volta che viene chiamata la funzione

c)

A. ripulisce lo schermo ogni volta che viene chiamata la funzione

d)

D. Termina l’esecuzione del programma

28.

Dato il seguente codice

case 9: if (Ccalcolata) {

if (c == r) {

if (diagonaleNulla(C, r)) {

cout << "La diagonale e' nulla\n";

} else {

cout << "La diagonale NON e' nulla\n";

}

} else {

cout << "NON e' possibile calcolare la diagonale perche' non e' una matrice

quadrata\n";

}

} else {

cout << "Prima devi calcolare la matrice C.\n";

}

break;

Quando viene stampato il messaggio

"La diagonale e' nulla"?

a)

A. Quando la funzione “diagonaleNulla” restituisce come valore true. ✅

b)

Quando la funzione “diagonaleNulla” restituisce come valore false.

c)

Quando la procedura“diagonaleNulla” restituisce come valore true.

d)

Quando la procedura“diagonaleNulla” restituisce come valore false.

29.

A cosa serve la variabile matInserita?

case 4: if (matInserite) {

calcolaC(A, B, C, r, c);

cout << "Matrice C:\n";

visualizzaMatrice(C, r, c);

Ccalcolata = true;

}

else { cout << "Prima inserisci o genera le matrici.\n"; }

break;

a)

Serve ad indicare se la matrice A e B è stata generata o inserita

b)

Serve per memorizzare il numero di righe e colonne della matrice A e della matrice

c)

Serve per contenere il valore massimo presente nelle matrici A e B durante

l’elaborazione

30.

Che tipo di passaggio é?

int contaNA(int A[MAX][MAX], int r, int c, int N);

a)

per riferimento

b)

per valore

c)

la matrice per indirizzo il resto per valore

d)

per indirizzo

e)

la matrice per valore il resto per indirizzo

31.

A cosa serve questa funzione?

int contaNA(int A[MAX][MAX], int r, int c, int N) {

int count = 0;

for(int i=0;i<r;i++)

for(int j=0;j<c;j++)

if (A[i][j] == N) count++;

return count;

}

a)

serve a contare quanti elementi della matrice A sono uguali a un valore m

b)

serve a sostituire tutti gli elementi della matrice A uguali a m con il valore zero

c)

confrontare ogni elemento della matrice A con la matrice B, contando quelli che

assumono il valore m

d)

La funzione serve a verificare se il valore m è maggiore o minore degli

elementi della matrice

32.

A cosa serve l'istruzione "Case"?

a)

Serve a ripetere un’istruzione finché una condizione è vera, come un ciclo

while.

b)

È usata per dichiarare variabili globali all’interno di un programma.

c)

Serve a proteggere il codice da virus e attacchi informatici grazie a un

controllo automatico.

d)

Permette di eseguire istruzioni diverse a seconda del valore di una variabile.

33.

cosa calcola il programma

int mB(int B[MAX][MAX], int r, int c) {

int mv = B[0][0];

for(int i=0;i<r;i++)

for(int j=0;j<c;j++)

if (B[i][j] > mv) mv = B[i][j];

return mv;

}

a)

il massimo di A

b)

il massimo di B

c)

il minimo di A

d)

il massimo di A e di B

34.

Quale operazione viene eseguita in questa istruzione?

void calcolaC(int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX], int r, int c) {

for(int i=0;i<r;i++)

for(int j=0;j<c;j++)

C[i][j] = 3*A[i][j] - 2*B[i][j];

}

a)

La somma delle matrici A e B

b)

Il prodotto tra A e B

c)

Una combinazione lineare di A e B

d)

Il determinante della matrice C

35.

cosa svolge il seguente programma?

void ***(int B[MAX][MAX], int r ,int c)

{ int n;

cout<< “.....” ;

cin>> n;

if(n>r) { cout<<”....”; return;}

for(int j=0; j<c;j++)

cout<< B[n-1][j] <<”....” ;

cout <<endl ;

}

a)

calcola la somma tra matrici

b)

visualizza una riga

c)

visualizza una colonna

d)

termina l'esecuzione del programma

36.

Cosa fa questa funzione?

void ______ Matrici(int A[MAX][MAX], int B[MAX][MAX], int P[MAX][MAX], int r, int c)

{

for(int i=0;i<r;i++)

for(int j=0;j<c;j++){

P[i][j] = 0;

for(int k=0;k<c;k++)

P[i][j] = P[i][j] + A[i][k] * B[k][j];

}

}

a)

Sottrazione tra A e B

b)

Divisione tra A e B

c)

Somma tra A e B

d)

Prodotto tra la matrice A e B

37.

Nella funzione mediaRigaB, perché viene effettuata la divisione

float(somma)/c invece di somma/c?

a)

Per evitare divisione per zero.

b)

Per ottenere un risultato in virgola mobile invece di un intero.

c)

Per arrotondare il risultato alla riga più vicina.

d)

Non fa differenza, il risultato è sempre lo stesso.

38.

Nel switch-case principale, cosa accade se l’utente seleziona

l’opzione 3 senza prima scegliere la dimensione delle matrici?

a)

Le matrici vengono generate con dimensione MAX.

b)

Viene mostrato il messaggio "Prima scegli la dimensione della matrice."

c)

Il programma genera errore di compilazione

d)

Le matrici vengono generate come matrici 2x2 di default.