sábado, 25 de abril de 2015

Contar os número pares digitado; tirar a média dos números pares digitados

Faça um algoritmo em C++ em que o usuário irá digitar os números até que ao digitar o número 0 (zero) o algoritmo interrompa a digitação por parte do usuário; o algoritmo deverá contar e listar todos os números pares que foram digitados e apresentar a média apenas dos números pares digitados.


Comentários:

Estudantes iniciantes de algoritmos sentem a falta de professores que saibam e  tenham paciência em ensinar as coisas mais básicas para que tenham ou adquira gosto por programação. Para mim, não adianta nada todo estes incentivos e projetos para ensinar ou atrair mais jovens para a programação, se não preparam os professores para terem condições de ensinar os alunos a resolverem questões básicas e simples, PARA O PROFESSOR ou para o PROGRAMADOR que já sabe.

O algoritmo acima é simples mas precisa ser explicado para os novatos entenderem. Eu utilizei quatro variáreis. 

a)- [números] - para receber a digitação dos números; 
b)- [contapares] - para contar os números pares digitados; 
c)- [somapares]  - para somar os números pares; 
d)- [mediapares]  - para calcular a média.

Como funciona?

O processamento todo acontece dentro da estrutura de repetição do{ }while() que replico logo abaixo na imagem.


Este código acima faz a repetição até que a condição while. A condição diz o seguinte: while(numeros !=0) quer dizer que a variável [numeros] vai receber números digitados até que o número zero seja digitado. Quando zero for digitado, para de repetir.

Dentro da repetição existe a condição if( ...). O if faz três coisas: 

a) se o número digitado for dividido por 2 e o resto for zero, ele então é um número par; se ele é um numero par, duas coisas acontecem;

b) a variável [contapares] é incrementada em 1; esta variável conta quantas vezes um número par foi digitado; vai servir para calcular a média;

c) a variável [somapares] vai somando os números pares digitados; esta variável acumula o  total dos pares, que servirá para calcular a média dos números pares.

A variável [mediapares] pega o valor de [somapares] e divide por [contapares] encontrando assim a média.

Por que a variável [contapares] está assim: contapares=contapares-1? É que, o número zero é contado como sendo um número par, e se não for subtraído a média dos números pares é diferente.

A parte final é só exibição do resultado.



sexta-feira, 3 de abril de 2015

Faça um algoritmo de caixa eletrônico.

Recebi o pedido de alguém para a seguinte questão:

Faça um algoritmo de caixa eletrônico. O algoritmo irá receber do usuário o valor que deseja sacar e o algoritmo deverá exibir a quantidade de notas que o usuário receberá. As notas disponíveis no caixa são dos seguintes valores: R$ 50,00; R$ 10,00; R$ 5,00 e de R$ 1,00.

Explicações:
0 -  Pode-se usar o While no inicio; Eu utilizei o do{ ... } while (...);
1 - O valor digitado é dividido por 50; A quantidade de cédulas de 50 é armazenado em qtd50;
2 - Depois que se obtém a quantidade de notas de 50, pega-se  o valor digitado e diminui, o valor das notas de 50; por exemplo: o usuário digita 230. Ao dividir por 50 o inteiro que dá é 4; ou seja, serão 4 notas de 50,00; Tirando os 200, sobram 30; que vai ser armazenado na variável resto50;
3 - Faz o mesmo do item 2 para obter a quantidade de cédulas de R$ 10,00, de R$ 5,00 e de 1 real;

Este exercício foi respondido de acordo com o solicitado; com o uso dos comandos do { } while () para iniciantes. Sei que existe outras formas de enxugar o código

sábado, 7 de março de 2015

Lista de Exercícios de C++: 41 a 53

Ler um ângulo em radianos e apresenta-lo convertido em graus. A formula de conversão é: G=R*180/pi, sendo G o ângulo em graus e R em radianos e pi = 3:14.


Ler um valor de comprimento em polegadas e apresenta-lo convertido em centímetros. A formula de conversão é: C = P *2.54, sendo C o comprimento em centímetros e P o comprimento em polegadas.


Ler um valor de comprimento em centímetros e apresenta-lo convertido em polegadas. A formula de conversão ´ e: P = C/2.54. Sendo C o comprimento em centímetros e P o comprimento em polegadas.


Ler um valor de volume em metros cúbicos m3 e apresenta-lo convertido em litros. A formula de conversão é: L = 1000 * M, sendo L o volume em litros e M o volume em metros cúbicos.


Ler um valor de volume em litros e apresenta-lo convertido em metros cúbicos m3. A formula de conversão é M = L *1000, sendo L o volume em litros e M o volume em metros cúbicos.


Ler um valor de massa em quilogramas e apresenta-lo convertido em libras. A formula de conversao é: L = K/4.45 sendo K a massa em quilogramas e L a massa em libras.

Ler um valor de massa em libras e apresenta-lo convertido em quilogramas. A formula de conversão é: K = L * 0.45, sendo K a massa em quilogramas e L a massa em libras.

Ler um valor de comprimento em jardas e apresenta-lo convertido em metros. A formula de conversão é: M=0.91* J, sendo J o comprimento em jardas e M o comprimento em metros.


Ler um valor de comprimento em metros e apresenta-lo convertido em jardas. A formula de conversão é: J=M/0.91, sendo J o comprimento em jardas e M o comprimento em metros.

Ler um valor de área em metros quadrados m2 e apresenta-lo convertido em acres. A formula de conversão é: A = M*0.000247, sendo M a área em metros quadrados e A a área em acres.

Ler um valor de área em acres e apresenta-lo convertido em metros quadrados m2. A formula de conversão é: M = A* 4048.58, sendo M a ´area em metros quadrados e A a área em acres.

Ler um valor de área em metros quadrados m2 e apresenta-lo convertido em hectares. A formula de conversão é: H = M *0.0001, sendo M a área em metros quadrados e H a área em hectares.

Ler um valor de area em hectares e apresenta-lo convertido em metros quadrados m2. A formula de conversão é: M = H*10000, sendo M a área em metros quadrados e H a área em hectares.

domingo, 1 de março de 2015

Lista de Exercícios de C++: 31 a 40

Faca um programa para ler as dimensões de um terreno (comprimento c e largura l), bem como o preço do metro do arame para então fornecer como saída o custo para cercar este mesmo terreno.


Ler uma temperatura em graus Celsius e apresenta-la convertida em graus Fahrenheit. A formula de conversão é: f=(-9*c-160)/-5; sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.


 Ler uma temperatura em graus Fahrenheit e apresenta-la convertida em graus Celsius. A formula de conversão é : c=5*(f-32)/9; sendo C a temperatura em Celsius e F a temperatura em Fahrenheit.



Ler uma temperatura em graus Kelvin e apresentá-la convertida em graus Celsius. A formula de conversão é: C = K - 273.15, sendo C a temperatura em Celsius e K a temperatura em Kelvin.

Ler uma temperatura em graus Celsius e apresenta-la convertida em graus Kelvin. A formula de conversão é: K = C + 273:15, sendo C a temperatura em Celsius e K a temperatura em Kelvin.


 Ler uma velocidade em km/h (quilômetros por hora) e apresenta-la convertida em m/s (metros por segundo). A formula de conversão é: M = K/3.6, sendo K a velocidade em km/h e M em m/s.


Ler uma velocidade em M/s (metros por segundos) e apresenta-la convertida em m/s (quilômetros por metros). A formula de conversão é: K = M*3.6, sendo K a velocidade em km/h e M em m/s.


Ler uma distancia em milhas e apresentá-la convertida em quilômetros. A fórmula de conversão é: K=1.61* M, sendo K a distância em quilômetros e M em milhas.


Ler uma distancia em quilômetros e apresentá-la convertida em milhas. A fórmula de conversão é: M= K/1.61, sendo K a distância em quilômetros e M em milhas.


Ler um ângulo em graus e apresentá-lo convertido em radianos. A formula de conversão é: R = G * pi / 180. sendo G o ângulo em graus e R em radianos e pi = 3:14.



sábado, 28 de fevereiro de 2015

Lista de Exercícios de C++: 21 a 30

Lista de Exercícios de C++: 21 a 30
  • Receba a altura do degrau de uma escada e a altura que o usuário deseja alcançar subindo a escada. Calcule e mostre quantos degraus o usuário devera subir para atingir seu objetivo, sem se preocupar com a altura do usuário.
As vezes o programador passa mais tempo para entender e planejar a solução do programa do que fazendo o programa. A questão acima, pelo menos dois colegas não souberam o que é que estava sendo pedido. Então fiz a seguinte imagem para entenderem a questão.

 Pronto! Com a imagem se pode saber o que é que a questão quer. Utilizando os degraus da escada, quantos degraus serão necessários para se atingir tal altura? Assim fica fácil de deduzir que é só dividir a altura total pela altura do dos degraus. Se, o usuário digitar que a altura a ser atingida é de 1000 cm, e que cada degrau tem 20cm, é só dividir por 1000cm por 20cm.


 A expressão: qtdDegraus = ((queroSubir*100)/alturaDegraus); que atribuirá à variável qtdDegraus o resultado da multiplicação da quantidade de metros a subir (variável queroSubir) pela divisão do valor da altura de cada degrau. A multiplicação por 100 é para transformar o valor do metro em centímetros e então dividir pela altura de cada degrau que é dado em centímetros.

Faça um programa para converter uma letra maiúscula em letra minúscula. Use a tabela ASCII.
 O que é a tabela ASCII? - Na década de 60, a necessidade de padronização levou ao ASCII (código padrão americano para troca de informações). A tabela ASCII contém 128 números atribuídos aos caracteres correspondentes. O ASCII permite que os computadores armazenem e troquem dados com outros computadores e programas. O texto com formato ASCII não contém informações de formatação, como negrito, itálico ou fontes.

Olhe a tabela ASCII acima. Eu marquei a letra A em MAIÚSCULO e a letra "a" em minúsculo.  A letra em maiúscula tem o valor de 65, enquanto a letra em minúsculo tem o valor 97. Se é para converter a letra em minúsculo para maiúsculo, a operação é de subtração; se é para converter de maiúsculo para minúsculo a operação é de soma.

Veja assim: a letra A=65, se somado mais 32 será igual a 97. E, o número 97 na tabela equivale à letra a em minúsculo. Já a letra B, será 66+32=98. E, se olhar a tabela acima, 98=b. A operação contrário também funciona: 97-32=65. E 65 equivale a letra A em maiúsculo. Veja o código abaixo:


Como é que este código funciona? O compilador vai interpretar a variável como um número somado com 32. E como a variável é do tipo "char" vai retornar o valor do bit e seu equivalente na tabela ASCII. Para fazer a operação inversa, converter de minúsculo para maiúsculo é só trocar o sinal de mais (+) para o sinal de menos (-)  .
Faça um programa para ler um numero inteiro, positivo de três dígitos, e gerar outro
numero formado pelos dígitos invertidos do numero lido. Exemplo:


Numero Lido = 123
Numero Gerado = 321.

 

 


A lógica acima é simples, porém, para o programador iniciante, complicado de se chegar a esta solução.


O código acima faz o seguinte:
1- divide o número por 100, e guarda na variável centena;
2- A variável número muda de valor, e passa a conter o número digitado e depois de dividido por 100, o resto vai para a variável. Exemplo: se for digitado 854, divide por 100, o que dá 8x100=800, o resto é 54. Assim, a variável NUMERO passa a valer este número;
3- A variável dezena, recebe o conteúdo da variável e divide por 10;
4- A variável unidade pega o último número, e divide por 10, e guarda o resto na variável número;

Pronto. Isto foi suficiente para separar os número. A exibição final é só mero arranjo.

  • Leia um numero inteiro de 4 dígitos e imprima 1 dígito por linha.

Esta questão é semelhante à anterior, porém, com outra solução, nesta solução, a divisão é feita sempre por 10, e o resto é armazenado nas variáveis. A solução segue o seguinte padrão:

1- A variável "quinto" recebe o valor do que o usuário digitou em valorUsuario dividido por 10, e o resto é que vai para a variável. Neste caso, quinto recebe o valor da unidade;
2- A variável valorUsuário muda de conteúdo. Ela passa a conter o número digitado dividido por 10;
3- isto se repete até pegar todos os números e lista-os em ordem inversa do que foi feita a operação de divisão e pegando o resto.

  • Leia um valor inteiro em segundos, e imprima-o em horas, minutos e segundos.

A questão é bem esta mesmo. Está numa formação estranha. Eu penso que deveria ser "leia um valor inteiro, e imprima-o em horas, minutos e segundos. E foi isto que fiz. no código acima. É simples o código, mas para o iniciante serve para fixar o conhecimento de variáveis, tipos de variáveis, bem como é útil para desenvolver o raciocínio lógico.

Por outra, tem estudante que sequer sabe quantos segundos tem uma hora. Nestes momentos é que se aprende e vê vários e muitos eventos diferentes da matemática e do cotidiano.


Faça um programa que leia o horário (hora, minuto e segundo) de inicio e a duração, em segundos, de uma experiência biológica. O programa deve resultar com o novo horário (hora, minuto e segundo) do termino da mesma.



Implemente um programa em C que calcule o ano de nascimento de uma pessoa a partir 

de sua idade e do ano atual.






Faça um algoritmo que calcule a media ponderada das notas de 3 provas. A primeira e a segunda prova tem peso 1 e a terceira tem peso 2. Antes de o usuário entrar com as notas do aluno ele deve entrar com o numero de matricula do aluno. Ao final, mostrar a matricula do aluno juntamente com a sua media e indicar se o aluno foi aprovado ou reprovado. A nota para aprovação deve ser igual ou superior a 60 pontos.


Escreva um programa que leia as coordenadas x e y de pontos no R2 e calcule sua distancia da origem (0; 0). 





Três amigos jogaram na loteria. Caso eles ganhem, o premio deve ser repartido proporcionalmente ao valor que cada deu para a realização da aposta. Faca um programa que lê quanto cada apostador investiu, lê o valor do premio, e escreve quanto cada um ganharia. 



    Para o código ficar em uma imagem pequena eu utilizei nas linhas 7,9,11 e 14 DOIS comandos na mesma linha. Observe que há o comando cout, e depois do ponto-virgula, existe outro comando o cin >>.





    quarta-feira, 25 de fevereiro de 2015

    Lista de Exercícios de C++: 11 a 20


    • Leia o valor do raio de um círculo e calcule a área do círculo correspondente. Imprima o
      resultado dessa operação. A área do círculo é ( pi * raio2), considere que pi vale 3:141592.


    • Sejam a e b os catetos de um triângulo, onde a hipotenusa é obtida pela equação: hipotenusa = raiz de a2 + b2. Faça um programa que receba os valores de a e b e encontre o valor da hipotenusa através da equação. Imprima no final o resultado dessa operação.

    Para a solução desta questão utilizei um novo include que é #include <math.h> que incluirá na compilação a biblioteca que me permite entre outras funções matemáticas, utilizar a sqrt(). A função sqrt() calcula a raiz quadrada de um número. No programa acima, ela irá calcular a raiz quadrada dos números digitados na variável A e na variável B.

    • Leia a altura e o raio de um cilindro circular e imprima o volume do cilindro. O volume de um cilindro circular é calculado por meio da seguinte formula: V = pi * raio2 * altura, onde = 3:1416.

    • Faça um programa que possa entrar com o valor de um produto e imprima o valor tendo em vista que o desconto foi de 12%

    Programar computadores inevitavelmente implica em ter que saber criar, fazer, manipular expressões matemáticas, elaborar fórmulas matemáticas.

    Observe no código acima uma característica da linguagem C++ em que você pode declarar uma variável em qualquer parte do programa.

    • Receba o salário de um funcionário, calcule e imprima o valor do novo salário, sabendo que ele recebeu um aumento de 25%.


    • A importância de R$ 780.000,00 será dividida entre três ganhadores de um concurso. Sendo que da quantia total:
    1. O primeiro ganhador receber´a 46%;
    2. O segundo receberá 32%;
    3. O terceiro recebera o restante;
    4. Calcule e imprima a quantia ganha por cada um dos ganhadores.

    Observações:
    1- Um novo include foi utilizado neste código: #include <iomanip>. Com ele, é possível trabalhar a exibição de casas decimais. Veja na linha 15 o comando cout << setprecision(2); que indica que os números terão obrigatoriamente 2 casas decimais;
    2- Na exibição dos resultados, há a indicação de que os números devem ser fixed, o que aplica a configuração do setprecision(2);
    3- No calculo do primeiro e segundo prêmio, a expressão primeiro=(premio*0.46) também poderia ser escrito da seguinte maneira: primeiro=(premio*46)/100. Mas, se você optar pela simplificação, o processador não fará uma outra operação matemática.
    • Uma empresa contrata um encanador a R$ 30,00 por dia. Crie um programa que solicite o numero de dias trabalhados pelo encanador e imprima a quantia liquida que deverá ser paga, sabendo-se que são descontados 8% para imposto de renda.

    Observações:
    1- A questão diz 8%. E a variável foi declarada como ir=0.08, isto é o que quer dizer 8/100. O símbolo %, para muitos que ignoram esta informação é isto: pegue este número e divida por 100. Assim, 8% equivale a 0.08.
    2- setprecision(2) aplica a formatação do número em duas casas decimais; e o << fixed << variavel aponta para a variável que receberá a fixação das casas decimais;
    3- A função setw(12) usada no código acima é utilizado para inserir 12 colunas em branco à esquerda do número, e a formatação da exibição ficará alinhada.
    • Faça um programa que leia o valor da hora de trabalho (em reais) e numero de horas trabalhadas no mês, e imprima o valor a ser pago ao funcionário, adicionando 10% sobre o valor calculado.

    Observações:

    1- Observe as declarações de variáveis no código: a variável salário foi declarada (na linha 17) e também, o seu conteúdo recebe o resultado da operação =sBruto+(sBruto*acrescimo);
    2 - Não é aconselhável, mas, esta expressão poderia ser utilizada em cout <<, como está na linha 22 em que é calculado o valor do acrescimo.
    3- A questão apresenta 10% como acréscimo. Aonde está os 10%? Na variável acréscimo = 0.01!

    • Receba o salário-base de um funcionário, calcule e imprima o salário a receber, sabendo-se que esse funcionário tem uma gratificação de 5% sobre o salário-base. Além disso, paga 7% de imposto sobre o salário-base.

    Observações:
    1- No código acima tem o bloco de declaração de variáveis. Eu sempre tenho usado a declaração local das variáveis, ou seja, as variáveis tem sido declaradas dentro da função principal, o main();
    2- As variáveis declaradas antes do main(), são chamadas de variáveis globais;
    3- As variáveis declaradas dentro do main(), são chamadas de variáveis locais, e só tem utilização dentro deste main();
    • Escreva um algoritmo para criar um programa de ajuda para vendedores. A partir de um valor total lido, mostre:
    1. O total a pagar com desconto de 10%;
    2. O valor de cada parcela, no parcelamento de 3 x sem juros;
    3. A comissão do vendedor, no caso da venda ser a vista (5% sobre o valor com desconto)
    4. A comissão do vendedor, no caso da venda ser parcelada (5% sobre o valor total)


    Observações:
    1- A declaração de variáveis neste código estão em dois blocos. O primeiro tipo é o mais indicado para os iniciantes em C++; 
    2- O segundo bloco de variáveis não é tão utilizado para os iniciantes, mas, é possível usar este tipo de declaração de variáveis.

    segunda-feira, 23 de fevereiro de 2015

    Lista de Exercícios de C++: 1 a 10

    • Faça um programa que leia um número inteiro e o imprima, então leia um número real e
      também o imprima.
    • Peça ao usuário para digitar três valores inteiros e imprima a soma deles.
    • Efetue a leitura de um número real e imprima o resultado do quadrado desse número.
     
    • Leia um número real e imprima a quinta parte deste número.
    • Efetue a leitura de três valores e apresente como resultado a soma dos quadrados dos
      três valores lidos.
    •  Leia quatro notas, calcule a média aritmética e imprima o resultado.
     
    • Leia um valor em real e a cotação do dólar. Em seguida, imprima o valor correspondente em dólares.
    • Leia um número inteiro e imprima o seu antecessor e o seu sucessor.


    Observação: no código acima, é utilizado apenas uma variável do tipo inteiro. Você pode, se quiser utilizar mais de uma variável. Você poderia ter feito assim:

    int umNumero, antecessor, posterior;
    cout << "\n Digite 1 numero inteiro: " ;
    antecessor = umNumero-1;
    posterior = umNumero+1;
    cout << "\n O numero digitado foi: " << umNumero;
    cout << "\n O numero antecessor: " << antecessor;
    cout << "\n O numero posterior: " << posterior;
    • Leia um número inteiro e imprima a soma do sucessor de seu triplo com o antecessor de seu dobro.

    A complicação deste é entender o que é a questão exige. Você tem que pegar um número inteiro qualquer, então, calcular este número multiplicado por 3 e somado mais 1; em seguida, pega este mesmo número, multiplica por 2, e do valor obtido, subtraia 1; encontrado os valores do triplo, e do dobro, some este números. Exemplo:

    Pega o número 5. O triplo de 5 = 15, mais 1: Obtém-se 16: "sucessor de seu triplo"
    Pega o número 5. O dobro de 5 =10, menos 1: Obtém-se 9: "antecessor de
    seu dobro." Por fim 16+9=25.

    • Leia o tamanho do lado de um quadrado e imprima como resultado a sua área.



    Você quer os códigos destes exercícios?