Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Laços |
Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários - Desafio de Programação Resolvido em CQuantidade de visualizações: 620 vezes |
Pergunta/Tarefa: Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários. Supondo que você seja o programador dessa empresa, faça um programa C que: a) Leia, para cada candidato, a idade, o sexo (M ou F) e a experiência no serviço (S ou N). Para encerrar a entrada de dados digite zero para a idade. Calcule e mostre: a) o número de candidatos do sexo feminino; b) o número de candidatos do sexo masculino; c) a idade média dos homens que já tem experiência no serviço; d) a percentagem dos homens com mais de 45 anos entre o total dos homens; e) o número de mulheres com idade inferior a 35 anos e com experiência no serviço; f) a menor idade entre as mulheres que já tem experiência no serviço. Seu programa C deverá exibir uma saída parecida com: Informe a idade: 46 Informe o sexo [M, F]: M Possui experiência [S, N]: S Informe a idade: 19 Informe o sexo [M, F]: F Possui experiência [S, N]: N Informe a idade: 43 Informe o sexo [M, F]: M Possui experiência [S, N]: N Informe a idade: 58 Informe o sexo [M, F]: M Possui experiência [S, N]: S Informe a idade: 58 Informe o sexo [M, F]: F Possui experiência [S, N]: S Informe a idade: 37 Informe o sexo [M, F]: F Possui experiência [S, N]: N Informe a idade: 0 Quantidade de homens: 3 Quantidade de mulheres: 3 Idade média homens com experiência: 52.0 Porcentagem de homens com mais de 45 anos: 66.66% Mulheres idade inferior 35 anos com experiência: 0 Menor idade mulheres com experiência: 58 Veja a resolução comentada deste exercício usando C: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // função principal do programa int main(int argc, char *argv[]){ // variaveis usdas na resolução do problema int idade, quant_h, quant_m; int quant_h_exp, quant_m_exp, soma_idades_h_exp; float idade_media_h_exp; int quant_h_mais_45_anos; float porc_h_mais_45_anos; int quant_m_menor_35_exp, menor_idade_m_exp; char sexo, experiencia; // vamos inicializar algumas variáveis quant_h = 0; // quantidade de homens quant_m = 0; // quantidade de mulheres quant_h_exp = 0; // quantidade de homens com experiência quant_m_exp = 0; // quantidade de mulheres com experiência quant_h_mais_45_anos = 0; // quantidade homens mais 45 anos soma_idades_h_exp = 0; // soma as idades dos homens com experiência menor_idade_m_exp = 0; // menor idade mulher com experiência quant_m_menor_35_exp = 0; // quantidade de mulheres menor que 35 anos // com experiência no serviço // agora o laço que lê a idade, o sexo e a experiência do{ printf("\nInforme a idade: "); scanf("%d", &idade); // a idade informada é diferente de 0 if(idade != 0){ fflush(stdin); // para o scanf não sair pulando // vamos ler o sexo printf("Informe o sexo [M, F]: "); scanf("%c", &sexo); sexo = toupper(sexo); // converte para letra maiúscula se necessário fflush(stdin); // para o scanf não sair pulando printf("Possui experiência [S, N]: "); scanf("%c", &experiencia); experiencia = toupper(experiencia); // esse candidato é do sexo feminino? if(sexo == 'F'){ // aumentamos a quantidade de candidatos do sexo feminino quant_m = quant_m + 1; // esta mulher possui experiência? if(experiencia == 'S'){ // DICA DE PROGRAMADOR SÊNIOR: Se esta for a primeira mulher // com experiência, então ela possui a menor idade entre as // mulheres com experiência if(quant_m_exp == 0){ menor_idade_m_exp = idade; // menor idade mulher com experiência } else{ // essa idade é menor que a idade que já temos? if(idade < menor_idade_m_exp){ menor_idade_m_exp = idade; } } // essa mulher tem idade menor que 35 e experiência? if(idade < 35){ quant_m_menor_35_exp = quant_m_menor_35_exp + 1; } // aumentamos a quantidade de mulheres com experiência quant_m_exp = quant_m_exp + 1; } } // é do sexo masculino então else{ // aumentamos a quantidade de candidatos do sexo masculino quant_h = quant_h + 1; // esse homem possui experiência? if(experiencia == 'S'){ // aumentamos a quantidade de homens com experiência quant_h_exp = quant_h_exp + 1; // precisamos somar esta idade então soma_idades_h_exp = soma_idades_h_exp + idade; } // esse homem tem mais de 45 anos? if(idade > 45){ quant_h_mais_45_anos = quant_h_mais_45_anos + 1; } } } }while(idade != 0); // vamos mostrar os dados printf("\nQuantidade de homens: %d", quant_h); printf("\nQuantidade de mulheres: %d", quant_m); // vamos calcular a idade média dos homens com experiência // no serviço idade_media_h_exp = 0; if((quant_h > 0) && (quant_h_exp > 0)){ idade_media_h_exp = soma_idades_h_exp / ((double)quant_h_exp); printf("\nIdade média homens com experiência: %f", idade_media_h_exp); } else{ printf("\nNão houve homens com experiência"); } // vamos mostrar a porcentagem de homens com mais de 45 anos if((quant_h > 0) && (quant_h_mais_45_anos > 0)){ porc_h_mais_45_anos = (quant_h_mais_45_anos / (double)quant_h) * 100; printf("\nPorcentagem de homens com mais de 45 anos: %f%%", porc_h_mais_45_anos); } else{ printf("\nNão houve homens com idade maior de 45 anos"); } // vamos mostrar a quantidade de mulheres com idade inferior // a 35 anos e com experiência printf("\nMulheres idade inferior 35 anos com experiência: %d", quant_m_menor_35_exp); // vamos mostrar a menor idade de mulheres com experiência if((quant_m > 0) && (quant_m_exp > 0)){ printf("\nMenor idade mulheres com experiência: %d", menor_idade_m_exp); } else{ printf("\nNão houve mulheres com experiência"); } printf("\n\n"); system("PAUSE"); return 0; } |
![]() |
C ::: C para Engenharia ::: Hidrologia e Hidráulica |
Como calcular o volume de chuvas em C - Fórmula do cálculo do volume de chuvas em CQuantidade de visualizações: 293 vezes |
O estudo da Hidrologia passa, necessariamente, pelo cálculo do volume de chuvas em uma determinada região, ou bacia hidrológica. Assim, é comum ouvirmos alguém dizer que, em um determinado local, choveu 100 mm durante um determinado período. Mas o que isso significa? O mês mais chuvoso em Goiânia é dezembro, com média de 229 milímetros de precipitação de chuva. Isso significa que, em uma área de 1 m2, a lâmina de água formada pela chuva que cai apresenta uma altura de 229 milímetros. Como sabemos que o volume é a área multiplicada pela altura, tudo que temos a fazer é considerar a área de 1 m2 multiplicada pela altura da lâmina de água (convertida também para metros). Veja a fórmula: \[\text{Volume} = \text{(Área da Base) x Altura}\] Lembre-se de que volume pode ser retornado em litros, ou seja, 1 m3 = 1000 litros. Veja agora o código C completo que pede para o usuário informar a precipitação da chuva, ou seja, a altura da lâmina de água em milímetros e retorna o volume de água em litros. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // variáveis usadas na resolução do problema float altura_lamina, volume_chuva; // vamos pedir para o usuário informar a altura da lâmina // de água em milímetros printf("Altura da lâmina de água em milímetros: "); scanf("%f", &altura_lamina); // o primeiro passo é converter os milímetros da lâmina de água // para metros altura_lamina = altura_lamina / 1000.0; // agora que já temos a altura da lâmina em metros, vamos multiplicar // pela base (1 metro quadrado) para obtermos o volume da chuva por // metro quadrado volume_chuva = (altura_lamina * 1.0) * 1000.0; // vamos mostrar o resultado printf("O volume da chuva é: %f litros para cada metro quadrado", volume_chuva); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Altura da lâmina de água em milímetros: 229 O volume da chuva é: 229.0 litros para cada metro quadrado Qual é o volume de 1 mm de chuva? A altura pluviométrica é a espessura da lâmina d'água precipitada que cobre a região atingida pela chuva. Geralmente a unidade de medição é o milímetro (mm) porque o aparelho que mede a chuva, o pluviômetro, é lido em milímetros. O pluviômetro é um aparelho meteorológico destinado a medir, em milímetros, a altura da lâmina de água gerada pela chuva que caiu numa área de 1 m2. 1 mm de chuva equivale a 1 litro de água, ou 1 dm3, considerando a área de 1 m2. |
C ::: Dicas & Truques ::: Matemática e Estatística |
Como usar a função modf() da linguagem C para separar um valor de ponto flutuante em suas partes inteira e fracionáriaQuantidade de visualizações: 7799 vezes |
Em algumas situações precisamos obter as partes inteira e fracionária de um valor de ponto flutuante. Para isso podemos usar a função modf(). Veja sua assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- double modf(double x, double * intpart); O parâmetro x é o valor de ponto flutuante cujas partes queremos separar e intpart é uma variável do tipo double que receberá a parte inteira do valor. O retorno da função é o valor fracionário. Vamos ver um exemplo? Veja como podemos quebrar o valor 34,27 em suas partes inteira e fracionária: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { double valor = 34.27; // vamos separar o valor em suas partes inteira e fracionária double inteira = 0.0, fracionaria = 0.0; fracionaria = modf(valor, &inteira); // vamos exibir o resultado printf("Parte inteira: %f\n", inteira); printf("Parte fracionaria: %f\n", fracionaria); printf("\n\n"); system("pause"); return 0; } Ao executarmos este código teremos o seguinte resultado: Parte inteira: 34.000000 Parte fracionária: 0.270000 |
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica em C usando a função malloc()Quantidade de visualizações: 28983 vezes |
A função malloc() é usada em C para alocarmos um bloco de memória. Esta função recebe a quantidade de bytes a serem alocados e retorna um ponteiro do tipo void (genérico) para o início do bloco de memória obtido. Veja sua assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- void *malloc(size_t size); Se a memória não puder se alocada, um ponteiro nulo (NULL) será retornado. É importante se lembrar de alguns conceitos antes de usar esta função. Suponhamos que você queira alocar memória para um inteiro. Você poderia ter algo assim: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // aloca memória para um int ponteiro = malloc(4); Embora este código esteja correto, não é um boa idéia assumir que um inteiro terá sempre 4 bytes. Desta forma, é melhor usar o operador sizeof() para obter a quantidade de bytes em um inteiro em uma determinada arquitetura. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // aloca memória para um int ponteiro = malloc(sizeof(int)); Eis o código completo para um aplicativo C que mostra como alocar memória para um inteiro e depois atribuir e obter o valor armazenado no bloco de memória alocado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // ponteiro para uma variável do tipo inteiro int *ponteiro; // aloca memória para um int ponteiro = malloc(sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else printf("Nao foi possivel alocar a memoria.\n"); // atribui valor à memória alocada *ponteiro = 45; // obtém o valor atribuído printf("Valor: %d\n\n", *ponteiro); // libera a memória free(ponteiro); system("PAUSE"); return 0; } Uma aplicação interessante da função malloc() é quando precisamos construir uma matriz dinâmica. Veja como isso é feito no código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; // quantidade de elementos na matriz int quant = 10; // ponteiro para o bloco de memória int *ponteiro; // aloca memória para uma matriz de inteiros ponteiro = malloc(quant * sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else{ printf("Nao foi possivel alocar a memoria.\n"); exit(1); } // atribui valores aos elementos do array for(i = 0; i < quant; i++){ ponteiro[i] = i * 2; } // exibe os valores for(i = 0; i < quant; i++){ printf("%d ", ponteiro[i]); } // libera a memória free(ponteiro); printf("\n\n"); system("PAUSE"); return 0; } |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |