Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[C++] Caricamento di due matrici in sequenza.

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: archimede, Triumph Of Steel

[C++] Caricamento di due matrici in sequenza.

Postdi theShort » 18/03/18 22:46

Ciao a tutti,
ho questo problema che mi sta rallentando il lavoro:
devo caricare due matrici da due file distinti, il primo file (orbitals.txt" contiene due colonne di dati, separate da uno spazio, formate da 36 elementi ogniuna. Il secondo file "Ca48.txt", contiene sempre due colonne di dati (separate da uno spazio) formate da 12 elementi ogniuna.
Bene, questo è il codice che uso per caricare le matrici:
Codice: Seleziona tutto
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "Includes.h"


int main(int argc, const char * argv[]) {

   std::vector <std::vector <int> > orbitals (36);
   std::ifstream in ;
   in.open("orbitals.txt");

   for (int i = 0; i < 36; ++i)
   {
      for (int j = 0; j < 2; ++j)
      {
         int temp;
         in >> temp;
         orbitals[i].push_back(temp);
      }
   }
   in.close();
   in.clear();

      for (int i = 0; i < 36; ++i)
      {
         for (int j = 0; j < 2; ++j)
            std::cout << orbitals[i][j];
            std::cout << std::endl;
      }
std::cout << "===========================" << std::endl;

     in.open("Ca48.txt");
     std::vector <std::vector <double> > QRparam (12);
    for (int i = 0; i < 12; ++i)
    {
       for (int j = 0; j < 2; ++j)
       {
          int temp;
          in >> temp;
          QRparam[i].push_back(temp);
       }
    }

    in.close();

   for (int i = 0; i < 12; ++i)
   {
      for (int j = 0; j < 2; ++j)
         std::cout << QRparam[i][j];
         std::cout << std::endl;
   }

    return 0;
}


La prima matrice mi viene riempita correttamente, mentre la seconda viene caricata di soli zeri...
Dove sta l'errore???

Grazie a chi mi dedica tempo!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Sponsor
 

Postdi theShort » 19/03/18 11:15

Mi correggo da solo.
Nel ciclo del caricamento della seconda matrice deve esserci un double temp, come giusto che sia. Quindi il codice corretto è:

Codice: Seleziona tutto
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "Includes.h"


int main(int argc, const char * argv[]) {

   std::vector <std::vector <int> > orbitals (36);
   std::ifstream in ;
   in.open("orbitals.txt");

   for (int i = 0; i < 36; ++i)
   {
      for (int j = 0; j < 2; ++j)
      {
         int temp;
         in >> temp;
         orbitals[i].push_back(temp);
      }
   }
   in.close();
   in.clear();

      for (int i = 0; i < 36; ++i)
      {
         for (int j = 0; j < 2; ++j)
            std::cout << orbitals[i][j];
            std::cout << std::endl;
      }
std::cout << "===========================" << std::endl;

     in.open("Ca48.txt");
     std::vector <std::vector <double> > QRparam (12);
    for (int i = 0; i < 12; ++i)
    {
       for (int j = 0; j < 2; ++j)
       {
          double temp;
          in >> temp;
          QRparam[i].push_back(temp);
       }
    }

    in.close();

   for (int i = 0; i < 12; ++i)
   {
      for (int j = 0; j < 2; ++j)
         std::cout << QRparam[i][j];
         std::cout << std::endl;
   }

    return 0;
}


Un errore veramente stupido...

Ciao!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35


Torna a Programmazione


Topic correlati a "[C++] Caricamento di due matrici in sequenza.":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti