Sommare elementi di array multidimensionali

di il
10 risposte

Sommare elementi di array multidimensionali

Ciao a tutti. Ho scritto del codice che genera una matrice NxM. Successivamente devo fare delle operazioni su questa matrice.In particolare devo:
- Generi una matrice di NxM popolata di valori casuali compresi tra 1 e 100.
- Dichiari due array, l'array R di N elementi e l'array C di M elementi.
- Salvi, nell'array R le somme di ogni riga della matrice e nell'array C le somme di tutte le colonne.
- Stampi la matrice e i due array.
Questo il codice scritto per generare la matrice:

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout,
});
readline.question(`Input:   `, num=> {
   let N=parseInt(num.charAt(0));
   let M=parseInt(num.charAt(2));
   const arr=[];
   const arrR=[];
   let numRnd=0;
   
   for(let i=0; i< N; i++){
      numRnd=Math.floor(Math.random()*100)+1 ;
      arr.push([numRnd]);
      
          for( let j=0; j < M; j++){
          arr[i][j]=Math.floor(Math.random()*100)+1;
          }
    }
    console.log(arr);
    readline.close();
    });

Ovviamente non voglio la soluzione, ma conoscere quale approccio utilizzare per proseguire nelle operazioni sull'array multidimensionale. Ho difficoltà nel proseguire perchè pur trovando esempi su come sommare gli elementi di un array non ho trovato molto sulla somma degli elementi di array multidimensionali.

10 Risposte

  • Re: Sommare elementi di array multidimensionali

    E' lo stesso codice che hai scritto qui, che a sua volta è lo stesso inserito in una discussione precedente, che grossomodo è lo stesso identico codice di diverse discussioni passate, che stai continuando ad aprire senza mai avanzare né rispondere alle domande che ti vengono poste, né recependo alcuno dei suggerimenti che ti sono stati dati, reiterando sempre pressapoco la stessa formula ("ecco il codice, ditemi voi") con problemi del tutto affini.

    Non credo sia un modo proficuo ed educato di partecipare al forum.
  • Re: Sommare elementi di array multidimensionali

    Non è lo stesso codice presentato precedentemente. Perchè questo mi funziona. Mi è stato detto di aprire una discussione per ogni argomento nuovo che intendo illustrare. L'argomento di questo post riguarda la somma degli elementi di un array multidimensionale che non ho postato prima e nel web non ho trovato nulla. Quindi quello che chiedo è semplicemente come si procede in questi casi chiedendo un modo come quello che mi hai detto nell'altro post per generare una matrice NxM. Dalla domanda che ho posto in questo post si vede che l'esercizio chiede di fare diverse cose. Quindi, e spero di aver capito le regole del forum, per ogni passaggio dell'esercizio devo aprire una nuova discussione? Inoltre mi ricollego alle altre contestazioni fattemi, un utente senior mi ha detto che il ; finale nelle istruzioni non si usa più, mentre te dici il contrario. Per ogni codice postato ho sempre risposto alle domande che mi sono state fatte, evidentemente hai letto velocemente il codice. Sinceramente ho un pò di confusione sulla gestione dei problemi che posto in questo forum e in futuro cercherò di assicurarmi di essere chiaro.
    Saluti
  • Re: Sommare elementi di array multidimensionali

    Quello che intende dire Alka è che non ti puoi fermare ad ogni piccolo problema come pensi di poter fare perché, primariamente, così non impari.

    La tua strategia è "cerco sul web una soluzione", altrimenti cerco qualcuno sul forum che "scriva il codice" (in questo caso è così semplice che non resta che scriverti le due linee di codice).

    Perché non posti una tua soluzione sul problema della somma? Ragionaci e proponi qualcosa.
    Parti dal fatto che i due cicli con cui puoi ottenere tutti gli elementi della matrice, uno per uno, già li hai. Cosa manca?
  • Re: Sommare elementi di array multidimensionali

    Nel codice scritto ho inserito una istruzione:
    arrR +=arr[j]
    ma succede che mi dà il totale degli elementi dell'array. A me occorre la somma di ogni singolo elemento dell'array multidimensionale. E' difficile spiegare passo passo.
    
    const readline = require('readline').createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    readline.question(`Input:   `, num=> {
       let N=parseInt(num.charAt(0));
       let M=parseInt(num.charAt(2));
       const arr=[];
       let arrR=0;
       let numRnd=0;
       
       for(let i=0; i< N; i++){
          numRnd=Math.floor(Math.random()*100)+1 ;
          arr.push([numRnd]);
          
              for( let j=0; j < M; j++){
              arr[i][j]=Math.floor(Math.random()*100)+1;
              arrR +=arr[i][j]       //riga inserita per la somma 
              }
        }
        console.log(arr);
        console.log(arrR);
        readline.close();
        });
    
    
  • Re: Sommare elementi di array multidimensionali

    Ok ti sei chiesto perchè quella riga non va?

    Come risolversi con carta e penna? Parti da un array di questo tipo

    1 2 3
    4 5 6

    Quale risultato ti aspetti per arrR ?
  • Re: Sommare elementi di array multidimensionali

    Con carta e penna avrei
    6
    15
    Il problema è che li somma tutti,sia la prima riga che la seconda a causa del ciclo for usato. Non so come fare per sommare la prima riga, inserirla in un array, poi sommare la seconda riga e inserirla sempre nell'array. Mi viene da pensare di usare un'altro ciclo, ma ho già provato. E' il metodo che non mi viene
  • Re: Sommare elementi di array multidimensionali

    Devi sbatterci un po' la testa se il tuo scopo è imparare a programmare.

    arrR lo hai dichiarato come semplice valore intero. Ma non abbiamo detto che è un array?

    Quando hai sommato gli elementi che ti ho dato, quali indici avevano i singoli elementi presi per ogni riga? Elencali
  • Re: Sommare elementi di array multidimensionali

    Ciao.Finalmente ho risolto.Non riuscivo a capire come funzionavano i due cicli. Nel senso, prima itera il ciclo più interno e poi passa a quello esterno? Ho azzerato la variabile che contiene la somma alla fine del ciclo interno e così funziona.Ti ringrazio per la pazienza e il tempo che mi hai dedicato.Mi ha aiutato a riflettere. Ora provo a continuare l'esercizio se l'approccio è esatto.
    
    readline.question(`Input:   `, num => {
      let N = parseInt(num.charAt(0));
      let M = parseInt(num.charAt(2));
      const arr = [];
      let arrR1 = 0;
      let arrR = [];
      let numRnd = 0;
      let numRnd1 = 0;
    
      for (let i = 0; i < N; i++) {
        numRnd = Math.floor(Math.random() * 100) + 1;
        arr.push([numRnd]);
    
        for (let j = 0; j < M; j++) {
          arr[i][j] = Math.floor(Math.random() * 100) + 1;
          arrR1 += arr[i][j];
    
        }
        arrR.push([arrR1]);
        arrR1 = 0;  //variabile che permette la somma di ogni elemento nell'array multidimensionale
      }
      console.log(arr);
      console.log(arrR);
    
      readline.close();
    });
    
    
    
  • Re: Sommare elementi di array multidimensionali

    Ciao.Ho scritto il codice che genera una matrice NxM. Somma le righe della matrice ,cosi come le colonne. Volevo però chiedere se è normale che quando creo la matrice 3x2 funziona. Se invece creo la matrice 2x3 no.Dà questo errore:
    TypeError: Cannot read properties of undefined (reading '0')
    Questo è il codice completo:
    
    const readline = require('readline').createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    readline.question(`Input:   `, num => {
      let N = parseInt(num.charAt(0));
      let M = parseInt(num.charAt(2));
      const arr = [];
      const arrC = [];
      const arrR = [];
      let arrR1 = 0;
      let arrR2 = 0;
      let numRnd = 0;
    
      for (let i = 0; i < N; i++) {        //crea una matrice di righe e colonne
        numRnd = Math.floor(Math.random() * 100) + 1;
        arr.push([numRnd]);
    
        for (let j = 0; j < M; j++) {    //somma le righe della matrice
          arr[i][j] = Math.floor(Math.random() * 100) + 1;
          arrR1 += arr[i][j];
    
        }
        arrR.push([arrR1]);
        arrR1 = 0;  //variabile che permette la somma di ogni elemento nell'array multidimensionale
      }
    
      for (let x = 0; x < N; x++) {   //somma  le colonne della matrice
    
        for (let y = 0; y < M; y++) {
          arrR2 += arr[y][x];
        }
    
        arrC.push([arrR2]);
        arrR2 = 0;
      }
    
    
      console.log(arr);
      console.log("Array R=  [" + arrR + "]");
      console.log("Array C= [" + arrC + "]");
    
      readline.close();
    });
    
    
  • Re: Sommare elementi di array multidimensionali

    Nel calcolo delle colonne

    x<M

    e

    y<N
Devi accedere o registrarti per scrivere nel forum
10 risposte