HuckBoy Postado Dezembro 19, 2017 Denunciar Share Postado Dezembro 19, 2017 #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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Dezembro 31, 2017 Denunciar Share Postado Dezembro 31, 2017 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Dezembro 31, 2017 Denunciar Share Postado Dezembro 31, 2017 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Dezembro 31, 2017 Denunciar Share Postado Dezembro 31, 2017 Só corrigindo uma coisa q coloquei errada no meu código. A linha maior = salario[0]; deve ficar antes do for, senão dá erro. E tirada, claro, de dentro do for Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Dezembro 31, 2017 Denunciar Share Postado Dezembro 31, 2017 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
HuckBoy
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
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.