Mudanças entre as edições de "Programação 1 - Engenharia - Comandos de Decisão no C"
Linha 292: | Linha 292: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
− | + | 1. Implementar um programa que lê um número inteiro e imprime se o número é par ou ímpar. SUGESTÃO: Usar o operador de resto. | |
− | #Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos. | + | {{collapse top|Solução - Exercicio 01}} |
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | int x,y; | ||
+ | |||
+ | printf("Entre com um numero\n"); | ||
+ | scanf("%d",&x); | ||
+ | |||
+ | y = x%2; | ||
+ | //se a divisao por 2 tiver resto, é impar, caso contrario é par | ||
+ | if (y==0) | ||
+ | printf("O numero é par\n"); | ||
+ | else printf("O numero é impar\n"); | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 2. Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos. | ||
+ | {{collapse top|Solução - Exercicio 02}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float x,y,media; | ||
+ | |||
+ | printf("Entre com o primeiro numero\n"); | ||
+ | scanf("%f",&x); | ||
+ | printf("Entre com o segundo numero\n"); | ||
+ | scanf("%f",&y); | ||
+ | //se x igual a y | ||
+ | if (x==y) { | ||
+ | printf("Os numeros são iguais\n"); | ||
+ | } else { //senao | ||
+ | printf("Os numeros são diferentes\n"); | ||
+ | media = (x+y)/2; | ||
+ | printf("Media dos numeros = %f\n",media); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
<!-- | <!-- | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 314: | Linha 357: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
− | + | 3. Implementar um programa para ler 4 números inteiros e imprimir uma mensagem caso a soma dos dois primeiros seja igual ou menor que a soma dos dois últimos. | |
+ | {{collapse top|Solução - Exercicio 03}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float a,b,c,d; | ||
+ | float soma1,soma2; | ||
+ | |||
+ | printf("Entre com o primeiro numero\n"); | ||
+ | scanf("%f",&a); | ||
+ | printf("Entre com o segundo numero\n"); | ||
+ | scanf("%f",&b); | ||
+ | printf("Entre com o terceiro numero\n"); | ||
+ | scanf("%f",&c); | ||
+ | printf("Entre com o quarto numero\n"); | ||
+ | scanf("%f",&d); | ||
+ | soma1 = a+b; | ||
+ | soma2 = c+d; | ||
+ | //se x igual a y | ||
+ | if (soma1 <= soma2) | ||
+ | printf("A soma é menor ou igual\n"); | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
<!--<syntaxhighlight lang=c> | <!--<syntaxhighlight lang=c> | ||
main() | main() | ||
Linha 338: | Linha 407: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
− | + | 4. Implementar um programa para ler dois números reais e, na sequência, um número inteiro. Se o número inteiro for 1 os dois números iniciais deverão ser somados, se for 2 eles serão subtraídos, se for 3 eles serão multiplicados e se for 4 serão divididos. Mostrar mensagem de erro se o número inteiro não estiver na faixa de 1 a 4. Mostrar mensagem caso a divisão não seja possível. | |
+ | {{collapse top|Solução - Exercicio 04}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float x,y; | ||
+ | float result; | ||
+ | int i; | ||
+ | |||
+ | printf("Entre com o primeiro numero real\n"); | ||
+ | scanf("%f",&x); | ||
+ | printf("Entre com o segundo numero real\n"); | ||
+ | scanf("%f",&y); | ||
+ | printf("Entre com o numero inteiro\n"); | ||
+ | scanf("%d",&i); | ||
+ | //se x igual a y | ||
+ | if (i>4 || i<1) { | ||
+ | printf("O Numero inteiro só pode ser entre 1 e 4\n"); | ||
+ | } else { //utilizei if, porem pode-se utilizar switch case. | ||
+ | if(i==1) { | ||
+ | result = x+y; | ||
+ | printf("Soma: %f\n",result); | ||
+ | } | ||
+ | if(i==2) { | ||
+ | result = x-y; | ||
+ | printf("Subtração: %f\n",result); | ||
+ | } | ||
+ | if(i==3) { | ||
+ | result = x*y; | ||
+ | printf("Multiplicacao: %f\n",result); | ||
+ | } | ||
+ | if(i==4) { | ||
+ | if(y==0) { | ||
+ | printf("Não é possivel dividir por zero\n"); | ||
+ | } else { | ||
+ | result = x/y; | ||
+ | printf("Divisao: %f\n",result); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
<!-- | <!-- | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 376: | Linha 489: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
− | + | 5. Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada. Implemente o algoritmo na forma de um programa C. | |
− | #Implementar um programa que recebe três números reais e então o programa testa se estes números podem formar um triângulo EQUILÁTERO, ISÓSCELES, ESCALENO ou NÃO pode ser triângulo. (ver pseudocódigo abaixo).<code> | + | {{collapse top|Solução - Exercicio 05}} |
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float temp; | ||
+ | |||
+ | |||
+ | printf("Entre com a temperatura\n"); | ||
+ | scanf("%f",&temp); | ||
+ | |||
+ | //se x igual a y | ||
+ | if (temp >30) | ||
+ | printf("Quente\n"); | ||
+ | else if(temp <= 30 && temp >= 25) | ||
+ | printf("Morna\n"); | ||
+ | else if(temp < 25) | ||
+ | printf("Fria\n"); | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 6. Implementar um programa que recebe três números reais e então o programa testa se estes números podem formar um triângulo EQUILÁTERO, ISÓSCELES, ESCALENO ou NÃO pode ser triângulo. (ver pseudocódigo abaixo).<code> | ||
ALGORITMO trangulo | ALGORITMO trangulo | ||
VARIAVEIS | VARIAVEIS | ||
Linha 400: | Linha 536: | ||
FIM | FIM | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | #Implementar um programa C para converter um ângulo em radianos para graus. | + | {{collapse top|Solução - Exercicio 06}} |
− | #Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma. Usar a função ''sqrtf'' (ver http://en.cppreference.com/w/c/numeric/math/sqrt). | + | <syntaxhighlight lang=c> |
− | #Uma empresa irá ajustar o salário de seus funcionários de acordo com a categoria de trabalho dos funcionários: CAT A (10% de aumento), CAT B (15% de aumento) e CAT C (20% de aumento). Faça um programa que leia o plano de trabalho e o salário atual de um funcionário e calcula e imprime o seu novo salário. Use o comando switch. | + | #include<stdio.h> |
− | #Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso. Use o comando switch. | + | |
+ | main(){ | ||
+ | float lado1,lado2,lado3; | ||
+ | |||
+ | printf("Insira o valor do lado 1 do triangulo\n"); | ||
+ | scanf("%f",&lado1); | ||
+ | printf("Insira o valor do lado 2 do triangulo\n"); | ||
+ | scanf("%f",&lado2); | ||
+ | printf("Insira o valor do lado 3 do triangulo\n"); | ||
+ | scanf("%f",&lado3); | ||
+ | |||
+ | if(lado1>(lado2+lado3) || lado2>(lado1+lado3) || lado3>(lado1+lado2)){ | ||
+ | printf("não é triângulo\n"); | ||
+ | }else if(lado1==lado2 && lado1==lado3){ | ||
+ | printf("equilatero\n"); | ||
+ | }else if(lado1==lado2 || lado1==lado3 || lado2==lado3){ | ||
+ | printf("isósceles\n"); | ||
+ | }else{ | ||
+ | printf("escaleno\n"); | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 7. Implementar um programa C para converter um ângulo em radianos para graus. | ||
+ | {{collapse top|Solução - Exercicio 07}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float rad,graus; | ||
+ | |||
+ | |||
+ | printf("Entre com o angulo em rad\n"); | ||
+ | scanf("%f",&rad); | ||
+ | |||
+ | graus = rad*(180/3.1415); | ||
+ | printf("O angulo em graus = %f\n",graus); | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 8. Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma. Usar a função ''sqrtf'' (ver http://en.cppreference.com/w/c/numeric/math/sqrt). | ||
+ | {{collapse top|Solução - Exercicio 08}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | #include <math.h> //precisa incluir para usar a função sqrt() | ||
+ | //Alem disso na hora da compilação precisa-se utilizar o comando "-lm" para linkar a biblioteca math.h com seu aplicativo. | ||
+ | //ficaria assim "gcc 'nome_do_arquivo' -o 'nome_de_saida_do_app' -lm" | ||
+ | |||
+ | main () | ||
+ | { | ||
+ | float a,b,c; | ||
+ | float x1,x2; | ||
+ | |||
+ | |||
+ | printf("Entre com o 'a'\n"); | ||
+ | scanf("%f",&a); | ||
+ | printf("Entre com o 'b'\n"); | ||
+ | scanf("%f",&b); | ||
+ | printf("Entre com o 'c'\n"); | ||
+ | scanf("%f",&c); | ||
+ | |||
+ | if(a!=0) { | ||
+ | x1 = ( -b + (sqrtf((b*b)-4*a*c)) )/(2*a); | ||
+ | x2 = ( -b - (sqrtf((b*b)-4*a*c)) )/(2*a); | ||
+ | printf("Raiz x1 : %f\n",x1); | ||
+ | printf("Raiz x2 : %f\n",x2); | ||
+ | } else { | ||
+ | printf("O 'a' precisa ser diferente de zero\n"); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 9. Uma empresa irá ajustar o salário de seus funcionários de acordo com a categoria de trabalho dos funcionários: CAT A (10% de aumento), CAT B (15% de aumento) e CAT C (20% de aumento). Faça um programa que leia o plano de trabalho e o salário atual de um funcionário e calcula e imprime o seu novo salário. Use o comando switch. | ||
+ | {{collapse top|Solução - Exercicio 09}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | |||
+ | main () | ||
+ | { | ||
+ | float salario,novosalario; | ||
+ | char cargo; | ||
+ | |||
+ | |||
+ | printf("Entre com o salario do funcionario\n"); | ||
+ | scanf ("%f",&salario); | ||
+ | printf("Entre com o cargo do funcionario(A,B,C):"); | ||
+ | scanf (" %c",&cargo); | ||
+ | printf("%c\n",cargo); | ||
+ | |||
+ | //para nao acontecer erros, verifica-se se o caracter é exatamente o solicitado, se sim, o programa executa normalmente. | ||
+ | if(cargo== 'A' || cargo=='B' || cargo=='C') { | ||
+ | switch(cargo) { | ||
+ | case 'A': | ||
+ | novosalario = (salario*0.1)+salario; | ||
+ | printf("Novo salario do funcionario = %f\n", novosalario); | ||
+ | break; | ||
+ | case 'B': | ||
+ | novosalario = (salario*0.15)+salario; | ||
+ | printf("Novo salario do funcionario = %f\n", novosalario); | ||
+ | break; | ||
+ | case 'C': | ||
+ | novosalario = (salario*0.2)+salario; | ||
+ | printf("Novo salario do funcionario = %f\n", novosalario); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | 10. Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso. Use o comando switch. | ||
+ | {{collapse top|Solução - Exercicio 10}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | |||
+ | main () | ||
+ | { | ||
+ | int numero; | ||
+ | |||
+ | |||
+ | |||
+ | printf("Entre com o numero de 0 ate 10\n"); | ||
+ | scanf ("%d",&numero); | ||
+ | //para nao acontecer erros, verifica-se se o numero é exatamente o solicitado, se sim, o programa executa normalmente. | ||
+ | if(numero > 0 || numero < 10) { | ||
+ | switch(numero) { | ||
+ | case 0: | ||
+ | printf("Zero\n"); | ||
+ | break; | ||
+ | case 1: | ||
+ | printf("Um\n"); | ||
+ | break; | ||
+ | case 2: | ||
+ | printf("Dois\n"); | ||
+ | break; | ||
+ | case 3: | ||
+ | printf("Tres\n"); | ||
+ | break; | ||
+ | case 4: | ||
+ | printf("Quatro\n"); | ||
+ | break; | ||
+ | case 5: | ||
+ | printf("Cinco\n"); | ||
+ | break; | ||
+ | case 6: | ||
+ | printf("Seis\n"); | ||
+ | break; | ||
+ | case 7: | ||
+ | printf("Sete\n"); | ||
+ | break; | ||
+ | case 8: | ||
+ | printf("Oito\n"); | ||
+ | break; | ||
+ | case 9: | ||
+ | printf("Nove\n"); | ||
+ | break; | ||
+ | case 10: | ||
+ | printf("Dez\n"); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
#Tente inferir as saídas do programa abaixo e depois o execute para conferir os resultados. | #Tente inferir as saídas do programa abaixo e depois o execute para conferir os resultados. | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> |
Edição das 15h19min de 22 de fevereiro de 2019
Objetivos
- Utilizar os operadores relacionais e lógicos na programação C
- um pouco mais sobre variáveis: tipo char
- Utilizar o comando de decisão if else
- comando switch
Operadores Relacionais e Lógicos
Os operadores relacionais e lógicos são os mesmos vistos na aula anterior.
Operador | Significado |
---|---|
> | maior que |
>= | maior ou igual que |
< | menor que |
<= | menor ou igual que |
== | igual a (se o operando a esquerda é maior que o da direita) |
!= | diferente de (se o operando a esquerda é diferente do da direita) |
Operador | Significado |
---|---|
&& | AND (E) |
|| | OR (OU) |
! | NOT (NÃO) |
Ver Operadores Relacionais e Lógicos
Comandos de decisão if() e if() else
Atenção: preste atenção quando é necessário usar blocos!!!
#include <stdio.h>
main()
{
int x; /* declaração de uma variável inteira */
int y; /* declaração de uma variável inteira */
printf ("Entre com o valor de x ");
scanf("%d",&x);
printf ("Entre com o valor de y ");
scanf("%d",&y);
if (y>x)
printf("MSG1:y é maior que x\n");
if (y>x)
printf("MSG2:y é maior que x\n");
else
printf("MSG3:y é igual ou menor que x\n");
}
Outro exemplo, usando blocos:
#include <stdio.h>
main()
{
int x,y,z; /* declaração de uma variável inteira */
printf ("Entre com o valor de x ");
scanf("%d",&x);
printf ("Entre com o valor de y ");
scanf("%d",&y);
if (y>x) {
printf("MSG1: y é maior que x\n");
z = y-x;
printf("MSG2: Neste caso z = %d\n", z);
} else {
printf("MSG3: y é igual ou menor que x\n");
z = x-y;
printf("MSG4: Neste caso z = %d\n", z);
}
}
No C, qualquer expressão que resulta em 0 é considerada FALSA e qualquer expressão com valor diferente de 0 é VERDADEIRA.
Exemplo:
if (2)
printf("expressão sempre VERDADEIRA");
if ('2')
printf("expressão sempre VERDADEIRA");
if (1-1)
printf("expressão sempre FALSA");
if (x=1) /* um erro comum - sinal de atribuição no lugar de == */
printf("expressão sempre VERDADEIRA");
Tipo Char
Uma variável do tipo caracter é tratada como um número inteiro e declarada com o tipo char, que na prática é um número inteiro de 1 byte.
Exemplo
#include <stdio.h>
main ()
{
char x='A',y=65,w=0x41,z;
scanf("%c",&z);
printf("Caracter lido = %c\n",z);
printf("Caracter lido = %d\n",z);
printf("Caracter lido = %x\n",z);
if (z==x)
printf("Iguais 1\n");
if (z==y)
printf("Iguais 2\n");
if (z==w)
printf("Iguais 3\n");
}
Múltiplas Condições
Se for necessário testar múltiplas condições pode-se usar um "else if" da forma:
#include <stdio.h>
main ()
{
char x;
printf("Entre com um caracter\n");
scanf("%c",&x);
if (x=='A')
printf("Igual a A\n");
else if(x>'F' && x < 'M')
printf("Entre F e M\n");
else if (x>='a' && x<='z')
printf ("minúsculo\n");
else
printf ("Outro...\n");
}
Indentação
Comando switch
O comando switch permite controlar o fluxo de um programa de forma condicional. O comando testa uma expressão que deve resultar em um número inteiro. Uma sequência de cláusulas case permite executar uma sequência de instruções conforme o valor da expressão. Note que esta sequência de instruções pode ser interrompida por um break.
#include <stdio.h>
int x=1;
main ()
{
int opcao;
printf("Entre com uma opção (número inteiro)\n");
scanf ("%d",&opcao);
switch(opcao) {
case 1:
printf("opcao 1\n");
break; /* o break força o encerramento da instrução*/
case 2:
printf("opcao 2\n");
x++; /* instrução demonstrativa apenas */
printf("Note que pode existir ums lista de instruções\n");
break;
case 3:
printf("opcao 3\n"); /* note o efeito de não ter o break */
case 4:
printf("opcao 4\n");
break;
case 5:
printf("opcao 5\n");
break;
default:
printf("opcao default\n");
break; /* a opção default é opcional */
}
}
Referência: ver link sobre switch Exemplo1 1
Implementar um programa de calculadora onde são fornecidos via scanf dois operandos reais e uma operação que pode ser uma das 4 operações. Com auxílio de um switch deve ser computado e mostrado o resultado da operação. Solução:
#include <stdio.h>
main ()
{
float operando1, operando2, res;
char operador;
printf("Entre com operando 1\n");
scanf ("%f",&operando1);
printf("Entre com operando 2\n");
scanf ("%f",&operando2);
printf("Entre com operador\n");
scanf (" %c",&operador);
switch(operador) {
case '+':
res = operando1 + operando2;
printf("Valor da soma = %f\n", res);
break;
case '-':
res = operando1 - operando2;
printf("Valor da diferença = %f\n", res);
break;
case '*':
res = operando1 * operando2;
printf("Valor da diferença = %f\n", res);
break;
case '/':
if (operando2 != 0) {
res = operando1 / operando2;
printf("Valor da diferença = %f\n", res);
} else
printf("Divisão por zero não permitida!\n");
break;
default:
printf("Operação inválida!\n");
break;
}
}
Exercícios
1. Implementar um programa que lê um número inteiro e imprime se o número é par ou ímpar. SUGESTÃO: Usar o operador de resto.
Solução - Exercicio 01 |
---|
#include <stdio.h>
main ()
{
int x,y;
printf("Entre com um numero\n");
scanf("%d",&x);
y = x%2;
//se a divisao por 2 tiver resto, é impar, caso contrario é par
if (y==0)
printf("O numero é par\n");
else printf("O numero é impar\n");
}
|
2. Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos.
Solução - Exercicio 02 |
---|
#include <stdio.h>
main ()
{
float x,y,media;
printf("Entre com o primeiro numero\n");
scanf("%f",&x);
printf("Entre com o segundo numero\n");
scanf("%f",&y);
//se x igual a y
if (x==y) {
printf("Os numeros são iguais\n");
} else { //senao
printf("Os numeros são diferentes\n");
media = (x+y)/2;
printf("Media dos numeros = %f\n",media);
}
}
|
3. Implementar um programa para ler 4 números inteiros e imprimir uma mensagem caso a soma dos dois primeiros seja igual ou menor que a soma dos dois últimos.
Solução - Exercicio 03 |
---|
#include <stdio.h>
main ()
{
float a,b,c,d;
float soma1,soma2;
printf("Entre com o primeiro numero\n");
scanf("%f",&a);
printf("Entre com o segundo numero\n");
scanf("%f",&b);
printf("Entre com o terceiro numero\n");
scanf("%f",&c);
printf("Entre com o quarto numero\n");
scanf("%f",&d);
soma1 = a+b;
soma2 = c+d;
//se x igual a y
if (soma1 <= soma2)
printf("A soma é menor ou igual\n");
}
|
4. Implementar um programa para ler dois números reais e, na sequência, um número inteiro. Se o número inteiro for 1 os dois números iniciais deverão ser somados, se for 2 eles serão subtraídos, se for 3 eles serão multiplicados e se for 4 serão divididos. Mostrar mensagem de erro se o número inteiro não estiver na faixa de 1 a 4. Mostrar mensagem caso a divisão não seja possível.
Solução - Exercicio 04 |
---|
#include <stdio.h>
main ()
{
float x,y;
float result;
int i;
printf("Entre com o primeiro numero real\n");
scanf("%f",&x);
printf("Entre com o segundo numero real\n");
scanf("%f",&y);
printf("Entre com o numero inteiro\n");
scanf("%d",&i);
//se x igual a y
if (i>4 || i<1) {
printf("O Numero inteiro só pode ser entre 1 e 4\n");
} else { //utilizei if, porem pode-se utilizar switch case.
if(i==1) {
result = x+y;
printf("Soma: %f\n",result);
}
if(i==2) {
result = x-y;
printf("Subtração: %f\n",result);
}
if(i==3) {
result = x*y;
printf("Multiplicacao: %f\n",result);
}
if(i==4) {
if(y==0) {
printf("Não é possivel dividir por zero\n");
} else {
result = x/y;
printf("Divisao: %f\n",result);
}
}
}
}
|
5. Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada. Implemente o algoritmo na forma de um programa C.
Solução - Exercicio 05 |
---|
#include <stdio.h>
main ()
{
float temp;
printf("Entre com a temperatura\n");
scanf("%f",&temp);
//se x igual a y
if (temp >30)
printf("Quente\n");
else if(temp <= 30 && temp >= 25)
printf("Morna\n");
else if(temp < 25)
printf("Fria\n");
}
|
6. Implementar um programa que recebe três números reais e então o programa testa se estes números podem formar um triângulo EQUILÁTERO, ISÓSCELES, ESCALENO ou NÃO pode ser triângulo. (ver pseudocódigo abaixo).
ALGORITMO trangulo
VARIAVEIS
lado1,lado2,lado3: real
INICIO
Ler lado1
Ler lado2
Ler lado3
SE lado1>(lado2+lado3) OU lado2>(lado1+lado3) OU lado3>(lado1+lado2) ENTÃO
MOSTRAR "não é triângulo"
SENÃO
SE lado1==lado2 E lado1==lado3 ENTÃO
MOSTRAR "equilatero"
SENAO
SE lado1==lado2 OU lado1==lado3 OU lado2==lado3 ENTÃO
MOSTRAR "isósceles"
SENÃO
MOSTRAR "escaleno"
FIMSE
FIMSE
FIMSE
FIM
</syntaxhighlight>
Solução - Exercicio 06
#include<stdio.h>
main(){
float lado1,lado2,lado3;
printf("Insira o valor do lado 1 do triangulo\n");
scanf("%f",&lado1);
printf("Insira o valor do lado 2 do triangulo\n");
scanf("%f",&lado2);
printf("Insira o valor do lado 3 do triangulo\n");
scanf("%f",&lado3);
if(lado1>(lado2+lado3) || lado2>(lado1+lado3) || lado3>(lado1+lado2)){
printf("não é triângulo\n");
}else if(lado1==lado2 && lado1==lado3){
printf("equilatero\n");
}else if(lado1==lado2 || lado1==lado3 || lado2==lado3){
printf("isósceles\n");
}else{
printf("escaleno\n");
}
}
7. Implementar um programa C para converter um ângulo em radianos para graus.
Solução - Exercicio 07
#include <stdio.h>
main ()
{
float rad,graus;
printf("Entre com o angulo em rad\n");
scanf("%f",&rad);
graus = rad*(180/3.1415);
printf("O angulo em graus = %f\n",graus);
}
8. Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma. Usar a função sqrtf (ver http://en.cppreference.com/w/c/numeric/math/sqrt).
Solução - Exercicio 08
#include <stdio.h>
#include <math.h> //precisa incluir para usar a função sqrt()
//Alem disso na hora da compilação precisa-se utilizar o comando "-lm" para linkar a biblioteca math.h com seu aplicativo.
//ficaria assim "gcc 'nome_do_arquivo' -o 'nome_de_saida_do_app' -lm"
main ()
{
float a,b,c;
float x1,x2;
printf("Entre com o 'a'\n");
scanf("%f",&a);
printf("Entre com o 'b'\n");
scanf("%f",&b);
printf("Entre com o 'c'\n");
scanf("%f",&c);
if(a!=0) {
x1 = ( -b + (sqrtf((b*b)-4*a*c)) )/(2*a);
x2 = ( -b - (sqrtf((b*b)-4*a*c)) )/(2*a);
printf("Raiz x1 : %f\n",x1);
printf("Raiz x2 : %f\n",x2);
} else {
printf("O 'a' precisa ser diferente de zero\n");
}
}
9. Uma empresa irá ajustar o salário de seus funcionários de acordo com a categoria de trabalho dos funcionários: CAT A (10% de aumento), CAT B (15% de aumento) e CAT C (20% de aumento). Faça um programa que leia o plano de trabalho e o salário atual de um funcionário e calcula e imprime o seu novo salário. Use o comando switch.
Solução - Exercicio 09
#include <stdio.h>
main ()
{
float salario,novosalario;
char cargo;
printf("Entre com o salario do funcionario\n");
scanf ("%f",&salario);
printf("Entre com o cargo do funcionario(A,B,C):");
scanf (" %c",&cargo);
printf("%c\n",cargo);
//para nao acontecer erros, verifica-se se o caracter é exatamente o solicitado, se sim, o programa executa normalmente.
if(cargo== 'A' || cargo=='B' || cargo=='C') {
switch(cargo) {
case 'A':
novosalario = (salario*0.1)+salario;
printf("Novo salario do funcionario = %f\n", novosalario);
break;
case 'B':
novosalario = (salario*0.15)+salario;
printf("Novo salario do funcionario = %f\n", novosalario);
break;
case 'C':
novosalario = (salario*0.2)+salario;
printf("Novo salario do funcionario = %f\n", novosalario);
break;
}
}
}
10. Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso. Use o comando switch.
Solução - Exercicio 10
#include <stdio.h>
main ()
{
int numero;
printf("Entre com o numero de 0 ate 10\n");
scanf ("%d",&numero);
//para nao acontecer erros, verifica-se se o numero é exatamente o solicitado, se sim, o programa executa normalmente.
if(numero > 0 || numero < 10) {
switch(numero) {
case 0:
printf("Zero\n");
break;
case 1:
printf("Um\n");
break;
case 2:
printf("Dois\n");
break;
case 3:
printf("Tres\n");
break;
case 4:
printf("Quatro\n");
break;
case 5:
printf("Cinco\n");
break;
case 6:
printf("Seis\n");
break;
case 7:
printf("Sete\n");
break;
case 8:
printf("Oito\n");
break;
case 9:
printf("Nove\n");
break;
case 10:
printf("Dez\n");
break;
}
}
}
- Tente inferir as saídas do programa abaixo e depois o execute para conferir os resultados.
#include <stdio.h>
main ()
{
int x;
x = !( 1 || 0 );
printf ("x=%d\n",x);
x = !( 0 || 1 && 0 );
printf ("x=%d\n",x);
x = !( 0 || 1 && 1 );
printf ("x=%d\n",x);
x = !( ( 0 || 1 ) && 1 );
printf ("x=%d\n",x);
}