Ir ao conteúdo

Posts recomendados

Postado

Olá, eu estou com um problema com o seguinte exercicio:A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário
         e o número de filhos. A prefeitura deseja saber:
            · a média do salário da população;
            · a média do número de filhos;
            · o maior salário;
            · a porcentagem de pessoas com salários de até R$ 1000,00
        Para finalizar a leitura digite um salário igual a zero.

 

sempre que eu rodo o programa os resultados que ele mostra estão totalmente errados e eu não consegui localizar o erro.

 

 

 

 

 

#include <stdio.h>
#include <iostream>
#include <locale.h>
#include <cstdlib>


using namespace std;

int main (){
    
    system("color 0A");
    system("mode con:cols=99 lines=40");
        
        /*A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário
         e o número de filhos. A prefeitura deseja saber:
            · a média do salário da população;
            · a média do número de filhos;
            · o maior salário;
            · a porcentagem de pessoas com salários de até R$ 1000,00
        Para finalizar a leitura digite um salário igual a zero.*/
        
        setlocale (0, "Portuguese");
            double sal;
            int f;
            double mediasal;
            double mediaf;
            double porcent;
            int contsal;
            double somasal;
            double somamil;
            int contf;
            int somaf;
            double salmax;
            int hab;
            char repeat;
        
        
            while (repeat =='s' || 'S'){
            
                sal=1; //Variável idade será igualada a 1.
                f=0; //Variável cont será igualada a 0.
                mediasal=0;//Variável sal será igualada a 0.
                mediaf=0;//Variável mediasal será igualada a 0.
                porcent=0;
                contsal=0;//Variável somasal será igualada a 0
                somasal=0;//Variável somasal será igualada a 0.
                somamil=0;//Variável somasal será igualada a 0.
                contf=0;
                somaf=0;
                salmax=0;//Variável idmax será igualada a 0.
                hab=0;
            
                while(sal != 0){
                    
                    cout <<"\nDigite o salário:R$";
                    cin >> sal;
                    cout <<"\nDigite a quantidade de filhos:";
                    cin >> sal;
                    cout <<"\n---------------------------------------------------------------------------------------------------\n" << endl;
                    
                    contf=contf+1;// Contator de quantos filhos foram informados.
                    somaf=somaf+f;// Acumulador dos valores dos filhos informados.
                    
                    if(sal>salmax){
                        
                        salmax= sal;
                        
                    }
                        
                    if(sal<= 1000.00){ // Se salário for menor ou igual a 1000, será adicionado 1 ao contador.
                            
                        somamil=somamil+sal;//Acumulador dos valores dos salários informados.
                            
                    }
                    
                    hab=hab+1;
                        
                    }
                    
                mediasal= somasal/contsal;/*Será dividida a soma dos salários pelo contador dos salários,
                                            obtendo a média dos laários*/
                mediaf= somaf/contf;/*Será dividida a soma dos salários pelo contador dos salários,
                                            obtendo a média dos laários*/
                mediasal= somasal/contsal;/*Será dividida a soma dos salários pelo contador dos salários,
                                            obtendo a média dos laários*/
                porcent= (somamil*100)/hab;                                                    
                
                cout <<"\n---------------------------------------------------------------------------------------------------\n" << endl;
                cout <<"A média dos salários é de:" << mediasal << endl;
                cout << "Maior salário:" << salmax << endl;    
                cout << "A média dos filhos é de:" << mediaf << endl;
                cout <<"A porcentagem de pessoas com salário até R$1000.00 é de:" << porcent << endl;
            
                cout <<"\nDeseja utilizar o programa novamente<S/N>?:";
                cin >> repeat;
                
                if(repeat=='N'||'n'){
                    
                    break;
                    
                }
                cout << endl;
    
                }
                
        cout <<"\n---------------------------------------------------------------------------------------------------\n" << endl;
        cout <<"\n\n\tAperte ENTER.";
        
    system ("PAUSE>NULL");
    return 0;
}  

 

Postado
agora, KXSY disse:

você está fazendo uma divisão por zero (lembra da regrinha que aprendemos na pre escola?)

 

aqui também, somasal não está recebendo nada então ela permanece zero.

 

use do{}while, porque a logica aqui não está muito certa.

 

qualquer coisa estamos aqui.

ah, cara, muito obrigado. Meu professor não ensinou a usar o do while ainda, se eu utilizar é capaz de receber 0 nessa tarefa, pois ele mandou usar somente while. Muito obrigado mesmo.

Postado
2 horas atrás, KXSY disse:

então você poderia iniciar a variável repeat com s, dessa maneira


char repeat='S';

e no while fazer assim


while(repeat=='S'||repeat=='s')
{
}
/* Ou assim */
while(toupper(repeat)=='S')
{
}

No ultimo exemplo e preciso utilizar a biblioteca ctype.h


#include <ctype.h>

Se repeat for igual a 'n' não precisa quebra o while com o break, porque na próxima não vai ser executado.

outra modificação interessante seria tirar esse tanto de inicialização de variável e deixar só uma, dessa maneira


f=mediasal=mediaf=porcent=contsal=somasal=somamil=contf=somaf=salmax=hab=0;

Ou simplesmente refazer de novo, porque esse tanto de variável ai eu acho desnecessário.

Sim, mt brigado pela ajuda e pelas dicas, serão muito úteis❤

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