Dubbio testo Esercizo C++

di il
3 risposte

Dubbio testo Esercizo C++

Ho qualche difficoltà a capire il nota bene(NB) di questo esercizio:

Scrivere un metodo che prenda in input un parametro formale array Adi interi di dimensioni n×m di elementi distinti ed un array B di double di dimensioni k×n, e restituisca un array di interi nel quale lo i-esimo elemento sia uguale alla media aritmetica degli elementi presenti sia nella riga i-esima di A che nella colonna i-esima di B. NB: per decidere se un elemento int della matrice A `e uguale ad un elemento double della matrice B si calcoli l’approssimazione all’intero più vicino di quest'ultimo

Ho capito che se abbiamo un elemento di b che ad esempio è:2.4 deve restare 2 mentre se fosse 2.5 deve essere arrotondato a 3 il problema è la frase:
per decidere se un elemento int della matrice A `e uguale ad un elemento double della matrice B cosa significa? in che senso devo decidere?

3 Risposte

  • Re: Dubbio testo Esercizo C++

    Intende dire ... se devi fare un confronto del tipo

    if (elemento_di_A == elemento_di_B)

    come fai a decidere se sono effettivamente uguali?

    Ad esempio, se elemento_di_A è 2 ed elemento_di_B è 2.4 allora sono uguagli; se elemento_di_B è 2.5 sono diversi.
  • Re: Dubbio testo Esercizo C++

    Ho pensato anch'io questo poi mi sono chiesto che senso ha fare questa comparazione? io devo farne la media artimetica.
    Mi spiego meglio
    Se nella riga di A abbiamo 5,4,3,2
    e nella colonna di B abbiamo 4.32, 2.4, 1.23, 4.55, 2.12

    io faccio prima la somma di quella riga di A(tenendo conto di un contatore) che è 14 mentre il cont è 4. Poi faccio la somma della colonna di B che è 14,62 mentre il cont è 9.
    Poi infine faccio
    c[i]=media/cont;
    dove
    c[i]
    è la la posizione i-esima dell vettore

    in tutto questo cosa serve comparare i numeri?
  • Re: Dubbio testo Esercizo C++

    Ho risolto.
    
    #include <iostream>
    
    using namespace std;
    
    #define n 3
    #define k 4
    #define m 2
    int *func(int A[n][m], double B[k][n])
    {
    	int somma=0;
    	int cont=0;
    	int *c=new int [n];
    	for (int i = 0; i < n; i++)
    	{
    		somma=0;
    		cont=0;
    		for (int j = 0; j < m; j++)
    		{
    			for (int y = 0; y < k; y++)
    			{
    				if (A[i][j]==(int)(B[y][i]+0.5))
    				{
    					somma+=A[i][j];
    					cont++;
    				}
    			}
    		}
    		if (cont==0)
    		{
    			c[i]=somma;
    		}else{
    		c[i]=somma/cont;
    		}
    	}	
    return c;
    }
    
    int main()
    {
    int V[n][m]={{2,3},
    			 {1,4},
    			 {1,2}};
    
    double F[k][n]={{2.33,3.23,1.66},
    			    {1.23,4.54,3.65},
    			    {2.8,2.32,11.65},
    			    {7.44,6.29,4.55}};
    int *array=func(V,F);
    for (int i = 0; i < n; i++)
    {
    	cout << array[i] << " ";
    }
    
    
    
    
    
    }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte