Ir ao conteúdo

Posts recomendados

Postado
int   idade,sexo,sexo_masculino=0, sexo_feminino=0,habitantes, id_fem=0, id_masc=0;
    float conta=0,soma=0,mediaM,mediaF,mediaid, salario,
          sal_masc=0,sal_fem=0, quant_fem=0;
    char  ch;
    int idade_menorsalario, idade_maiorsalario;
    char sexo_menorsalario, sexo_maiorsalario;
    float menor_salario = 0, maior_salario=0;
    

 

Esse trecho acima está claro para você? parece ter 11 variáveis float, quando não precisava de nenhuma., já que mesmo o salário é int e as médias são apenas valores de saída. E está uma bagunça para ler. 

 

Imagino que achou sem importância o que eu escrevi. Só que seu programa não funcionou ainda 🤔 talvez por isso

 

Como eu disse antes, escreva seu programa em torno dos dados, e:

 

7 horas atrás, arfneto disse:
  • Use nomes mais significativos.
  • Se vai apenas mostrar a média não precisa das variáveis.
  • São 14 valores então provavelmente falta algo
  • inicialize TODAS suas variáveis.
  • use uma variável por linha. É o mesmo preço. E ajuda pra caramba.

 

Veja essas declarações, direto do enunciado e considerando que salários e idades não podem ser negativos:
 


    // (a) media dos salarios por sexo
    unsigned long soma_sal_mas = 0;
    unsigned long soma_sal_fem = 0;
    unsigned long contagem_fem = 0;
    unsigned long contagem_mas = 0;
    // (b) maior e menor salario por sexo
    unsigned long maior_sal_fem = 0;
    unsigned long menor_sal_mas = 0;
    // (c) media das idades, por sexo
    unsigned long soma_id_mas = 0;
    unsigned long soma_id_fem = 0;
    // (d) quantidade de mulheres
    // (e) idade e sexo de quem tem maior e menor salario
    unsigned long maior_sal_sexo = 0;
    unsigned long maior_sal_idade = 0;
    unsigned long menor_sal_sexo = 0;
    unsigned long menor_sal_sexo = 0;

    // para ler os valores
    int salario = 0;
    int idade = 0;
    char sexo = "";

    char resp = 0;

 

Não parece mais fácil de ler? Acha que é o suficiente? Escreva em torno dos dados

 

 

  • Curtir 1
  • Obrigado 1
Postado

@Mariana Fernandes    a Questão  b  ,  pede para mostrar o maior e o menor salário  masculino e feminino ,  então você precisa fazer uma comparação a cada salário que for inserido ,  para saber se esse salário atual é maior ou menor que o salário anterior  ,  e então , como você está fazendo usando apenas variáveis simples ,  que têm apenas uma dimensão ,  você precisará de mais Quatro variáveis dessas  , sendo uma para o maior salário masculino e outra para o menor salário masculino , e outra para o maior salário feminino e outra para o menor salário feminino ,  e  inclua essas linhas nessas posições do seu código   :

int main()
{
    float conta=0 , soma=0, mediaM , mediaF , mediaid ,
          sal_masc=0       , sal_fem=0  , quant_fem=0 ,
          menor_salario = 0, maior_salario=0, salario ,
          menor_sal_masculino=0, menor_sal_feminino=0 ,
          maior_sal_masculino=0, maior_sal_feminino=0 ;
    char  sexo_menorsalario    , sexo_maiorsalario,ch ;
    int   idade_menorsalario   , idade_maiorsalario   ,
          idade,sexo,sexo_masculino=0, sexo_feminino=0,
          habitantes           , id_fem=0 , id_masc= 0;
    do
    {

e depois de pegar um novo salário , coloque assim  :

if(sexo == 1)
{
    if(sexo_masculino == 0)
        {
            menor_sal_masculino = salario;
            maior_sal_masculino = salario;
        }
        if(maior_sal_masculino < salario)maior_sal_masculino = salario;
        if(menor_sal_masculino > salario)menor_sal_masculino = salario;

e essas também  :

if(sexo == 2)
{
    if(sexo_feminino == 0)
    {
        menor_sal_feminino  = salario;
        maior_sal_feminino  = salario;
    }
    if(maior_sal_feminino < salario)maior_sal_feminino = salario;
    if(menor_sal_feminino > salario)menor_sal_feminino = salario;

e no final na hora de escrever os resultados , coloque essas aqui :

printf("O Maior salario Masculino eh --------------: %.2f\n",maior_sal_masculino);
printf("O Menor salario Masculino eh --------------: %.2f\n",menor_sal_masculino);
printf("O Maior salario feminino  eh --------------: %.2f\n",maior_sal_feminino );
printf("O Menor salario feminino  eh --------------: %.2f\n",menor_sal_feminino );

e seria melhor usar variáveis que armazenam mais de hum dado nela  , que são os vetores .

  • 4 semanas depois...
Postado

O tópico é bem antigo, mas só para registrar uma solução segue essa:

Spoiler

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


typedef struct {
    int idade;
    char sexo;
    double salario;
} Habitante;

typedef struct {
    int quantidadeHabitanteFeminino;
    int quantidadeHabitanteMasculino;
    int quantidadeHabitanteTotal;

    double mediaIdadeFeminino;
    double mediaIdadeMasculino;

    double mediaSalarioFeminino;
    double mediaSalarioMasculino;

    Habitante habitanteMaiorSalarioFeminino;
    Habitante habitanteMaiorSalarioMasculino;

    Habitante habitanteMenorSalarioFeminino;
    Habitante habitanteMenorSalarioMasculino;
} Dados;


Habitante getHabitante();

void imprimirDados(Dados dados);

void limparBuffer();


int main() {
    Dados dados = {
            0, 0, 0,
            0.0, 0.0,
            0.0, 0.0,
            {0, ' ', (double) INT_MIN}, {0, ' ', (double) INT_MIN},
            {0, ' ', (double) INT_MAX}, {0, ' ', (double) INT_MAX}
    };

    Habitante habitante = {0, ' ', 0.0};
    char resposta = 'N';

    do {
        do {
            // Pede os dados enquanto eles forem inválidos
            printf("Pretende inserir mais dados? [ S / N ]: ");
            resposta = (char) getchar();
            resposta = (char) toupper(resposta);
            limparBuffer();
        } while (resposta != 'S' && resposta != 'N');

        if (resposta == 'S') {
            habitante = getHabitante();

            // TODO Terminar essa parte
            if (habitante.sexo == 'F') {
                dados.quantidadeHabitanteFeminino += 1;
                dados.mediaIdadeFeminino += habitante.idade;
                dados.mediaSalarioFeminino += habitante.salario;

                if (habitante.salario > dados.habitanteMaiorSalarioFeminino.salario) {
                    dados.habitanteMaiorSalarioFeminino = habitante;
                }

                if (habitante.salario < dados.habitanteMenorSalarioFeminino.salario) {
                    dados.habitanteMenorSalarioFeminino = habitante;
                }
            } else {
                dados.quantidadeHabitanteMasculino += 1;
                dados.mediaIdadeMasculino += habitante.idade;
                dados.mediaSalarioMasculino += habitante.salario;

                if (habitante.salario > dados.habitanteMaiorSalarioMasculino.salario) {
                    dados.habitanteMaiorSalarioMasculino = habitante;
                }

                if (habitante.salario < dados.habitanteMenorSalarioMasculino.salario) {
                    dados.habitanteMenorSalarioMasculino = habitante;
                }
            }

            dados.quantidadeHabitanteTotal =
                    dados.quantidadeHabitanteFeminino +
                    dados.quantidadeHabitanteMasculino;
        }
    } while (resposta != 'N');

    // Calcula as médias femininas
    if (dados.quantidadeHabitanteFeminino > 0) {
        dados.mediaIdadeFeminino = dados.mediaIdadeFeminino / dados.quantidadeHabitanteFeminino;
        dados.mediaSalarioFeminino = dados.mediaSalarioFeminino / dados.quantidadeHabitanteFeminino;
    } else {
        dados.mediaIdadeFeminino = 0.0;
        dados.mediaSalarioFeminino = 0.0;
    }

    // Calcula as médias masculinas
    if (dados.quantidadeHabitanteMasculino > 0) {
        dados.mediaIdadeMasculino = dados.mediaIdadeMasculino / dados.quantidadeHabitanteMasculino;
        dados.mediaSalarioMasculino = dados.mediaSalarioMasculino / dados.quantidadeHabitanteMasculino;
    } else {
        dados.mediaIdadeMasculino = 0.0;
        dados.mediaSalarioMasculino = 0.0;
    }

    imprimirDados(dados);
    return EXIT_SUCCESS;
}


Habitante getHabitante() {
    Habitante habitante = {0, ' ', 0.0};
    int lido = 0;

    printf(">> Inserir dados \n");

    do {
        printf("Digite a idade: ");
        lido = scanf("%d", &habitante.idade);

        if (habitante.idade < 0) {
            habitante.idade *= -1;
        }

        limparBuffer();
    } while (lido != 1);

    do {
        printf("Digite o sexo: ");
        lido = scanf("%c", &habitante.sexo);
        habitante.sexo = (char) toupper(habitante.sexo);
        limparBuffer();
    } while (lido != 1 || habitante.sexo != 'F' && habitante.sexo != 'M');

    do {
        printf("Digite o salario: R$ ");
        lido = scanf("%lf", &habitante.salario);

        if (habitante.salario < 0.0) {
            habitante.salario *= -1.0;
        }

        limparBuffer();
    } while (lido != 1);

    return habitante;
}

void imprimirDados(Dados dados) {
    printf(">> Dados \n");
    printf("-------------------------------------------------------------------------------- \n");
    printf("Total de habitantes \n");
    printf(" Femininas: %d \n", dados.quantidadeHabitanteFeminino);
    printf("Masculinos: %d \n", dados.quantidadeHabitanteMasculino);
    printf("     Total: %d \n", dados.quantidadeHabitanteTotal);
    printf("\n");
    printf("Media de idade \n");
    printf(" Femininas: %.2f \n", dados.mediaIdadeFeminino);
    printf("Masculinos: %.2f \n", dados.mediaIdadeMasculino);
    printf("\n");
    printf("Media de salario \n");
    printf(" Femininas: %.2f \n", dados.mediaSalarioFeminino);
    printf("Masculinos: %.2f \n", dados.mediaSalarioMasculino);
    printf("\n");
    printf("Maior salario \n");
    printf(" Feminina: {idade=%d, sexo=%c, salario=R$ %.2f} \n", dados.habitanteMaiorSalarioFeminino.idade, dados.habitanteMaiorSalarioFeminino.sexo, dados.habitanteMaiorSalarioFeminino.salario);
    printf("Masculino: {idade=%d, sexo=%c, salario=R$ %.2f} \n", dados.habitanteMaiorSalarioMasculino.idade, dados.habitanteMaiorSalarioMasculino.sexo, dados.habitanteMaiorSalarioMasculino.salario);
    printf("\n");
    printf("Menor salario \n");
    printf(" Feminina: {idade=%d, sexo=%c, salario=R$ %.2f} \n", dados.habitanteMenorSalarioFeminino.idade, dados.habitanteMenorSalarioFeminino.sexo, dados.habitanteMenorSalarioFeminino.salario);
    printf("Masculino: {idade=%d, sexo=%c, salario=R$ %.2f} \n", dados.habitanteMenorSalarioMasculino.idade, dados.habitanteMenorSalarioMasculino.sexo, dados.habitanteMenorSalarioMasculino.salario);
    printf("-------------------------------------------------------------------------------- \n");
}

void limparBuffer() {
    while (getchar() != '\n');
}

 

 

  • Curtir 2

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!