Ir para conteúdo
Entre para seguir isso  
Eduardo_555

Ajuda com manipulação de arquivos txt em c/c++

Recommended Posts

Olá bom dia!!

Estrou desenvolvendo um algorítimo que deve ler dados de uma pessoa armazenar em uma tabela hash

o programa deve ter um menu e la tem de ter uma opção salvar, quando selecionada deve gravar os dados

em um arquivo em vários aquivos txt, exemplo, ele deve calcular por índice do hash e dividir cada índice fica em um txt separado

índice 1 - txt_1

índice 2 - txt_2

o problema esta na hora de criar o arquivo pois gostaria de criá-lo usando um for, para que a criação seja automática e eu não precise repetir código.

Criei uma função que converte um inteiro em string e tentei usar como nome do arquivo mais não funcionou não!!

Como faço isso.?

já fis estes códigos para isso.

//funcao que converte os inteiros em strings e os retorna

string func_arquivo::converte_string(int valor){

    string convertido;
    stringstream converter;
    converter << valor;
    convertido = converter.str();
    return convertido;
}
//funcao que cria o arquivo

void func_arquivo::cria_arquivo(){
   ofstream arquivo;

    for(int i=0;i<TAM;i++){

        string nome = converte_string(i);

        arquivo.open(nome + "txt", ios::trunc);
        arquivo.close();
    }
}

Se precisar ver o código por completo podem verificar no git hub.

https://github.com/Noplagio/TrabalhoHashing

Aguardo uma ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite

Você não precisa criar uma função para fazer esta conversão, ela já existe e se chama to_string().

void cria_arquivo() {
	ofstream arquivo;

	for (int i = 0; i < TAM; i++) {

		string nome;
		nome = to_string(i);

		arquivo.open(nome + ".txt", ios::trunc);
		arquivo.close();
	}
}

Qualquer dúvida só perguntar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Bruno Goedert Dalmolin
      Não consigo apresentar as palavras equivalentes conseguem me ajudar???
      O código é o seguinte: 
       
      #include <stdio.h>
      char equivale(int ddd){
          switch(ddd){
              case 61:
                  return "Brasilia";
                  break;
              case 71:
                  return "Salvador";
                  break;
              case 11:
                  return "Sao Palo";
                  break;
              case 21:
                  return "Rio de Janeiro";
                  break;
              case 32:
                  return "Juiz de Fora";
                  break;
              case 19:
                  return "Campinas";
                  break;
              case 27:
                  return "Vitoria";
                  break;
              case 31:
                  return "Belo Horizonte";
                  break;
          }
      }
      int main(){
          int ddd;
          scanf("%d",&ddd);
          equivale(ddd);
          printf("%d",equivale(ddd));
      }
    • Por Caio Mekacheski
      Beleza galera, nesse meu primeiro post, quero compartilhar esse video onde inicio um tutorial básico pra aprender a programar em c++, só que de maneira prática. Um programa simples que eu escrevi pra fazer o cálculo da metragem cúbica de peças de madeira que eu beneficio aqui na minha pequena marcenaria. Um programa simples que me ajuda a executar uma tarefa tediosa, e que apresenta um conhecimento básico na programação em c++. Então resolvi fazer dele um tutorial prático para iniciantes. Nesse primeiro video eu apresento um esboço inicial pra entender o que o programa vai fazer. Conforme for desenvolvendo o programa, vou apresentando novos conceitos gradativamente. Espero que gostem. 
       
      https://www.youtube.com/watch?v=Obr8Jrp7LGQ
    • Por darkskull10
      Numa cidade as crianças costumam brincar com um jogo (de dois jogadores) onde:
      um jogador A define uma sequência de 10 letras usando: G, R e B (exemplo: G – G – G – R – B – R – B – B – B – R)
      um jogador B pode ler a sequência quantas vezes quiser
      o jogador B também pode dizer uma das letras e obter em quais posições a letra dada se encontra na sequência
      o jogador B também pode dar uma posição e saber qual letra ocupa a posição na sequência
      para finalizar, o jogador B deve dizer a sequência de letras, obtendo um ponto para cada acerto.
       
      Só consegui pensar nisso por enquanto.
       
      //identificar que letra ocupa esta posição na sequência:
      do{
      scanf(“%d”,&Posicao);
      Posicao=Posicao-1;}
      while ((Posicao<0)||(Posicao>9));
      printf(“%c”,Sequencia[Posicao]);
       
      //exibir sequencia
      for (Cont=0; Cont<=9; Cont++)
      printf(“%c”,Sequencia[Cont]);
       
      //exibir posições
      for (Cont=0; Cont<=9; Cont++)
      printf(“%d%c”,Cont+1,Sequencia[Cont]);
    • Por JPMarte
      Olá, sou estudante iniciante de programação e estou desenvolvendo um código para uma aula, onde esse é o enunciado:
       
      "Faça um código que ajude a calcular a resposta para seus exercícios de Física.
      As questões consistem em calcular a força de atração elétrica entre duas cargas puntiformes,  a força é calculada de acordo com a seguinte fórmula:
       
      F=K×Q1×Q2/D^2
       
      Utilize o valor de 100 para K, Q1, Q2 e D serão fornecidos pelo usuário.

      Mostre o valor de F com duas casas decimais.
       
      Entrada
          Serão fornecidos ao seu programa três valores inteiros, Q1, Q2 e D, respectivamente.
      Saída
          Seu programa deve mostrar o resultado da conta com exatas 2 casas decimais, de acordo com o exemplo abaixo."
       
      Então eu fiz o código que tirei print aqui, mas alguns resultados saem incorretos e sem as casas decimais necessárias!
      Em setprecision, eu coloquei o limite de duas casas (2), mas o programa mostra dois dígitos...
      Quando utilizei setprecision (4) ele até funcionou com resultados como 22.22, mas com números maiores, como 3600, não se mostra uma solução viável.
      Se alguém puder me ajudar, agradeço muito! 

    • Por Yuri Fernandes da Silva
      Olá, sou um membro novo do fórum e estou estudando por conta a linguagem c++ pela internet..
       
      Durante meus estudos, me surgiu uma dúvida em relação ao conteúdo descrito no título desse fórum, mais especificamente com um compilador online (estudo no meu serviço, nos horários vagos)
       
      Essa foi a mensagem de erro que apareceu no compilador Online "C++ Shell":   In function 'int main()': 10:66: error: expected primary-expression before '<' token
       
      Esse foi o código que criei:
       
       
      //Exercício 
      #include <iostream>
      using namespace std;
      int main ()
      {
          int num;
          
          num=12;
          if ((num >=3 && num <=6) || (num > 9 && num < 15) || (num>15 && <20)) {
              cout <<"\n\nValor aceito\n";
          }else{
              cout <<"\n\nnao aceito\n";
          }
          return 0;
      }
       
       
      Agradeço desde já a atenção.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.