Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    Problema matrici dinamiche c++

    Ciao a tutti,
    sono nuovo quindi non so bene come funziona il forum, questa è la prima volta che mi confronto con il c++ e quindi ne so poco o niente, ho un problema con questo progetto:

    implementare una Template Classtemplate<class T>class Matrix2D{}implementare tutte le operazioni possibili (trasposta, inversa, determinante, ...), l'operatore == e l'operatore !=, gli operatori + - * /In caso di operazione non ammessa, es determinante di una matrice non quadrata, generare eccezione (throw)Fare uso di memoria dinamica (new e delete)

    Ho iniziato dichiarando la matrice, facendo l'inserimento dei dati e la visualizzazione delle matrici, fino a qui ci siamo ma poi sono in difficoltà con la somma matriciale.
    Questo è ciò che ho fatto fino ad ora:

    codice:
    #include <stdio.h>
    #include "stdafx.h"
    #include <io.h>
    #include <iostream>
    #include <iomanip>
    #include <ctype.h>
    #include <math.h>
     
    using namespace std;
     
    int i, j;
    int n;
    int **matrice;
    int righe, colonne;
    int Somma=0;
     
    void inserimento_matrice_dinamica(int **m, int r, int c)
    {
           int i, j;
     
           for (i = 0; i<r; i++)
           for (j = 0; j<c; j++){
                 cout << "Inserisci Elemento " <<"("<< i+1<< "," << j+1 << ")"<< " ";
                 cin >> m[i][j];
           }
    }
     
    void visualizza_matrice_dinamica(int **m, int r, int c)
    {
           int i, j;
     
           for (i = 0; i<r; i++)
           for (j = 0; j<c; j++)
                 cout << "Elemento di Indice " << "(" << i + 1 << "," << j + 1 << ")" << " = " << m[i][j] << endl;
    }
    void SommaMatriciale(int **m, int r, int c)
    {
           for (size_t i = 0; i < n; i++)
           {
                
           }
    }
     
     
    void main()
    {
     
           cout << "Inserisci il numero delle matrici"<<endl;
           cin >> n;
          
           for (int z = 0;z < n; z++)
           {
     
     
                 cout << "Inserisci il numero di righe della Matrice "<< z+1 <<endl;
                 cin >> righe;
                 cout << "Inserisci il numero di colonne della Matrice " << z+1 << endl;
                 cin >> colonne;
     
                 matrice = new int *[righe];
                 for (i = 0; i < righe; i++)
                        matrice[i] = new int[colonne];
     
                 cout << "Inserimento Matrice Dinamica " << endl;
                 inserimento_matrice_dinamica(matrice, righe, colonne);
     
     
     
     
                 cout << "Visualizzazione Matrice Dinamica " << endl;
                 visualizza_matrice_dinamica(matrice, righe, colonne);
     
                 system("PAUSE");
     
                 //getchar();
     
                 for (i = 0; i < righe; i++)
                        delete matrice[i];
     
                 delete matrice;
           }
     
    }

    Potete darmi suggerimenti su come affrontare il problema e quelli che sicuramente mi troverò ad avere??

    Grazie anticipatamente!!!

  2. #2
    Aiutooooo

  3. #3
    se devi calcolarti la somma di tutte le celle della matrice è sufficiente creare un ciclo for annidato dentro un altro: nel primo tratti le righe, nel secondo le colonne. ovviamente lavori dentro a quello più interno:
    - dichiari la variabile somma= 0;
    - somma+= matrice[righe][colonne]

    spero sia ciò di cui hai bisogno

  4. #4
    Eh.. Ho provato a farlo con due cicli ma non va lo stesso. Mi serve di poter scegliere da tastiera quali sono le matrici da sommare. Trovo anche molta difficoltà in operazioni come il calcolo della trasposta e del determinante, avresti per caso qualche suggerimento da darmi??

  5. #5
    codice:
    
    
    codice:
    
      for( int i= 0; i < r; i++ )
        for( int l= 0; l < c; l++ )
    somma+= m[i][c];
    
    


    sicuro non funzioni?

    comunque ho appena guardato la trasposta e adesso provo a implementarla... appena ho finito te lo mando

    Ultima modifica di maluz1; 29-04-2014 a 15:34

  6. #6
    nella matrice trasposta è necessario creare una matrice con dimensioni invertite ( quindi se quella iniziale è una 3x2, tu creerai una 2x3).
    Poi l'algoritmo è piuttosto semplice: devi solo pensare che nella trasposta gli indici sono invertiti: matrice[2][1]= matrice[1][2]

    per la determinante so solo dirti per quella quadrata 2x2, per le più grandi non so neanche come si fa a calcolarla

  7. #7
    Innanzitutto grazie per le risposte, la trasposta così funziona, solo che nella somma il problema continua ad esserci:
    il mio ragionamento è quello di sommare ogni volta la matrice che si aggiunge ad una variabile somma, solo che questa variabile deve essere dichiarata ed inizializzata, ma non ci riesco..

  8. #8
    Adesso che ci bado tutte le funzioni che hai dichiarato sono void( cioè non restituiscono alcun valore ). La somma DEVE restituire un valore a meno che tu non voglia stamparla nella funzione stessa.. Cosa alquanto sconsigliata. Un' altro errore a cui bado solo adesso è la variabile globale somma=0 che tu hai dichiarato all' esterno della funzione stessa: per questo che non ti va, devi dichiarare e inizializzare la variabile all'interno. Ti consiglio di leggere qualche guida, come quella di questo sito, e di non buttarti subito sull'allocazione dinamica e matrici.

    per curiosità: da quale linguaggio provieni?

  9. #9
    Ho vaghe conoscenze di Java, l'allocazione dinamica e le matrici mi vengono richieste nel progetto che devo fare, ora provo a cambiare parte del codice della somma poi faccio sapere, grazie comunque della disponibilità!!!

  10. #10
    figurati i forum servono proprio a questo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.