Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alan Guimarães

trabalho

Recommended Posts

Boa tarde,

Sou novo aqui no fórum, gostaria de uma ajuda de vocês para tentar fazer esse código que estou meio confuso,

 

© Escreva um código de exemplo que leia um arquivo texto contendo, como primeira informação, a quantidade de notas (um valor inteiro) e em seguida as notas. O programa deve ler essas notas, calcular a m´edia, bem como determinar a menor e a maior nota da lista. Ao final, o programa deve gerar um arquivo de sa´ıda contendo a m´edia, a menor e a maior nota encontradas. Por exemplo, imagine que o arquivo de entrada contenha os seguintes dados: 5, 3.6, 5.8, 10.0, 0.9, 7.4 O arquivo de saída deve conter os seguintes dados: 5.54, 0.9 ,10.0.

 

Agradeço se puderem ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E o que você não está conseguindo fazer? Temos uma regra aqui sobre postar exercícios e esperar código pronto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se estou no caminho certo... =)

 

 

#include<stdio.h>
void main(void)
{
float notas[5][1], numero ; //Criando um vetor e uma variável temporária
int linha = 0; // Contador para o índice do vetor
char texto[ ] = " /home/alan/Documentos/texto.txt" ,texto2[] = "/home/alan/Documentos/texto2.txt";
FILE *arq;
FILE *arq2;
arq = fopen (texto, "r"); //abrindo o arquivo de texto
if((arq = fopen(texto,"r"))==NULL) //verificando se abriu com sucesso
  {
   printf("\nNão foi possível ler este arquivo.");
}else
 {
  while( (fscanf(arq,"%f",&numero))!EOF ) //Chegou ao fim? então, numero recebe valor daquela linha
  {
                      printf("%,if\n",numero);//imprimir na tela pra ver se está funcionando
                      notas[linha][0] = numero; //vetor recebe valor da variável a cada quebra de linha
                      linha++;//indice é incrementado
         }
}
arq = fopen(texto2,"w");//cria um novo arquivo
if((arq2 = fopen(texto2,"m"))==NULL) //verificando se abriu com sucesso
{
 prinft("\nNão foi possível ler este arquivo.");
}else
  {
  fprintf(arq2,"%, if\n%,if\n",notas[0][0],notas[1][0].notas[2][0]);//colando o que foi copiado no arquivo i
  }
fclose(arq);
fclose(arq2);
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro: main não tem retorno void. É int.

float notas[5][1]
Cria um array multidimensional de 5 por 1 (pense numa matriz com 5 linhas e 1 coluna). O que você quer é um array simples: float notas[5].

Seu while está errado: != EOF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que tem uma forma reduzida pra isso...

 

#include <stdio.h>

#include <stdlib.h>

#include<float.h>

 

//Limite no tamanho das linhas do arquivo de entrada

#define INPUT_LINE_SIZE_LIMIT 10

 

//Nome dos arquivo de entrada e saida

//TODO: Ler a partir dos argumentos do programa

char *inputFilename = "D:/Trabalho/tchola/entrada.txt";

char *outputFilename = "D:/Trabalho/tchola/saida.txt";

 

int main()

{

printf("Programa para calcular os valores medio,maximo e minimo\n");

 

//----------------------------------------------------------------------------------------

// Abre o arquivo de entrada

FILE *inputFileHandle = fopen(inputFilename, "r");

 

if (inputFileHandle == NULL) {

printf("O arquivo de entrada '%s' nao foi encontrado\n", inputFilename);

return 0;

}

else {

printf("Processando o arquivo de entrada '%s'\n", inputFilename);

}

 

//----------------------------------------------------------------------------------------

// Processa a primeira linha (quantidade de linhas de dados no arquivo)

 

// Buffer para leitura do arquivo de entrada

char buffer[iNPUT_LINE_SIZE_LIMIT];

 

fgets(buffer, INPUT_LINE_SIZE_LIMIT, inputFileHandle);

if (buffer == NULL) {

printf("O arquivo de entrada '%s' nao contem nenhuma linha\n", inputFilename);

return 0;

}

 

long dataCount = strtol(buffer,NULL,10);

printf("O arquivo de entrada contem %u linhas de dados\n", dataCount);

 

//----------------------------------------------------------------------------------------

// Processa os registros de dados

 

// Aloca um array de doubles para os registros

double *dataArray = (double *)malloc(sizeof(double) * dataCount);

 

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

fgets(buffer, INPUT_LINE_SIZE_LIMIT, inputFileHandle);

dataArray = strtod(buffer, NULL);

 

printf("%.2f \n", dataArray);

}

 

fclose(inputFileHandle);

 

//----------------------------------------------------------------------------------------

// Calcula os valores medio, maximo e minimo

 

double averageValue=0,maxValue=DBL_MIN,minValue=DBL_MAX;

 

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

 

double value = dataArray;

 

averageValue += value;

 

if (value > maxValue) {

maxValue = value;

}

 

if (value < minValue) {

minValue = value;

}

 

}

 

averageValue = averageValue / dataCount;

 

printf("Valor medio %.2f \n", averageValue);

printf("Valor minimo %.2f \n", minValue);

printf("Valor maximo %.2f \n", maxValue);

 

 

//----------------------------------------------------------------------------------------

// Escreve o arquivo de saida

FILE *outputFileHandle = fopen(outputFilename, "w");

 

if (outputFileHandle == NULL) {

printf("O arquivo de saida '%s' nao pode ser criado\n", outputFilename);

return 0;

}

 

fprintf(outputFileHandle, "%.2f\n", averageValue);

fprintf(outputFileHandle, "%.2f\n", minValue);

fprintf(outputFileHandle, "%.2f\n", maxValue);

 

fclose(outputFileHandle);

 

 

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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