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

Iniciante em C - dúvida com uma tarefa


HuckBoy

Pergunta

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

int main (void)

{
	
	int quant_sal=0,salario_1000=0,soma=0,maior=0;
	float salario=1;
	
	printf("Insira o salario: ");
	scanf("%f",&salario);
	
	maior=salario;
	
	while(salario>=1){

		soma=soma+salario;
		
		if(salario<=0){
			printf("Salario invalido");
		}
		
		if(salario>1000){
			salario_1000++;
		}

		if(salario>maior){
			maior=salario;
		}
		
		
		

		printf("Insira o salario: ");
		scanf("%f",&salario);

	}
		
	printf("A media de salario e: %.1f\n",soma/salario);
	printf("O maior salario e: %d\n",maior);
	printf("Salario acima de 1000 e: %d\n",salario_1000);

	system("pause");
	return 0;
	
}

 

A dúvida é a seguinte: se o usuário digitar um valor negativo ele não entrar no cálculo para resultado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá. Seu código está com alguns erros e por isso não está funcionando. A maneira para saber o maior salario não está correta e tbém a maneira para se obter a média dos salário tbém não.

Outra coisa é q sua condição do while não é a mais adequada, pois assim cai em loop infinito caso o usuário digite apenas salários com valores positivos

Fiz um código rapidinho para resolver essas questões bem como para evitar que um salário com o valor negativo seja calculado junto com a média. No exemplo q fiz criei um vetor de salário para tornar mais fácil o cálculo. A minha solução não está das melhores, já vou adiantar. Para evitar q um valor negativo seja calculado junto na média usei um do/while para forçar o usuário a passar um valor positivo para o salário.

De qualquer forma de uma olhada no código e vê se ajuda:

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

int main (void)

{
	int i = 0;
	char *limparBuffer;
	int quant_sal = 3, salario_1000=0, maior=0;
	float soma = 0;
	float salario[20];
	
	for (i = 0; i < quant_sal; i++)
	{
		printf("\nInsira o salario: ");
		scanf("%f", &salario[i]);
		scanf("%c", &limparBuffer); // esse linha é ignorada pelo compilador, serve apenas para limpar o buffer de entrada
		
		maior = salario[0];

		
	do
	{
		if (salario[i] <= 0)
		{
			printf("Salario invalido\n");
			printf("\nInsira o salario: ");
			scanf("%f", &salario[i]);
			scanf("%c", &limparBuffer);
		}
		
	} while (salario[i] <= 0);
	
	
		soma += salario[i];
	
		if(salario[i] > 1000){
			salario_1000++;
		}

		if(salario[i] > maior){
			maior = salario[i];
		}
	}
		
	printf("\nA media de salario e: %.2f\n", (soma / i));
	printf("O maior salario e: %d\n", maior);
	printf("Salario acima de 1000 e: %d\n", salario_1000);

	system("pause");
	
	return 0;
	
}

Se resolver seu problema avise. Caso contrário é só postar a dúvida novamente, ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá. Não se preocupe em encontrar dificuldade em um exercício assim pois, como você mesmo disse, inda tá iniciando seus estudos e isso é mais q normal acontecer.

Se tiver alguma dúvida sobre o modo como eu fiz o exercício é só perguntar, ok?

Bons estudos!

 

Também coloquei o nome da minha variável do tipo ponteiro como *limparBuffer apenas p deixar o código mais intuitivo.

Pode colocar o nome q quiser se entender o por quê desse comando

Vou só mandar um abraço p poder marcar aqui embaixo p seguir esse tópico hehe

Link para o comentário
Compartilhar em outros sites

  • 0

Segue abaixo um exercício bem interessante para saber o menor e o maior valor de um vetor. No caso, menor nota e maior nota:

É bom p/ ir praticando:

#include "stdio.h"


int main()
{
	int i;
	float notas[] = { 7.5, 8.0, 9.5, 5.5, 7};
	float soma = 0;
	float maiorNota, menorNota;
	
	maiorNota = notas[0];
	menorNota = notas[0];
	
	for (i = 0; i < 5; i++)
	{
		soma += notas[i];
		
		// Buscando ou atualizando menor valor
		if (notas[i] < menorNota)
		{
			menorNota = notas[i];
		}
		
		// Buscando ou atualizando maior valor
		if (notas[i] > maiorNota)
		{
			maiorNota = notas[i];
		}
		
	}
	
	printf("\nMaior nota: %.2f", maiorNota);
	printf("\nMenor nota: %.2f", menorNota);
	printf("\nMedia: %.2f", soma / i);
	
	
	return 0;
}

 

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