• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

cibersoft

Dados de txt para array

15 mensagens neste tópico

Boa Tarde, gostava de saber se me podem ajudar numa questão.

Eu tenho um ficheiro em txt  e la dentro tenho vários numeros int, eu quero ler o ficheiro e passar esses n para um array, será que me podem indicar como?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este exemplo assume que a primeira linha do ficheiro de texto tem o número de linhas seguintes que se seguem, mas se não tiveres podes escrever algo do tipo, while(!feof(fp)) ... .

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *fp = fopen("INPUT", "r");
    
    int n;
    fscanf(fp, "%d\n", &n);
    
    int *ptr = malloc(n * sizeof(int));
    
    int i;
    for(i = 0; i < n; i++)  
    {
        fscanf(fp, "%d\n", ptr+i);
        printf("%d\n", *(ptr+i));
    }
    
    return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int n;

void input_output()
{   
    int count=0;
    int v[100],i;
    ifstream input("c:\\file_in.txt");
    ofstream out("c:\\file_out.txt");
    while (input>>n)
    {
          count++; 
    out<<"\n"<<n<<endl;
    cout<<"valor n"<<count<<": "<<n<<endl;
    
    }
   for(int i = 1; i <= count; i++)
   {
      input>>v[0];
      input>>v[1];     
}
cout<<v[0];
    input.close();
    out.close();  
}

int main()
{
input_output(); 
      system("PAUSE");
}

Titon obrigado, o que eu já fiz está em cima no código, até agora consigo abrir e fechar e passar todos os dados para o ficheiro de output e também polos no ecrã.

Se poderes dar uma vista de olhos ao programa agradecia, tem erros e ver se podia aplicar o teu código aqui neste código.

o ficheiro de entrada é em txt com os seguintes valores:

5

4

5

6

8

9

12

23

12

14

34

12

18

19

10

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa Noite

O problema acima descrito já está resolvido, obrigado pela ajuda, agora tenho outro e preciso de ajuda.

O problema é o seguinte, Como é que faço para encontrar o maior e o menor numero dentro de um array.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com um ciclo?

colocas o primeiro elemento numa variável (max, por exemplo) e sempre que te aparecer um elemento maior do que essa variável, alteras o seu valor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com um ciclo?

colocas o primeiro elemento numa variável (max, por exemplo) e sempre que te aparecer um elemento maior do que essa variável, alteras o seu valor.

Pode ser com um ciclo desde que dentro do array descubra o numero inteiro maior e o numero inteiro menor, serve.

Podes explicar melhor?

4

5

6

8

9

12

23

12

14

34

12

18

19

10

assim--->

max=v[1];

for (i=v[1];i<=v[14]; i++)
{
if(i>max)
max=i;
}

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

2 variáveis: maior e menor. Colocas nas duas o valor do 1º elemento do array, depois percorres o array e se o valor actual for maior que a variável maior, ou menor que a variável menor, actualizas o valor destas.

P.S.: bah, tinhas que postar enquanto estava a escrever :P

P.S. 2: grrrrrrrrrr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol, desculpa foi sáo para alterar umas coisitas, então ficava algo do genero:

max=v[1];
min =v[1];  
for (i=v[1];i<=v[14]; i++)
{
if(i>max)
max=i;
else if (i<max)
min=i;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

normalmente os arrays são preenchidos a partir da posição 0...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

normalmente os arrays são preenchidos a partir da posição 0...

Sim eu sei, mas o array da posição 0 eu estou a usalo para uma classe e dai n entrar na corrida.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

normalmente os arrays são preenchidos a partir da posição 0...

Sim eu sei, mas o array da posição 0 eu estou a usa-lo para uma classe e dai n entrar na corrida. :cheesygrin:

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O P.S. era para o Rui Carlos :D

Era quase isso... como disse o Rui, tens que começar no índice 0, e rever esse ciclo for... não estás a percorrer as posições do array, mas a começar no 1º valor e a incrementá-lo. Tens que utilizar o i como índice e comparar lá dentro o maior e o menor com v[ i ]. E estás a comparar duas vezes com o max, em vez de max e min.

P.S. xiça, que isto hoje é só interregnos entre escrever e mandar o post...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pelas dicas, já esta esta parte a funcionar.

Agora tenho outro problema que deve ser mais fácil de resolver, o problema é o seguinte:

tenho uns calculos e nesses calculos alguns valores são float, ex: tenho 2.1 e quero que isso seja arredondado para 3.Qual a função que posso utilizar para me arredondar os valores?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora