Ir ao conteúdo
  • Cadastre-se

Matheus Mendonça Andrade

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por Matheus Mendonça Andrade

  1. Olá,
     
    Estou tentando rodar um programa no linux (Ubuntu 12.04) com o compilador Geany utilizando um arquivo de dados que contém aproximadamente 500 mb de dados, no qual cada linha (11932267 linhas) possui número de estação, ano, mês, dia e quantidade de chuva. Porém ao executar o script, aparece um erro "Segmentation fault (core dumped)". Gostaria de saber se isso pode ser memória insuficiente no computador para rodar esses dados. O Script está a seguir:

     

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
     
    int main () {
     
    //Definição de variáveis
    cout<<"Olá"<<endl<<"Iniciando programa"<<endl<<"Definindo variáveis";
    int nl;
    nl = 11932267; //Inserir Número de Linhas do arquivo saidaNORDESTE.TXT = 11932267
    int dia[nl], mes[nl], ano[nl], estacao[nl];
    float chuva[nl];
     
    //Abertura de arquivo
    cout<<" \n Abrindo arquivo...";
    ifstream entrada;
    entrada.open("saidaNORDESTE.txt"); //Verificar o nome está correto
    int i;
    for (i=0; i<nl;i++){
    entrada >> estacao >> ano >> mes >> dia >> chuva;
    }
    entrada.close();
     
    //Criação de arquivo menor com datas utilizadas
    cout<<"\n Criando arquivo apenas com as datas a serem utilizadas";
    int inicio, fim;
    inicio=1961; //Definir ano inicial
    fim=1979; //Definir ano final
    ofstream arquivo;
    arquivo.open("Arquivo.txt");
    cout<<"\n Aguarde...";
    int nlinhas=0;
    for (int i=0;i<nl;i++){
    if (ano>=inicio && ano<=fim){
    arquivo<<" "<<estacao<<"  "<<chuva<<"   "<<dia<<"    "<<mes<<"     "<<ano<<endl;
    cout<<".";
    nlinhas++;
    }
    }
    nl=nlinhas;
    arquivo.close();
     
    return 0;
     
    }
     
     
    Ao tentar executar, nem "Definindo variáveis" aparece, o computador mostra:
     
    Olá
    Iniciando programa
    Segmentation fault (core dumped)
     
     
    ------------------
    (program exited with code: 139)
    Press return to continue
     
     
    Os dados estão da seguinte forma (trecho do arquivo):
     
          835139        1998           1           1  0.300000012    
          835139        1998           1           2  0.100000001    
          835139        1998           1           3   0.00000000    
          835139        1998           1           4   0.00000000    
          835139        1998           1           5   0.00000000    
          835139        1998           1           6   0.00000000    
          835139        1998           1           7   7.90000010    
          835139        1998           1           8   0.00000000    
     
     
     
    Desculpem, não sei formatar como script para aparecer organizado.
  2. Boa tarde!
     
    Estou tentando fazer um programa no Geany em C++ que abra um arquivo em .txt que contem valores e guarde-os para que eu possa fazer cálculos com os mesmos. O arquivo possui 5 colunas: estação meteorológica (número), ano, mês, dia e precipitação (número). Eu vi um exemplo porém é em C. Gostaria de ajuda com isso em C++, pois não consigo entender em C pois é menos claro. Essa é uma pequena parte dos dados que possuem mais de 11 milhões de linhas.
     
          835139        1998           1           1  0.300000012    
          835139        1998           1           2  0.100000001    
          835139        1998           1           3   0.00000000    
          835139        1998           1           4   0.00000000    
          835139        1998           1           5   0.00000000    
          835139        1998           1           6   0.00000000    
          835139        1998           1           7   7.90000010    
     
    A parte do algoritmo que eu mais estou em dúvida é essa, que foi escrita em C

    for(i=0; i<numero_linhas; i++) {
    fscanf(arquivo,"%d %d %d %d %lf\n", &t1, &ano, &mes, &dia, &t2);
    }

     

    Não consigo entender o por que do %d e o & antes das variáveis. Gostaria de saber também por que algumas variáveis possuem um * antes do nome.

     

    Minha dúvida principal é com relação ao fscanf, alguém saberia como eu escrevo essa função nesse caso?

     

    Obrigado

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!