Ir ao conteúdo
  • Cadastre-se

C++ Problema na resolução de um exercício


Luana_2

Posts recomendados

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;
}  

 

Link para o comentário
Compartilhar em outros sites

17 minutos atrás, Luana_2 disse:

mediasal= somasal/contsal;/*Será dividida a soma dos salários pelo contador dos salários,                                             obtendo a média dos laários*/

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

 

18 minutos atrás, Luana_2 disse:

mediasal= somasal/contsal;/*Será dividida a soma dos salários pelo contador dos salários,                                             obtendo a média dos laários*/

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

 

20 minutos atrás, Luana_2 disse:

 while (repeat =='s' || 'S'){

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

 

qualquer coisa estamos aqui.

Link para o comentário
Compartilhar em outros sites

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.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Luana_2 disse:

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.

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.

33 minutos atrás, Luana_2 disse:

if(repeat=='N'||'n'){                                          break;                                      }

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.

Link para o comentário
Compartilhar em outros sites

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❤

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!