lab_eng
(usa Linux Mint)
Enviado em 30/09/2014 - 11:00h
Pessoal,
Estou implementando um codigo e nao consigo identificar o problema dele (main nao imprime diretamente, nem chamando uma funcao que faca isto).
Segue abaixo a lista dos passos da implementacao.
1 - abrir arquivo "taxis.csv"
2 - ler linha por linha transformando em uma string
3 - separar esta string em partes de strings
4 - transformar partes de strings para um valor DOUBLE
5 - salvar estes valores DOUBLE em um array global
6 - acessar este array dentro da main() (PROBLEMA PRINCIPAL)
A questao eh que dentro da main() nao esta sendo permitido imprimir (acessar) nenhuma variavel, seja ela global ou local. Acredito que esteja ocorrendo algum conflito mas nao consigo identificar.
Eu sei que o codigo esta confuso e um pouco abstrato e ate mesmo ilegivel e com coisas desnecessarias pois esta sendo implementado, porem estou iniciando em C++ e gostaria da compreensao.
Obrigado!
Segue abaixo o codigo
#include <string.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
#include <stdio.h>
//#include <taxi.h>
using std::stringstream;
using namespace std;
#define N_LOC 370
double loc[N_LOC][2];
double lati;
double longi;
int *ptrk;
int mostra(void){
int control;
control = *ptrk;
printf("id = %.0lf, longitude = %.14lf, latitude = %.14lf \n", loc[control][0], loc[control][1], loc[control][2]);
return 0;
}
int cria(double id, double longitude, double latitude){
int control;
control = *ptrk;
loc[control][0] = id;
loc[control][1] = latitude;
loc[control][2] = longitude;
return 0;
}
int ler(){
vector<std::string> split(string str, string sep);
double longitude;
double latitude;
double id;
vector<std::string> line_parts;
string line = "";
int k = 0;
ptrk = &k;
int lines = 0;
ifstream arq;
arq.open("taxis.csv", ios::in);
if(arq.is_open())
{
while(!arq.eof())
{
getline(arq, line);
line_parts = split(line, ";");
for(int i = 0; i < 5; i++){
//cout << line_parts.at(i) << endl;
stringstream s3(line_parts.at(0));
stringstream s1(line_parts.at(3));
stringstream s2(line_parts.at(4));
s3 >> id;
s1 >> longitude;
s2 >> latitude;
cria(id, longitude, latitude);
}
k++;
}lines++;
if(lines == 1)
return 0;
arq.close();
}
}
vector<std::string> split(string str, string sep){
char* cstr=const_cast<char*>(str.c_str());
char* current;
vector<std::string> arr;
current=strtok(cstr,sep.c_str());
while(current != NULL){
arr.push_back(current);
current=strtok(NULL, sep.c_str());
}
return arr;
}
int main(void){
ler();
mostra(); //(ERRO)esta funcao aqui nao nao imprime o array global!!!
return 0;
}