Ir ao conteúdo

Posts recomendados

Postado

Preciso fazer o seguinte:

após o processamento de entrada, seu programa deverá imprimir N linhas apontando o tempo de espera de cada tarefa. Logo após deverá imprimir o tempo médio de espera calculado com base nas N tarefas computadas pelo escalonador.

o que eu consegui fazer:

 

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


int calculamedia(char *tarefa, int n){
	int i, tempo = 0, inicio, fim;
	float media, soma = 0;

	for(i=0; i<n; i++){
		inicio = tempo;
		tempo += soma;
		soma = fim;
		fim = tempo;

	}

	for(i=0 ; i<n; i++){
		printf("%d -> %f\n", n,soma);
	}


	printf("\n");

	media = soma/n;
	printf("TME = %.2f\n\n", media);
}



int main(int argc, char **argv){
	int n = -1, i = 0;
	char tarefa[32];


	scanf("%d", &n);
	printf("%d\n", n);

	for(i=0; i<n; i++){
		scanf("%s", tarefa);
		printf("%s\n", tarefa);
	}

	printf("\n");

	calculamedia(tarefa, n);

	
	return EXIT_SUCCESS;

 

Porém falta algo, preciso associar a minha entrada que será feita através do meu console a minha função calculamedia() para conseguir realizar o calculo

Exemplo de entrada:

3
1#2#06#3
2#6#08#2
3#8#10#1


Exemplo de saída:
1->0
2->2
3->8

TME = 3.33

Postado

Você parece estar complicando algo simples e se afastando da solução :( 

 

Escreva em torno dos dados.

 

Eis o início:

 

2 horas atrás, BRUNA2 disse:

Exemplo de entrada:

3
1#2#06#3
2#6#08#2
3#8#10#1

 

Com isso e mais o título deste tópico está claro que deve ler isso de um arquivo, que é muito mais simples que ler do teclado onde tudo pode sair errado. 

 

Só que

  • você está lendo do teclado e usando scanf() que é problemática para ler do teclado
  • você sequer testa o retorno de scanf() para ver se leu algo
  • não está fazendo nada para processar os dados e sequer usou o separador '#' para separar os valores na entrada, como está mostrando no exemplo...

E quanto à saída?
 

Exemplo de saída:
1->0
2->2
3->8

TME = 3.33

 

Pois é: no exemplo a média é 3.33, um número decimal, claro. Só que você escreve
 

    int calculamedia(char *tarefa, int n);

 

Se sua função retorna um int como espera que ela retorne por exemplo 3.33 ?? Que tal declarar como double calculamedia()?

 

    printf("\n");
    calculamedia(tarefa, n);

 

pois é: um printf() que não imprime nada e depois chama a função que calcula a média mas não usa o int que ela retorna (como eu disse, média é double ou float, tem ponto decimal. Veja seu exemplo, não tem sentido retornar um int) e o cáclulo se perde.
 

 

2 horas atrás, BRUNA2 disse:

preciso associar a minha entrada que será feita através do meu console a minha função calculamedia() para conseguir realizar o calculo

 

Pois é... suponha que tivesse declarado o certo, 

 

    double calculamedia(char *tarefa, int n);

 

E aí poderia escrever por exemplo

 

    printf( "A media calculada foi %.2f\n", calculamedia(tarefa, n) );

 

Você tem um livro? Já escreveu outros programas? 

 

Declarou tarefas como char[32], 32 letrinhas. tarefa não foi uma boa escolha para o nome, porque ao que parece são tempos em segundos ou alguma outra unidade. 

 

E cada linha que você lê traz mais de um tempo, 4 deles na verdade...

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

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...