Ir ao conteúdo

Posts recomendados

Postado

Boa noite, eu tenho uma dúvida num exercício em que tenho de efetuar um programa em C++.

Enunciado:

Tendo por base os dados recolhidos com um inquérito aplicado aos habitantes de uma aldeia, são apresentados os resultados seguintes:
a) Média dos salários por sexo;
b) O maior e o menor salário por sexo;
c) A média das idades de ambos os sexos;
d) A quantidade de mulheres na região;
e) A idade e o sexo da pessoa que possui o maior e o menor salário.
O utilizador começa por inserir os dados como a idade, o sexo (M/F) e o salário, de cada um dos habitantes, terminando quando responder “n” à pergunta “Pretende inserir mais dados”.

Quem poder ajudar, agradecia.

  • Curtir 1
Postado

@Mariana Fernandes    Qual seu nível de conhecimento dessa Linguagem C++ ?  ,  e também  talvez você ainda não saiba , mas a Linguagem C++ não é a mesma coisa da Linguagem  C , apenas que o C++ aceita os comandos da Linguagem C  , mas o C++ é outra coisa ,  e esse código é bem complexo ,  seria para alguém com bastante experiência ,  e você pode fazer usando vetores , matrizes , mas melhor seria usar struct ou typedef , para armazenar os dados digitados ,  e após pressionar o n para terminar de inserir dados , você faz uma pesquisa no vetor para fazer os cálculos e escrever o resultado na tela usando cout , que é o comando do C++ para escrever na tela do console    .então faça seu código sobre esse exercício e poste ele aqui para vermos como está e em que podemos ajudar caso precise de alguma correção  ..

  • Membro VIP
Postado

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Postado
42 minutos atrás, GabrielLV disse:

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Eu fiz um código mas não o consigo acabar nem dá certo ao executar.

  • Curtir 1
Postado
2 horas atrás, devair1010 disse:

@Mariana Fernandes    Qual seu nível de conhecimento dessa Linguagem C++ ?  ,  e também  talvez você ainda não saiba , mas a Linguagem C++ não é a mesma coisa da Linguagem  C , apenas que o C++ aceita os comandos da Linguagem C  , mas o C++ é outra coisa ,  e esse código é bem complexo ,  seria para alguém com bastante experiência ,  e você pode fazer usando vetores , matrizes , mas melhor seria usar struct ou typedef , para armazenar os dados digitados ,  e após pressionar o n para terminar de inserir dados , você faz uma pesquisa no vetor para fazer os cálculos e escrever o resultado na tela usando cout , que é o comando do C++ para escrever na tela do console    .então faça seu código sobre esse exercício e poste ele aqui para vermos como está e em que podemos ajudar caso precise de alguma correção  ..

Sim, tem razão, é linguagem C mas uso o Dev- C++ para fazer o programa.

Isto é o que eu consegui fazer:

#include <stdio.h>
#include <stdlib.h>
main () {
int idade,sexo feminino, sexo masculino, habitantes,i, maior, menor, maior1, menor2;
float soma=0,media, salario;
for (i=1;i<=idade;i++){
printf("Diga sua idade: \n");
scanf("%d",&idade);
printf("Diga seu sexo (1. Masc, 2. Fem): \n");
scanf("%d",&sexo);
printf("Diga o seu salario : \n");
scanf("%f",&salario);
while(n!= printf"Pretende inserir mais dados")
soma=soma+n;
media=(float)soma/i;
printf("A media dos salários do sexo feminino: %d \n",media);
printf("A media dos salários do sexo masculino: %d \n",media);
printf("O maior e menor salario do sexo feminino: %d, %d \n",maior,menor);
printf("O maior e menor salario do sexo masculino: %d, %d \n",maior,menor);
printf("A média das idades do sexo feminino: %d, %d \n");
printf("A média das idades do sexo masculino: %d, %d \n");
printf("A quantidade de mulheres na região: %d \n");
printf("A pessoa com menor salário, o seu sexo e %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d",maior1);
printf("A pessoa com maior salario, o seu sexo e %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d",menor2);
}

 

  • Obrigado 1
Postado

@Mariana Fernandes    seu código não está compilando , por que você incluiu um printf dentro do while , assim não funciona na Linguagem c , e os cálculos precisar ser melhorados também , e outra coisa é que precisa fazer a identação do código , para facilitar detectar erros ,  e seu código corrigido para compilar , poderias ser assim  :

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_feminino=0,
          sexo_masculino=0,habitantes,
          f,j,i,w,maior, menor, maior1,
          menor2;
    float soma=0,mediaM,mediaF, salario,
          sal_fem=0, sal_masc=0;
    char  c;
    do{
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        while(c=fgetc(stdin) != '\n');
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
            }
        }
        /*soma = soma + n;*/ // o que o  n  representa ?
        printf("Pretende inserir mais dados   S/N\n");
    }while( toupper((char)getch()) != 'N' );
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    printf("A media dos salários do sexo feminino -----: %.2f\n",mediaF);
    printf("A media dos salários do sexo masculino ----: %.2f \n",mediaM);
    printf("O maior e menor salario do sexo feminino --: %d, %d \n",maior,menor);// você Precisa ver o tipo  se é int ou float
    printf("O maior e menor salario do sexo masculino -: %d, %d \n",maior,menor);
    printf("A média das idades do sexo feminino -------: %d, %d \n");
    printf("A média das idades do sexo masculino ------: %d, %d \n");
    printf("A quantidade de mulheres na região --------: %d \n");
    printf("A pessoa com menor salário, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",maior1);
    printf("A pessoa com maior salario, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",menor2);
    printf("\n\n");
    int tempo = 20;
    printf("    Vai Fechar em ");
    for( w=20; w>-1; w-- )
    {
        for( j=0; j<60000; j++ )
            for( f=0; f<6000; f++ );
        printf("  %2d\b\b\b\b",w);
    }
    printf("\n\n\n");
    return 32768;
}

 e falta corrigir os restante para ficar como pede o enunciado   .

  • Curtir 1
Postado
2 horas atrás, devair1010 disse:

@Mariana Fernandes    seu código não está compilando , por que você incluiu um printf dentro do while , assim não funciona na Linguagem c , e os cálculos precisar ser melhorados também , e outra coisa é que precisa fazer a identação do código , para facilitar detectar erros ,  e seu código corrigido para compilar , poderias ser assim  :


#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_feminino=0,
          sexo_masculino=0,habitantes,
          f,j,i,w,maior, menor, maior1,
          menor2;
    float soma=0,mediaM,mediaF, salario,
          sal_fem=0, sal_masc=0;
    char  c;
    do{
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        while(c=fgetc(stdin) != '\n');
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
            }
        }
        /*soma = soma + n;*/ // o que o  n  representa ?
        printf("Pretende inserir mais dados   S/N\n");
    }while( toupper((char)getch()) != 'N' );
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    printf("A media dos salários do sexo feminino -----: %.2f\n",mediaF);
    printf("A media dos salários do sexo masculino ----: %.2f \n",mediaM);
    printf("O maior e menor salario do sexo feminino --: %d, %d \n",maior,menor);// você Precisa ver o tipo  se é int ou float
    printf("O maior e menor salario do sexo masculino -: %d, %d \n",maior,menor);
    printf("A média das idades do sexo feminino -------: %d, %d \n");
    printf("A média das idades do sexo masculino ------: %d, %d \n");
    printf("A quantidade de mulheres na região --------: %d \n");
    printf("A pessoa com menor salário, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",maior1);
    printf("A pessoa com maior salario, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",menor2);
    printf("\n\n");
    int tempo = 20;
    printf("    Vai Fechar em ");
    for( w=20; w>-1; w-- )
    {
        for( j=0; j<60000; j++ )
            for( f=0; f<6000; f++ );
        printf("  %2d\b\b\b\b",w);
    }
    printf("\n\n\n");
    return 32768;
}

 e falta corrigir os restante para ficar como pede o enunciado   .

Eu sei que o meu código tinha muitos erros porque eu dei esta matéria à pouco mais de duas semanas e só agora comecei agora programar e os exercícios (tal como este) do meu professor são muito exigentes.

Obrigado! Vou fazer as alterações no meu código e já lhe reenvio.

  • Curtir 1
Postado
3 horas atrás, devair1010 disse:

@Mariana Fernandes    seu código não está compilando , por que você incluiu um printf dentro do while , assim não funciona na Linguagem c , e os cálculos precisar ser melhorados também , e outra coisa é que precisa fazer a identação do código , para facilitar detectar erros ,  e seu código corrigido para compilar , poderias ser assim  :


#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_feminino=0,
          sexo_masculino=0,habitantes,
          f,j,i,w,maior, menor, maior1,
          menor2;
    float soma=0,mediaM,mediaF, salario,
          sal_fem=0, sal_masc=0;
    char  c;
    do{
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        while(c=fgetc(stdin) != '\n');
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
            }
        }
        /*soma = soma + n;*/ // o que o  n  representa ?
        printf("Pretende inserir mais dados   S/N\n");
    }while( toupper((char)getch()) != 'N' );
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    printf("A media dos salários do sexo feminino -----: %.2f\n",mediaF);
    printf("A media dos salários do sexo masculino ----: %.2f \n",mediaM);
    printf("O maior e menor salario do sexo feminino --: %d, %d \n",maior,menor);// você Precisa ver o tipo  se é int ou float
    printf("O maior e menor salario do sexo masculino -: %d, %d \n",maior,menor);
    printf("A média das idades do sexo feminino -------: %d, %d \n");
    printf("A média das idades do sexo masculino ------: %d, %d \n");
    printf("A quantidade de mulheres na região --------: %d \n");
    printf("A pessoa com menor salário, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",maior1);
    printf("A pessoa com maior salario, o seu sexo eh %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d\n",menor2);
    printf("\n\n");
    int tempo = 20;
    printf("    Vai Fechar em ");
    for( w=20; w>-1; w-- )
    {
        for( j=0; j<60000; j++ )
            for( f=0; f<6000; f++ );
        printf("  %2d\b\b\b\b",w);
    }
    printf("\n\n\n");
    return 32768;
}

 e falta corrigir os restante para ficar como pede o enunciado   .

Fiquei com algumas dúvidas.

Eu apenas dei duas bibliotecas (#include <stdio.h> e #include <stdlib.h>), o que significa c=fgetc(stdin) e toupper((char)getch()) != 'N'?

  • Curtir 2
Postado

@Mariana Fernandes

25 minutos atrás, Mariana Fernandes disse:

c=fgetc(stdin)

fgetc() lê o caractere presente na posição atual do fluxo interno. Após a leitura, a posição atual é avançada para o próximo caractere, e isso ocorre enquanto a condição do while for verdadeira:

4 horas atrás, devair1010 disse:

while(c=fgetc(stdin) != '\n');

Isso é só para limpar o buffer, então fgetc() lê algum caractere que entrou no buffer, no caso o '\n' ao se dar um ENTER (as variáveis lidas anteriormente são do tipo inteiro e ponto flutuante, e o '\n' não interessa na leitura e acaba ficando no buffer), e assim o buffer é limpo.

 

25 minutos atrás, Mariana Fernandes disse:

toupper((char)getch()) != 'N'

toupper() converte letras minúsculas para maiúsculas, e isso aí é a condição de um do/while:

4 horas atrás, devair1010 disse:

do{
    //
}while( toupper((char)getch()) != 'N' );

Então o loop persistirá enquanto a tecla que getch() retorna (em caixa alta) for diferente de um N maiúsculo.

 

26 minutos atrás, Mariana Fernandes disse:

Eu apenas dei duas bibliotecas (#include <stdio.h> e #include <stdlib.h>)

Precisa da conio para usar getch() e precisa da ctype para usar toupper().

  • Curtir 1
  • Obrigado 1
Postado

@Lucca Rodrigues    isso mesmo , apenas que esse   n  digitado no teclado pode ser maiúsculo ou minúsculo também  .

@Mariana Fernandes    isso mesmo que  @Lucca Rodrigues    disse  ,  você não precisa se preocupar com essas ou qualquer outra biblioteca , pois elas já existem no compilador e não interferem no seu código ,  apenas ajuda se você colocar algum comando de uma dessas bibliotecas , e se não usar , ela fica lá quietinha ,  no entanto não nenhum mistério nelas , basta você fazer uma pesquisa na internet e  saberá como usa-la , pois tem muitas informações sobre essa linguagem  c .

Postado
4 horas atrás, Lucca Rodrigues disse:

@Mariana Fernandes

fgetc() lê o caractere presente na posição atual do fluxo interno. Após a leitura, a posição atual é avançada para o próximo caractere, e isso ocorre enquanto a condição do while for verdadeira:

Isso é só para limpar o buffer, então fgetc() lê algum caractere que entrou no buffer, no caso o '\n' ao se dar um ENTER (as variáveis lidas anteriormente são do tipo inteiro e ponto flutuante, e o '\n' não interessa na leitura e acaba ficando no buffer), e assim o buffer é limpo.

 

toupper() converte letras minúsculas para maiúsculas, e isso aí é a condição de um do/while:

Então o loop persistirá enquanto a tecla que getch() retorna (em caixa alta) for diferente de um N maiúsculo.

 

Precisa da conio para usar getch() e precisa da ctype para usar toupper().

Ao usar apenas as duas bibliotecas que eu referi o que que eu posso substituir para dar o mesmo?

  • Curtir 1
Postado

@Mariana Fernandes 

23 minutos atrás, Mariana Fernandes disse:

o que que eu posso substituir para dar o mesmo?

Você entendeu para que servem aquelas coisas?

 

Devem existir umas 20 formas diferentes de limpar o buffer...

Você pode usar o seguinte:

scanf("%*c");

Note que o especificador usado é o de caracteres, porém, o mesmo conta com o subespecificador *, que faz com que os dados sejam lidos do fluxo, mas ignorados.

 

Quanto à função toupper(), ela é bem simples, e tudo o que você precisa fazer é verificar se o caractere é uma letra minúscula, ou seja, se está entre a e z (considerando a tabela ASCII), e caso esteja, subtrair 32 do valor decimal da letra em questão, pois a diferença entre letras maiúsculas e minúsculas em decimal na tabela ASCII é 32, veja:

image.png.5d36e6b97019d274b3c7068c767b51b3.png

 

E quanto à getch(), tudo o que ela faz é retornar o caractere digitado, você pode até usar scanf() no lugar, é só perguntar ao usuário se ele quer continuar a inserir mais dados e ler algo com scanf().

  • Curtir 1
  • Obrigado 1
Postado
5 minutos atrás, Lucca Rodrigues disse:

@Mariana Fernandes 

Você entendeu para que servem aquelas coisas?

 

Devem existir umas 20 formas diferentes de limpar o buffer...

Você pode usar o seguinte:


scanf("%*c");

Note que o especificador usado é o de caracteres, porém, o mesmo conta com o subespecificador *, que faz com que os dados sejam lidos do fluxo, mas ignorados.

 

Quanto à função toupper(), ela é bem simples, e tudo o que você precisa fazer é verificar se o caractere é uma letra minúscula, ou seja, se está entre a e z (considerando a tabela ASCII), e caso esteja, subtrair 32 do valor decimal da letra em questão, pois a diferença entre letras maiúsculas e minúsculas em decimal na tabela ASCII é 32, veja:

image.png.5d36e6b97019d274b3c7068c767b51b3.png

 

E quanto à getch(), tudo o que ela faz é retornar o caractere digitado, você pode até usar scanf() no lugar, é só perguntar ao usuário se ele quer continuar a inserir mais dados e ler algo com scanf().

Obrigado mas não percebi o que disse em relação à função toupper().

  • Curtir 1
Postado
25 minutos atrás, Lucca Rodrigues disse:

@Mariana Fernandes

Basicamente verifique se a letra é minúscula, e caso seja, converta-a para maiúscula.

Da uma olhada aqui:

 

Obrigado, já entendi! Deu me 78-110 (ch-32)

Posso enviar o código que fiz até agora do enunciado que mandei? Ainda só consegui fazer as alíneas a) e c) mas não estou a conseguir compilar e executar.

  • Curtir 1
Postado

@Mariana Fernandes

45 minutos atrás, Mariana Fernandes disse:

Deu me 78-110 (ch-32)

78 - 110 no caso é 'N' - 'n', e da no mesmo de 'A' - 'a' ou qualquer outra letra maiúscula - sua correspondente minúscula, 32 é o padrão.

 

45 minutos atrás, Mariana Fernandes disse:

só consegui fazer as alíneas a) e c)

 

b) O maior e o menor salário por sexo

Para o maior salário:

Crie duas variáveis do tipo float (chamarei de MR_masc e MR_fem) e logo após declarar, inicialize ambas com 0. Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é maior do que o valor da própria variável MR em questão, e caso seja, atribua este salário à variável MR, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de maior_idd_masc para sexo masculino e maior_idd_fem para sexo feminino). Este é o maior salário.

Para o menor salário:

Crie duas variáveis do tipo float (chamarei de MN_masc e MN_fem) e atribua o primeiro salário inserido à elas (pode ser com uma condicional if, imagino que para fazer a questão (a), você teve que incrementar dois contadores para calcular a média de ambos os sexos no final, então se contador_masc == 0 e o sexo for masculino, MN_masc = primeiro salário inserido para o sexo masculino, e se contador_fem == 0 e o sexo for feminino, MN_fem = primeiro salário inserido para o sexo feminino). Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é menor do que o valor da própria variável MN em questão, e caso seja, atribua este salário à variável MN, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de menor_idd_masc para sexo masculino e menor_idd_fem para sexo feminino). Este é o menor salário.

 

d) A quantidade de mulheres na região

Se você fez a questão (a), então a (d) está feita, pois é só incrementar um contador caso o sexo seja feminino.

 

e) A idade e o sexo da pessoa que possui o maior e o menor salário.

Para o maior salário:

Caso MR_masc > MR_fem, então MR_masc representa o maior salário, logo, o sexo é masculino e a idade é a maior_idd_masc, caso contrário, então MR_fem é que representa o maior salário, o sexo é feminino e a idade é a maior_idd_fem.

Para o menor salário:

Caso MN_masc < MN_fem, então MN_masc representa o menor salário, logo, o sexo é masculino e a idade é a menor_idd_masc, caso contrário, então MN_fem é que representa, o sexo é feminino e a idade é a menor_idd_fem.

  • Curtir 1
  • Obrigado 1
Postado
7 minutos atrás, Lucca Rodrigues disse:

@Mariana Fernandes

78 - 110 no caso é 'N' - 'n', e da no mesmo de 'A' - 'a' ou qualquer outra letra maiúscula - sua correspondente minúscula, 32 é o padrão.

 

 

b) O maior e o menor salário por sexo

Para o maior salário:

Crie duas variáveis do tipo float (chamarei de MR_masc e MR_fem) e logo após declarar, inicialize ambas com 0. Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é maior do que o valor da própria variável MR em questão, e caso seja, atribua este salário à variável MR, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de maior_idd_masc para sexo masculino e maior_idd_fem para sexo feminino). Este é o maior salário.

Para o menor salário:

Crie duas variáveis do tipo float (chamarei de MN_masc e MN_fem) e atribua o primeiro salário inserido à elas (pode ser com uma condicional if, imagino que para fazer a questão (a), você teve que incrementar dois contadores para calcular a média de ambos os sexos no final, então se contador_masc == 0 e o sexo for masculino, MN_masc = primeiro salário inserido para o sexo masculino, e se contador_fem == 0 e o sexo for feminino, MN_fem = primeiro salário inserido para o sexo feminino). Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é menor do que o valor da própria variável MN em questão, e caso seja, atribua este salário à variável MN, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de menor_idd_masc para sexo masculino e menor_idd_fem para sexo feminino). Este é o menor salário.

 

d) A quantidade de mulheres na região

Se você fez a questão (a), então a (d) está feita, pois é só incrementar um contador caso o sexo seja feminino.

 

e) A idade e o sexo da pessoa que possui o maior e o menor salário.

Para o maior salário:

Caso MR_masc > MR_fem, então MR_masc representa o maior salário, logo, o sexo é masculino e a idade é a maior_idd_masc, caso contrário, então MR_fem é que representa o maior salário, o sexo é feminino e a idade é a maior_idd_fem.

Para o menor salário:

Caso MN_masc < MN_fem, então MN_masc representa o menor salário, logo, o sexo é masculino e a idade é a menor_idd_masc, caso contrário, então MN_fem é que representa, o sexo é feminino e a idade é a menor_idd_fem.

Até agora tenho isto, alíneas a) e c) só que não está a compilar nem a executar.

#include <stdio.h>
#include <stdlib.h>
int main()
{
int   idade,sexo,sexo_feminino=0,
sexo_masculino=0,habitantes,maior, menor, maior1,
menor2, id_fem=0, id_masc=0;
float conta=0,soma=0,mediaM,mediaF,mediaid, salario, idade,
sal_fem=0, sal_masc=0, id_fem=0, id_masc=0;
char c
do{
printf("Diga sua idade : ");
scanf("%d",&idade);
printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
scanf("%d",&sexo);
printf("Diga o seu salario : ");
scanf("%f",&salario);
while scanf("%*c");
if(sexo == 1)
{
sal_masc += salario;
sexo_masculino++;
}
else
{
if(sexo == 2)
{
sal_fem += salario;
sexo_feminino++;
}
if(sexo == 1)
{
id_masc += idade;
sexo_masculino++;
}
else
{
if(sexo == 2)
{
id_fem += idade;
sexo_feminino++;
}
}
printf("Pretende inserir mais dados   S/N\n");
}while(ch-32((char)scanf()) != 'N' );
mediaM = (float)sal_masc / sexo_masculino;
mediaF = (float)sal_fem  / sexo_feminino;
mediaid = (float)id_fem + id_masc / sexo_masculino + sexo_feminino;
printf("A media dos salarios do sexo feminino: %.2f\n",mediaF);
printf("A media dos salarios do sexo masculino: %.2f \n",mediaM);
printf("A media das idades de ambos os sexos: %d, %d \n",mediaid);
system("pause");
}

Obrigada.

  • Curtir 1
Postado

@Mariana Fernandes    seu código corrigido poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_masculino=0,
          sexo_feminino=0,habitantes,maior, menor,
          maior1, menor2, id_fem=0, id_masc=0;
    float conta=0,soma=0,mediaM,mediaF,mediaid, salario,
          sal_masc=0,sal_fem=0;
    char  ch;
    do
    {
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
            id_masc += idade;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
                id_fem += idade;
            }
        }
        printf("Pretende inserir mais dados   S/N ");
        fflush(stdin);
        scanf("%c",&ch);
    }while( ch != 'n' && ch != 'N' );
    printf("\n\n");
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    mediaid = (float)( id_fem + id_masc ) / (float)( sexo_masculino + sexo_feminino );
    printf("A media dos salarios do sexo masculino eh -: %.2f\n",mediaM             );
    printf("A media dos salarios do sexo feminino eh --: %.2f\n",mediaF             );
    printf("A media das idades de ambos os sexos eh ---: %.2f\n",mediaid            );
    printf("\n\n");
    system("pause");
    printf("\n\n\n");
    return 128;
}

 

  • Obrigado 1
  • Amei 1
Postado
1 hora atrás, Lucca Rodrigues disse:

@Mariana Fernandes

78 - 110 no caso é 'N' - 'n', e da no mesmo de 'A' - 'a' ou qualquer outra letra maiúscula - sua correspondente minúscula, 32 é o padrão.

 

 

b) O maior e o menor salário por sexo

Para o maior salário:

Crie duas variáveis do tipo float (chamarei de MR_masc e MR_fem) e logo após declarar, inicialize ambas com 0. Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é maior do que o valor da própria variável MR em questão, e caso seja, atribua este salário à variável MR, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de maior_idd_masc para sexo masculino e maior_idd_fem para sexo feminino). Este é o maior salário.

Para o menor salário:

Crie duas variáveis do tipo float (chamarei de MN_masc e MN_fem) e atribua o primeiro salário inserido à elas (pode ser com uma condicional if, imagino que para fazer a questão (a), você teve que incrementar dois contadores para calcular a média de ambos os sexos no final, então se contador_masc == 0 e o sexo for masculino, MN_masc = primeiro salário inserido para o sexo masculino, e se contador_fem == 0 e o sexo for feminino, MN_fem = primeiro salário inserido para o sexo feminino). Avalie qual o sexo e em seguida, verifique com uma condicional if se o novo salário inserido é menor do que o valor da própria variável MN em questão, e caso seja, atribua este salário à variável MN, e adicionalmente, atribua a idade recém inserida à uma variável do tipo int (chamarei de menor_idd_masc para sexo masculino e menor_idd_fem para sexo feminino). Este é o menor salário.

 

d) A quantidade de mulheres na região

Se você fez a questão (a), então a (d) está feita, pois é só incrementar um contador caso o sexo seja feminino.

 

e) A idade e o sexo da pessoa que possui o maior e o menor salário.

Para o maior salário:

Caso MR_masc > MR_fem, então MR_masc representa o maior salário, logo, o sexo é masculino e a idade é a maior_idd_masc, caso contrário, então MR_fem é que representa o maior salário, o sexo é feminino e a idade é a maior_idd_fem.

Para o menor salário:

Caso MN_masc < MN_fem, então MN_masc representa o menor salário, logo, o sexo é masculino e a idade é a menor_idd_masc, caso contrário, então MN_fem é que representa, o sexo é feminino e a idade é a menor_idd_fem.

Obrigado! mas em que parte é que se a alínea a) está feita então a d) também? Como é que a partir da média dos salários por sexo tenho a quantidade de mulheres na região a partir de um contador?

31 minutos atrás, devair1010 disse:

@Mariana Fernandes    seu código corrigido poderia ser assim  :


#include <stdio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_masculino=0,
          sexo_feminino=0,habitantes,maior, menor,
          maior1, menor2, id_fem=0, id_masc=0;
    float conta=0,soma=0,mediaM,mediaF,mediaid, salario,
          sal_masc=0,sal_fem=0;
    char  ch;
    do
    {
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
            id_masc += idade;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
                id_fem += idade;
            }
        }
        printf("Pretende inserir mais dados   S/N ");
        fflush(stdin);
        scanf("%c",&ch);
    }while( ch != 'n' && ch != 'N' );
    printf("\n\n");
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    mediaid = (float)( id_fem + id_masc ) / (float)( sexo_masculino + sexo_feminino );
    printf("A media dos salarios do sexo masculino eh -: %.2f\n",mediaM             );
    printf("A media dos salarios do sexo feminino eh --: %.2f\n",mediaF             );
    printf("A media das idades de ambos os sexos eh ---: %.2f\n",mediaid            );
    printf("\n\n");
    system("pause");
    printf("\n\n\n");
    return 128;
}

 

Obrigado pela ajuda!! Quando acabar mais alíneas reenvio.

  • Obrigado 1
Postado

@Mariana Fernandes

53 minutos atrás, Mariana Fernandes disse:

Obrigado! mas em que parte é que se a alínea a) está feita então a d) também? Como é que a partir da média dos salários por sexo tenho a quantidade de mulheres na região a partir de um contador?

Pra calcular a média dos salários das mulheres, você tem que ter a quantidade de mulheres...

image.png.ada42fb945673630eafe3a557d44ba36.png

É matemática básica.

  • Curtir 2
Postado
1 hora atrás, Lucca Rodrigues disse:

@Mariana Fernandes

Pra calcular a média dos salários das mulheres, você tem que ter a quantidade de mulheres...

image.png.ada42fb945673630eafe3a557d44ba36.png

É matemática básica.

Já terminei o programa seguindo a sua lógica de cima.

Código:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int   idade,sexo,sexo_masculino=0, sexo_feminino=0,habitantes,
    maior, menor,maior1, menor2, id_fem=0, id_masc=0, maior_idd_masc, menor_idd_fem;
    float conta=0,soma=0,mediaM,mediaF,mediaid;
    sal_masc=0,sal_fem=0, MR_masc=0,MR_fem=0, quant, salario1, salario2, salario4, salario6, contador_masc == 0, contador_feminino ==0;
    char  ch;
    do
    {
        printf("Diga sua idade : ");
        scanf("%d",&idade);
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
            id_masc += idade;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
                quant= mediaF * sal_fem;
                sal_fem++;
                id_fem += idade;
    }
        
            if(salario> MR_masc)
            {
            salario= MR_masc;
            
        {
            else
        }
            if(salario> MR_fem)
        {
        
            salario=MR_fem;
    }
        if(MN_fem< salario)
        MN_fem=salario4;
    }
    else
    {
        if(MN_masc>salario)
        MN_masc= salario6;
    }
    }
        }   
        if(MR_masc > MR_fem)
        MR_masc= salario1;
        
        }
        else
    {
        if(MN_masc < MN_fem)
        MN_masc= salario2;
    }
    printf("Pretende inserir mais dados \n");
    scanf("%*c");
    scanf("%c",&ch);
    }while( ch != 'n');
    printf("\n\n");
    mediaM = (float)sal_masc / sexo_masculino;
    mediaF = (float)sal_fem  / sexo_feminino ;
    mediaid = (float)( id_fem + id_masc ) / (float)( sexo_masculino + sexo_feminino );
    printf("A media dos salarios do sexo masculino e: %.2f\n",mediaM);
    printf("A media dos salarios do sexo feminino e: %.2f\n",mediaF);
    printf("O maior salario do sexo feminino e: %.2f\n",MR_fem);
    printf("O menor salario do sexo feminino e: %.2f\n",salario4 );
    printf("O maior salario do sexo masculino e: %.2f\n",MR_masc);
    printf("O menor salario do sexo masculino e: %.2f\n",salario6;)
    printf("A media das idades de ambos os sexos e: %.2f\n",mediaid);
    printf("A quantidade de mulheres na regiao e: %.2f\n",quant);
    printf("Maior salario e:%.2f, %.2f\n",salario1, maior_idd_masc, sexo_masculino);
    printf("Menor salario e: %.2f, %.2f\n",salario2, menor_idd_fem, sexo_feminino);
    system("pause");
}

Fiquei um pouco confusa ao terminar, confesso mas se estiver errado digam me por favor, foi o melhor que consegui fazer visto ter começado á pouco tempo a estudar a linguagem C.

Obrigada.

  • Curtir 1
Postado

Não disse qual a sua dúvida...
 

Escreva seu programa em torno dos dados. Sempre. E faça o simples.
 

O fluxo das coisas está claro já no enunciado. Pode escrever dois programas para testar em separado
 

Tem (a) uma fase de aquisição de dados, (b) uma fase de cálculos e (c) uma fase de demonstração dos resultados
 

Citação

começa por inserir os dados como a idade, o sexo (M/F) e o salário, de cada um dos habitantes, terminando quando responder “n” à pergunta “Pretende inserir mais dados”


Pois é. Um loop até o cara responder com "n" e (a) já está resolvido.


Sobre os cálculos

Use uma folha de papel e os conhecimentos do ensino fundamental. Média é uma conta: Uma soma dividida pelo número de parcelas.

  • (a) vai precisar somar os salários por sexo. Só isso. 4 variáveis.
  • (b) claro, 4 variáveis: uma para o menor uma para o maior salário. Para cada sexo.
  • (c) vai precisar somar as idades por sexo. Mais duas variáveis. Claro, porque em (a) já ficou claro que vai precisar contar homens e mulheres.
  • (d) não acrescenta nada. Para calcular (a) e (c) já tem esse número.
  • (e) mais 4 variáveis

declare as variáveis dessa tabela, aparentemente 14 variáveis. Leia os valores e vá atualizando os dados. Nada mais.

 

int idade,sexo feminino, sexo masculino, habitantes,i, maior, menor, maior1, menor2; float soma=0,media, salario;

 

  • 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.
Em 07/11/2020 às 12:21, Lucca Rodrigues disse:

Isso é só para limpar o buffer, então fgetc() lê algum caractere que entrou no buffer, no caso o '\n' ao se dar um ENTER (as variáveis lidas anteriormente são do tipo inteiro e ponto flutuante, e o '\n' não interessa na leitura e acaba ficando no buffer), e assim o buffer é limpo

 

Aqui não é um forum de psicologia :D mas entenda que muitas vezes a gente escreve para si mesmo. E aqui não é o caso. Esse é um enunciado de um programa para iniciantes. Suponha que o leitor não saiba o que é buffer, que você citou 4 vezes aí...

 

13 horas atrás, Mariana Fernandes disse:

Fiquei um pouco confusa ao terminar, confesso mas se estiver errado digam me por favor, foi o melhor que consegui fazer visto ter começado á pouco tempo a estudar a linguagem C

 

 

Bom que conseguiu. Considere as coisas que escrevi para os próximos programas.

 

  • Curtir 1
  • Obrigado 1
  • Amei 1
Postado
5 horas atrás, arfneto disse:

Não disse qual a sua dúvida...
 

Escreva seu programa em torno dos dados. Sempre. E faça o simples.
 

O fluxo das coisas está claro já no enunciado. Pode escrever dois programas para testar em separado
 

Tem (a) uma fase de aquisição de dados, (b) uma fase de cálculos e (c) uma fase de demonstração dos resultados
 


Pois é. Um loop até o cara responder com "n" e (a) já está resolvido.


Sobre os cálculos

Use uma folha de papel e os conhecimentos do ensino fundamental. Média é uma conta: Uma soma dividida pelo número de parcelas.

  • (a) vai precisar somar os salários por sexo. Só isso. 4 variáveis.
  • (b) claro, 4 variáveis: uma para o menor uma para o maior salário. Para cada sexo.
  • (c) vai precisar somar as idades por sexo. Mais duas variáveis. Claro, porque em (a) já ficou claro que vai precisar contar homens e mulheres.
  • (d) não acrescenta nada. Para calcular (a) e (c) já tem esse número.
  • (e) mais 4 variáveis

declare as variáveis dessa tabela, aparentemente 14 variáveis. Leia os valores e vá atualizando os dados. Nada mais.

 


int idade,sexo feminino, sexo masculino, habitantes,i, maior, menor, maior1, menor2; float soma=0,media, salario;

 

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

 

Aqui não é um forum de psicologia :D mas entenda que muitas vezes a gente escreve para si mesmo. E aqui não é o caso. Esse é um enunciado de um programa para iniciantes. Suponha que o leitor não saiba o que é buffer, que você citou 4 vezes aí...

 

 

 

Bom que conseguiu. Considere as coisas que escrevi para os próximos programas.

 

Obrigado! Vou então alterar o meu código, já reenvio.

  • Curtir 1
Postado
1 hora atrás, Mariana Fernandes disse:

Obrigado! Vou então alterar o meu código, já reenvio.

 

O meu código final é este sem a alínea b) e está a a dar tudo certo.

Em relação à alínea b) já a tentei resolver várias vezes mas nunca me dá certo, o programa não executa.

De um modo geral, não sei como colocar a alínea b) no código.

 

Código:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    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;
    do
    {
        printf("Diga sua idade :");
        scanf("%d",&idade);
        printf("\n");
        printf("Diga seu sexo \n1 = Masc \n2 = Fem): ");
        scanf("%d",&sexo);
        printf("\n");
        printf("Diga o seu salario : ");
        scanf("%f",&salario);
        printf("\n");
        if(sexo == 1)
        {
            sal_masc += salario;
            sexo_masculino++;
            id_masc += idade;
        }
        else
        {
            if(sexo == 2)
            {
                sal_fem += salario;
                sexo_feminino++;
                id_fem += idade;
                quant_fem++;
            }
        }
        if((menor_salario == 0) || (salario <= menor_salario)) {
            menor_salario = salario;
            idade_menorsalario = idade;
            sexo_menorsalario = sexo;
        }
        else
        {
        if((maior_salario == 0) || (salario >= maior_salario)) {
            maior_salario = salario;
            idade_maiorsalario = idade;
            sexo_maiorsalario = sexo;
        }
    }
    printf("Pretende inserir mais dados s/n ");
    printf("\n");
    scanf("%*c");
    scanf("%c",&ch);
    }while(ch != 'n');
        printf("\n\n");
        mediaM = (float)sal_masc / sexo_masculino;
        mediaF = (float)sal_fem  / sexo_feminino ;
        mediaid = (float)(id_fem + id_masc)/ (float)(sexo_masculino + sexo_feminino);
 printf("A media dos salarios do sexo masculino e: %.2f\n",mediaM);
 printf("\n");
 printf("A media dos salarios do sexo feminino e: %.2f\n",mediaF);
 printf("\n");
 printf("A media das idades de ambos os sexos e: %.2f\n",mediaid);
 printf("\n");
 printf("A quantidade de mulheres e: %.2f\n",quant_fem);
 printf("\n A idade da pessoa e o sexo de menor salario foi: %d anos, do sexo: %d (1- sexo masculino, 2- sexo feminino)",idade_menorsalario, sexo_menorsalario);
 printf("\n");
 printf("\n A idade da pessoa e o sexo de maior salario foi: %d anos, do sexo: %d (1- sexo masculino, 2- sexo feminino)",idade_maiorsalario, sexo_maiorsalario);
 printf("\n");
 system("pause");
}

  • Curtir 1

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