Algoritmos e Programação - exercícios de lógica resolvidos (c++)

Algoritmos e Programação - exercícios de lógica resolvidos (c++)

-----------------------

LISTA DE EXERCÍCIOS IV

-----------------------

MATÉRIA: Algoritmos & Programação

PROGRAMA: Dev C++

FALCULDADE: UniFacs - Salvador, BA

CURSO: Engenharia de Produção

- - - - -

COMANDOS

- - - - -

# include <stdio.h> ----- usa os codigos de dev c++.

# include <math.h> ------ usa operações matematicas.

main () ----------------- função principal, identifica o programa.

{} ---------------------- abre/fecha estruturas de comando (main (),if, else, for, while, switch).

() ---------------------- abre/fecha comandos específicos para as estruturas.

; ----------------------- fecha uma linha de comando.

int --------------------- variaveis inteiras.

float ------------------- variaveis flutuantes (numeros com virgula).

char -------------------- caracteres.

printf (" ") ------------ escreve o que você quiser entre os " ".

printf (" \n") ---------- \n serve para quebrar uma linha.

printf (" %x ", y) ------ imprime valor da variavel y.

scanf ("%x", &y) -------- %x pode ser variaveis do int (%d), float (%f) ou char (%c) e y corresponde a variavel escolhida pelo usuário.

&& ---------------------- e

|| ---------------------- ou

== ---------------------- igual

!= ---------------------- diferente

> ----------------------- maior

< ----------------------- menor

<= ---------------------- menor ou igual

>= ---------------------- maior ou igual

* ----------------------- multiplicação

/ ----------------------- divisão

% ----------------------- resto da divisão (não é porcentagem)

if () ------------------- se

for () ------------------ para

while () ---------------- enquanto

switch () --------------- se

system ("pause") -------- impede a janela do programa de fechar após executar o programa.

1) Ler 3 numeros e verificar se eles podem ou não ser lados de um triângiulo

#include <stdio.h>

//Só irá existir um triângulo se, somente se, os seus lados obedeceram à seguinte regra: um de seus lados deve ser maior que o valor absoluto (módulo) da diferença dos outros dois lados e menor que a soma dos outros dois lados:

| b - c | < a < b + c

| a - c | < b < a + c

| a - b | < c < a + b

main (){

float a,b,c;

printf ("Digite o valor dos lados");

scanf ("%f%f%f", &a, &b, &c);

if (a>|b-c| && a< b+c && b>|a-c| && a< a+c && c>|b-a| && c< b+a){

printf ("O triangulo existe");

}

if(a<|b-c| || a>b+c || b<|a-c| || b< a+c || c<|b-a| || c> b+a){

printf ("o triangulo nao existe");

}

system ("pause");

}

2) Determinar quanto tempo um corpo em repouso leva para atingir o solo a a partir de uma certa altura informada pelo usuário. Considere g = -9,8 m/s^2 e que a queda livre é determinada pela fórmula: H = Ho + VoT + (gT^2)/2

#include <stdio.h>

main (){

// Em queda livre Vo = 0 e H = 0, então T = (2h/g)^2

float t, h;

printf ("Qual a altura em metros?"\n);

scanf ("%f%", &h);

if (h<0){

printf ("escreva a altura sem sinal");

scanf ("%f%", &h);

}

if (h>0){

t = (2/9.8)(2h/9.8);

printf ("o corpo leva %.2f segundos para atingir o solo",t);

}

}

3) Calcular e imprimir o volume e a área de superfície de um cone reto, um cilindro ou uma esfera. O programa deverá ler a opção da figura desejada.

// Cone reto V = pi*r*r*(H/3) e A = pi*r*sgrt(r*r+H*H);

// Cilindro V = pi*r*r*H e A = 2pi*r*H

// Esfera V = 4/(3*pi*r*r*r) e A = 4*pi*r*r

#include <stdio.h>

#include <math.h>

main (){

float vol, A, R, H;

char op

printf ("cone, cilindro ou esfera?\n")

scanf ("%c", &op);

switch (op){

case char == cone:

printf ("o raio e a altura?");

scanf ("%f%f", &r, &H);

vol = 3.14*r*r*(H/3);

A = 3.14*r*sgrt((r*r)+(H*H));

printf ("volume = %f e area = %f", vol, A);

break;

case char == cilindro:

printf ("o raio e a altura?");

scanf ("%f%f", &r, &H);

vol = 3.14*r*r*H;

A = 2*3.14*r*H;

printf ("volume = %f e area = %f", vol, A);

break;

case char == esfera:

printf ("o raio e a altura?");

scanf ("%f%f", &r, &H);

vol = 4/(3*3.14*r*r*r)

A = 4*3.14*r*r

printf ("volume = %f e area = %f", vol, A);

break;

default:

printf ("opção invalida. Qual a figura?");

scanf ("%c", &op");

break;

}

}

4)Construa um algoritmo pedindo os lados de um triangulo e depois dando sua classificação.

#include <stdio.h>

main(){

float a,b,c;

printf ("Digite o valor dos lados");

scanf ("%f%f%f", &a, &b, &c);

if (a>|b-c| && a< b+c && b>|a-c| && a< a+c && c>|b-a| && c< b+a){

printf ("O triangulo existe");

if(a!=b && a!=c && c!=b){

printf ("triangulo escaleno");}

if(a==b && a==c && c==b){

printf ("triangulo equilátero");}

if(a==b || a==c && c!=b){

printf ("triangulo isosceles");}

if(c==b && a!=c){

printf ("triangulo isosceles");}

}

if(a<|b-c| || a>b+c || b<|a-c| || a< a+c || c<|b-a| || c> b+a){

printf ("o triangulo nao existe");

}

system ("pause");

}

5) Ler a idade de 10 pessoas e imprimir quantas são maiores de idade.

#inclide <stdio.h>

main (){

int contador=0, idade, maiores;

printf ("digite a idade");

scanf ("%d", &idade);

for (i=0; i<10; i++){

if (idade>=18){

contador = contador + 1

}

}

maiores = contador;

printf ("%d sao maiores", maiores);

system ("pause");

}

6) Ler 10 numeros e informar o menor e o maior

#include <stdio.h>

main (){

float num, maior, menor;

printf ("numero?"\n);

scanf ("%f", &num);

maior = num;

menor = num;

for (i=0; i<10; i++){

printf ("proximo numero?"\n);

scanf ("%f", &num);

if (num > maior){

maior = num;

}

if (num < menor){

menor = num;

}

}

printf ("o maior numero é %f e o menor é %f", maior, menor);

system ("pause");

}

7) Ler a data de nascimento de 5 pessoas e informar 1- a quantidade de pessoas em cada faixa etaria e 2- a porcentagem de cada faixa etaria.

#include <stdio.h>

main (){

int idade;

float f1, f2. f3, f4, f5, f1p, f2p, f3p, f4p, f5p;

for (i=0; i<5;i++){

printf ("diga ai");

scanf ("%d", &idade);

if (idade <= 15){

contA++

}

if (idade > 15) && idade <=30){

contB++

}

if (idade > 30) && idade <=45){

contC++

}

if (idade > 45) && idade <=60){

contD++

}

if (idade >= 60)){

contE++

}

}

f1 = 5/contA;

f2 = 5/contB;

f3 = 5/contC;

f4 = 5/contD;

f5 = 5/contE;

f1*100 = f1p;

f2*100 = f2p;

f3*100 = f3p;

f4*100 = f4p;

f5*100 = f5p;

printf ("Existem %f menores de 15 anos, %f pessoas entre 16-30, %f pessoas entre 31-45 e %f pessoas entre 46-60 e %f pessoas maiores de 60 ", f1, f2, f3, f4, f5\n);

printf ("%f % sao menores de 15 anos, %f % sao entre 16-30, %f % sao entre 31-45, %f % sao entre 46-60 e %f % sao maiores de 60 ", f1p, f2p, f3p, f4p, f5p\n);

system ("pause");

}

8) Ler 5 numeros e informar quantos desses eram ímpares.

#include <stdio.h>

main (){

int N=0 ;

float n ;

printf ("numero?"\n);

scanf ("%f", &n);

for (i=0; i<5; i++){

if (n%2!=0){

N = N + 1;

}

}

printf ("%d numeros impares\n", N);

system ("pause");

}

9) Ler 130 numeros e informar quantos desses eram ímpares.

#include <stdio.h>

main (){

int N=0 ;

float n ;

for (i=0; i<130; i++){

printf ("numero?"\n);

scanf ("%f", &n);

if (n%2!=0){

N = N + 1;

}

}

printf ("%d numeros impares\n", N);

system ("pause");

}

10) Ler a altura e o sexo de 15 pessoas (M para homem e F para mulher) e informe 1-a menor e a maior altura, 2-media da altura dos homens, 3-a altura da mulher mais alta 4-quantos eram os homens.

#include <stdio.h>

main (){

int cont=0;

float a, ahMaior,ahMenor, amMaior, amMenor, ahMedia=0;

char sexo;

printf ("informe M para homem ou F para mulher\n");

scanf ("%c", &sexo);

switch(sexo){

case char == M:

printf ("informe altura\n");

scanf ("%f", &a);

ahMaior = a;

ahMenor = a;

cont = cont + 1;

ahMedia = (ahMedia + a)/cont;

if (a > ahMaior){

a = ahMaior;}

if (a < ahMenor){

a = ahMenor;}

break;

case char == F:

printf ("informe altura\n");

scanf ("%f", &a);

amMaior = a;

amMenor = a;

if (a > amMaior){

a = amMaior;}

if (a < amMenor){

a = amMenor;}

break;

default:

printf ("sexo errado\n");

printf ("informe M para homem ou F para mulher\n);

scanf ("%c", &sexo);

break;

}

if (ahMaior > amMaior){

printf ("a maior altura é %f\n", ahMaior);}

if (amMaior < amMaior){

printf ("a maior altura é %f\n", amMaior);}

if (ahMenor < amMenor){

printf ("a menor altura é %f\n", ahMenor);}

if (amMenor > amMenor){

printf ("a menor altura é %f\n", amMenor);}

printf ("a mulher mais alta tem %f metros\n", amMaior);

printf ("%f homens participaram\n", cont);

printf ("a media da altura dos homens é %f\n", ahMedia);

system ("pause");

}

11) Conversão de graus farenheit em celcius através da formula c/9 = f - 32 /5. Escrever uma tabela de conversão de F pra C, com F variando de 50 a 65.

#include <stdio.h>

main (){

int i;

float c;

for (i=50; i<65; i++){

c = (i-32)*9/5;

printf ("%d em farenheit e %f em celcius", i, c);

}

system ("pause");

}

12) Ler a idade e o peso de 15 pessoas. Calcular e imprimir as médias de peso das pessoas da mesma faixa etaria e quantas sao de cada faixa etaria. As faixas de 1 a 10 anos, de 11-20, de 21-30 e maiores de 30.

#include <stdio.h>

main (){

int id;

float p, pesoA, pesoB, pesoC, pesoD, MpesoA, MpesoB, MpesoC, MpesoD;

printf ("idade? peso?");

scanf ("%f%f", &id, &p);

for (i=0; i<15; i++){

if (id <=10){

contA++

pesoA = pesoA + p;

}

if (id >11 && id <=20){

contB++

pesoB = pesoB + p;

}

if (id >21 && id <=30){

contC++

pesoC = pesoC + p;

}

if (id >30){

contD++

pesoD = pesoD + p;

}

MpesoA = pesoA/contA;

MpesoB = pesoB/contB;

MpesoC = pesoC/contC;

MpesoD = pesoD/contD;

printf ("%f, %f, %f, %f ---- Média de pesos por faixa etaria ----", MpesoA, MpesoB, MpesoC, MpesoD\n);

printf ("%f, %f, %f, %f ---- Pessoas por faixa etaria ----", contA, contB, contC, contD\n);

}

system ("pause");

}

Ex) Fazer uma calculadora simples

#include <stdio.h>

#include <math.h>

main(){

char op;

float n1, n2, n3, n4, r;

prinf ("qual a operação?\n");

scanf ("%c", &op);

switch (op){

case char == +: printf ("3 numeros?\n");

scanf ("%f%f%f", &n1,&n2,&n3);

r = n1 + n2 + n3;

printf ("%.2f",r);

break;

case char == -: printf ("3 numeros?\n");

scanf ("%f%f%f", &n1,&n2,&n3);

r = n1 - n2 - n3;

printf ("%.2f",r);

break;

case char == *: printf ("2 numeros?\n");

scanf ("%f%f", &n1,&n2);

r = n1*n2;

printf ("%.2f",r);

break;

case char == /: printf ("2 numeros?\n");

scanf ("%f%f", &n1,&n2);

if (n2 == 0){

printf ("erro");}

if (n1 == 0 && n2 ==0){

printf ("indeterminação");}

else {

r = n1/n2;

printf ("%.2f",r);}

break;

case char == %: printf ("2 numeros?\n");

scanf ("%f%f", &n1,&n2);

if (n2 == 0){

printf ("erro");}

if (n1 == 0 && n2 ==0){

printf ("indeterminação");}

else {

r = n1/n2;

printf ("%.2f",r);}

break;

case char == raiz: printf ("numero?\n");

scanf ("%f", &n1);

if (n1 < 0){

printf ("não existe");

else{

r = sqrt(n1);

printf ("%.2f",r);}

break;

default: printf ("operação inválida. Qual operação?\n");

scanf ("%c", &op);

break;

}

}

Ex) Fatorar um numero

main (){

float num, fat=1;

int i;

printf ("numero?");

scanf ("%f", &num);

for (i=1; i<num; i++){

fat = num*i;

printf ("%f", fat);

}

}

Ex) Use códigos para que um programa leia 4 notas de um aluno (a 1o tem peso 3, a 2o 2 e a 3o e 4o peso 1). Calcule a média e diga se ele passou, não passou ou vai para a recuperação (precisando de tantos pontos). Além disso tire a media da turma. Um programa teve ter um loop infinito ate que digite '0' na matricula.

main (){

int mat, Tmedia, final, cont=0;

float n1, n2, n3, n4, r, Tsoma=0;

printf ("matricula?");

scanf ("%d", &mat);

while (mat!=0){

cont = cont + 1

printf ("as quatro notas?");

scanf ("%f%f%f%f", &n1, &n2, &n3, &n4);

r = ((n1*3) + (n2*2) + n3 + n4) /4;

Tsoma = Tsoma + r;

if (r >= 7){

printf ("aprovado");

}

if (r<7 && r>=4){

printf ("final");

final = 50 - (r*7);

printf ("precisa de %d pontos na final", final);

}

if (r < 4){

printf ("reprovado");

}

}

printf ("matricula?");

scanf ("%d", &mat);

Tmedia = Tsoma / cont;

printf ("%f é a media da turma", Tmedia);

system ("pause");

}

Ex) Encontrar os cinco primeiros numeros perfeitos.

//um numero perfeito é quando a some de seus divisores com exceção dele mesmo resultam nesse numero. Por exemplo: 6, onde 1 + 2 + 3 = 6.

// Ao executar o programa a maquina fica lenta porque são muitos calculos. Para ter idéia pitágoras só chegou até o quarto numero perfeito...

// Detalhe que o programa não vai interagir com o usuário.

main (){

int n=0, acumulador=0, p=0, i;

while (p!=5){

for (i=1; 1<n; i++){

if (n%i == 0){

acumulador = acumulador + i;

}

}

if (acumulador == n){

p = p + 1;

printf ("%d é perfeito",n);

}

n = n + 1;

acumulador = 0;

}

}

Ex) Ler n numeros e contar quantos são pares. O pragrama deve parar quando ler um multiplo de 11.

main (){

int n=1, cont=0;

while (n%11!=0){

printf ("qual o numero?");

scanf ("%d", &n);

if (n%2==0){

cont = cont + 1;

}

}

printf ("%d numeros foram pares", n);

system ("pause");

}

Comentários