Aggiungi:
codice:#include <vector> using namespace std:
Aggiungi:
codice:#include <vector> using namespace std:
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
grazie, un'altra cosa:
qual è il tipo della matrice tab[][],
mi serve per dichiarare vettori nei
quali copiare il contenuto della stessa?
Errata corrige:
non
macodice:using namespace std:
Beh il tipo è.codice:using namespace std;
Per l'esattezza:codice:vector < vector <string> > tab;
tab[x] restituirà un < vector <string>
tab[x][y] restituirà string
alla fine avrai qualcosa del genere:
codice:int val = atoi(tab[x][y].c_str());
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
Perchè aggiungi ".c_str()" ?
Per scrivere un'uguaglianza del tipo: vettore[j]=tab[j][1]
il vettore[] come lo definisco?
grazie mille per tue risposte!
ho postato un altro quesito a parte perchè
la risposta penso possa tornare utile a qualcunaltro
che riguarda come creare un puntare che punti un elemento della
matrice tab[][], che come abbiamo detto è una stringa.
grazie
Aggiungo c_str() perché atoi (come altre funzioni C) richiede una const char* non una std::string
P.s.
Rispondi solo a uno dei due thread altrimenti non si capisce più niente.
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
ok,grazie, questo mi è chiaro.
Quindi per il puntatore sai come posso fare,invece?
Inoltre per scrivere un'uguaglianza del tipo: vettore[j]=tab[j][1]
il vettore[] come lo definisco?
scusa, ma mi è nuovo questa sintassi (ma è programmazione ad oggetti?)
e come avrai capito non sono un'informatica!
grazie
Mi da problemi la definizione alla riga 7
perchè mi dice che la dimensione dell'ggetto val non
dovrebbe essere dichiarata...
m=0;
for(i=0;i<sz;i++)
{
for(j=0;j<a;j++)
{
if(i==m*6){
double val[j][i]=atof(tab[j][i].c_str());
m++;};
};
}
E' programmazione a oggetti in senso lato. Ci limitiamo a usare quelli standard, non a implementarli.
Quella sintassi è sbagliata. Se devi utilizzare una matrice di double, devi dichiararla prima di usarla. Anche qui puoi usare i vector in modo simile alla tab di string:
Questo è il sistema più semplice in C++. Lavorando con array stile C occorrerebbe lavorare con allocazioni dinamiche che il vector gestisce di suo con le resize().codice:vector < vector <double> > tab_double; m=0; tab_double.resize(sz); // crea lo spazio per le righe for(i=0;i<sz;i++) { tab_double[i].resize(a); // crea lo spazio per le colonne e va fatto per ogni riga for(j=0;j<a;j++) { if(i==m*6) { tab_double[i][j]=atof(tab[i][j].c_str()); m++; } } }
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
Shodan, scusa ma mi da un errore che non capisco, compila, ma poi:
"terminate called after throwing an instance of 'std::length_error'
what(): vector::_M_fill_insert
Aborted"
Il codice è il seguente:
#include "stat.h"
#include <stdlib.h>
#include <stdio.h>
#include "rng.h"
#include "math.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;
#define SPACE << "\n " <<
#define SP << " " <<
const int F500_maxcomp=500;
#define MAIN 1;
int main(){
int m,i,j,a,sz;
fstream indata("dati 2 aziende.txt",ios::in);
indata.seekp(0,ios::beg); //positioning at the beginning of the file
vector < vector <string> > tab;
vector < string > tabline(10);
string line;
while (getline(indata,line)) {
istringstream iss(line);
int sz = tabline.size();
for (int i = 0; i < sz; i++) {
iss >> tabline[i];
}
tab.push_back(tabline);
};
a=tab.size();
cout<< "in n di linee è:"SP a<<endl;
vector < vector <double> > tab_double;
m=0;
tab_double.resize(sz); // crea lo spazio per le righe
for(i=0;i<sz;i++)
{
tab_double[i].resize(a); // crea lo spazio per le colonne e va fatto per ogni riga
for(j=0;j<a;j++)
{
if(i!=m*6) {
tab_double[i][j]=atof(tab[i][j].c_str());
m++;
}
};
}
cout<< "l'elemento è:"SP tab_double[2][3]<<endl;
exit(0);
}