Ir para conteúdo
Fórum Script Brasil
  • 0

(c++) olá, estou com problemas para trabalhar com dados de um arquivo ".txt" usando ifstream


vitor bentemiller

Pergunta

//Escreva um programa em C++ que, a partir de um arquivo de entrada denominado “entrada.txt”,
//leia 50 valores e exiba na tela as seguintes informações: a) o menor dos números, b) o maior dos
//números e c) a soma de todos os números.


#include <fstream>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main ()
{
ifstream arquivo ("entrada.txt");
string dados;
if (arquivo.fail())
{
cout << "O arquivo entrada.txt não esta no diretorio\n";
exit (0);
}
if (arquivo)
{
while (arquivo >> dados)
cout << dados << endl;

//preciso imprimir o maior e o menor dos 50 numeros do arquivo.

 


arquivo.close();


}
return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

tal como você tem da a entender que estão separados por espaço...

while (arquivo >> dados)
cout << dados << endl; 

a) o menor dos números:

você precisa de uma variável na qual você deve inicializar com o maior valor possivel ao que possa ser armazenado em um int. logo ir guardando cada int lido caso seja menor que a tal variável.
 

#include<iostream>
#include<climits>
using namespace std;

int main(){
    int n = INT_MAX;
    int aux = 3000;
    cout << "Antes" << n << endl;
    cout << "Antes" << aux << endl;

    //n é maior que aux, vai ser atribuido o valor de aux a n
    if ( aux < n ){
        n = aux;
    }
    cout << "Depois" << n << endl;
    cout << "Depois" << aux << endl;

    aux = 5000;

    //agora n é menor que aux, n vai acontecer nada
    if ( aux < n ){
        n = aux;
    }
    cout << "Agora" << n << endl;
    cout << "Agora" << aux << endl;

    aux = 10;

    //aux é menor que n... sempre que isso acontecer o valor de aux vai ser guardado em n "anotando" o menor numero sempre.
    if ( aux < n ){
        n = aux;
    }
    cout << "Fim" << n << endl;
    cout << "Fim" << aux << endl;
    return 0;
}

é dizer... cada vez que ler um numero guarda ele na aux e compara ele com n para ver si aux é menor, caso for assim você copia o aux no n. Por isso precisa inicializar n com o maior valor possivel, isso acontece quando fazemos int n = INT_MAX. O INT_MAX é o maior valor que cabe em um int, se fizer um ++ ao n você verá que passa a ser negativo. também tem INT_MIM etc. você pode ver aqui exemplos: https://www.cplusplus.com/reference/climits/

 

b) o maior dos números
o maior dos números é a mesma coisa... só que desta vez com INT_MIN ou simplesmente atribuindo 0 ao n. Tome cuidado porque si tiver números negativos melhor usar INT_MIN, e em caso de n ter negativos talvez inicializando n com 0 seja suficiente. Dica.. se no arquivo n tiver numeros negativos talvez seja melhor usar unsigned int n em vez de int... fica mais "profissional".

tenta ai e me diz como foi.
 

c) a soma de todos os números.
A soma é o mais fácil... você precisa de uma variável chamada somatória do tipo int que deve ser inicializado e cada vez que ler um numero do arquivo você deve fazer:
n = n+aux;

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...