Buscar

Atividade Prática 2018 - Lógica da Programação e Algoritmos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercício 1: 
Faça um algoritmo em linguagem C que recebe três valores X, Y e Z do usuário, e 
determine se estes valores podem formar os lados de um triangulo (por exemplo, o 
valor zero não pode formar um triangulo). Em caso afirmativo, informar na tela se o 
triangulo é equilátero, isósceles ou escaleno. 
Imprima na tela um teste do seu programa utilizando os três últimos valores de seu 
RU da UNINTER como lados do triangulo, cada valor do seu RU será um dos 
valores X, Y ou Z. Por exemplo, se seu RU for 1234567, faça X = 5, Y = 6 e Z = 7. 
#include <stdio.h>
#include <stdlib.h>
int main()
{ // Definição das 3 váriaveis para receber os lados do triangulo
int x, y, z;
// Apresenta mensagem na tela solicitando o valor para x
printf("Informe o valor para variavel x :");
// Recebe o valor para x, digitado pelo usuário
scanf_s("%d", &x);
// Apresenta mensagem na tela solicitando o valor para y
printf("Informe o valor para variavel y :");
// Recebe o valor para y, digitado pelo usuário
scanf_s("%d", &y);
// Apresenta mensagem na tela solicitando o valor para z
printf("Informe o valor para variavel z :");
// Recebe o valor para z, digitado pelo usuário
scanf_s("%d", &z);
// Testa para verificar se todos os valores são maiores que zero, 
possíveis de formar um triangulo
if ((x > 0) && (y > 0) && (z > 0) )
{// Apresenta mensagem que os valores podem formar um triangulo 
printf("Os valores podem formar um triangulo\n\n");
// Se os tres valores forem iguais forma-se um triangulo quilatero
if ((x==y) && (x==z))
{
printf("Equilatero, tres lados iguais\n");
}
else
// Se dois valores forem iguais forma-se um triangulo 
Isoceles
if ((x == y) || (x == z) || (y == z))
{
printf("Isosceles, 2 lados iguais\n");
}
else
 // Se os tres valores forem diferentes forma-se um 
triangulo Escaleno 
 {
printf("Escaleno, 3 lados diferente \n");
}
}
1
else // Se os valores não podem formar um triangulo é mostrado a mensagem
{
printf("Os valores nao podem formar um triangulo\n\n");
}
// Aguarda usuário fechar a tela
system("pause");
// Retorna o valor 0
return 0;
}
(* RU 2391096 *)
Exercício 2: 
A tabela abaixo foi retirada do site da Receita Federal, e traz as alíquotas do 
imposto de renda de pessoa física retido na fonte: 
Base de Cálculo (R$) Alíquota (%) Parcela a deduzir do 
IRPF (R$) 
Até 1903,98 - -
De 1903,99 até 2826,65 7,5 142,80 
De 2826,66 até 3751,05 15 354,80 
De 3751,06 até 4664,68 22,5 636,13 
Acima de 4664,68 27,5 869,36 
A base de cálculo de imposto é dada pelo salário mensal, com certas deduções, 
como dependentes e contribuição previdenciária. Abstraindo estas deduções e 
outros detalhes, o imposto devido é resumidamente calculado tomando como base 
2
de cálculo o salário mensal, verificando a faixa na qual ele se encontra, aplicando a 
alíquota correspondente, e reduzindo o valor final da parcela a deduzir. Por 
exemplo, se a base de cálculo é um salário de R$10.000,00, a alíquota é de 27,5%, 
ou seja, R$2750,00. 
Deduzimos da alíquota o valor de R$869,36 e obtemos como resultado final R
$1880,64 de imposto devido. 
Escreva um programa em linguagem C que receba como dado de entrada a base 
de cálculo mensal de um trabalhador (seu salário) e retorne o imposto de renda 
devido. 
Imprima na tela um exemplo contendo o salário do trabalhador, o imposto devido e o 
salário final já com este desconto. Para o exemplo, utilize o seu RU da UNINTER 
pegando somente os 4 últimos dígitos dela e usando-os como salário. Por exemplo, 
se seu RU for 1234567, o salário será R$ 4567. 
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Define vetor da tabela de IR 5 linhas e 3 colunas 
// Coluna 0 contem o valor máximo da faixa do IR
// Coluna 1 contem a aliquota do IR a ser calculado
// Coluna 2 contem o valor da dedução
double tabelaIRF[5][3] = { {1903.98,0.0,0.0}, {2826.65, 7.5, 142.80}, 
{3751.05, 15.0, 354.80}, {4664.68, 22.5, 636.13}, {999999999999999.99, 27.5, 
869.36}};
// variável salario recebe o valor base para cálculo
// variável irDevido conterá o valor cálculado do IR
double salario, irDevido;
int i;
// Solicita a entrada do valor do salário base para cálculo
printf("Informe o valor so salario base para calculo do IRF:");
// Recebe o valor digitado em salario
scanf_s("%lf", &salario);
3
// Percorre o array para encontrar a faixa que se encontra o valor 
informado
for (i=0 ;i<5;i++)
{
// Se o valor salario é menor ou igual a faixa da tabela usa a 
aliquota e a dedução do indice encontrato
if (salario <= tabelaIRF[i][0])
{
irDevido = salario * tabelaIRF[i][1] / 100 - tabelaIRF[i]
[2];
break;
}
}
// Mostra o valor do salário a aliquota a dedução e o valor do IR devido
printf("Salario base %.2lf\n", salario);
printf("Aliquota do IRF %.2lf\n", tabelaIRF[i][1]);
printf("Deducao do IRF %.2lf\n", tabelaIRF[i][2]);
printf("IR devido %.2lf\n", irDevido);
// Aguarda usuário fechar a tela
system("pause");
// Retorna o valor 0
return 0;
}
4
Exercício 3: 
Faça um algoritmo em linguagem C com as seguintes funcionalidades: 
 Leia um vetor de N posições. O valor máximo de N deverá ser no máximo 100. A 
leitura deverá ser feita manualmente pelo teclado; 
 Crie mais dois vetores. Armazene em um destes vetores todos os valores PARES 
digitados, e no outro, todos os valores ÍMPARES digitados; 
 Imprima na tela, de uma forma legível, o número do seu RU, o vetor dos pares e o 
vetor dos ímpares, este último deve ter multiplicado cada valor pelos dois últimos 
números do seu RU. Por exemplo: se seu RU for 1234567, multiplique cada valor 
do vetor por 67. 
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Define vetor principal máx 100
int principal[100];
// Define vetor para os números pares
int numerospares[100];
// Define vetor para os números impares
5
int numerosimpares[100];
// Define variaveis auxiliares de controle i0 total de números, i1 total 
de numeros pares, i2 total de numeros impares
int i,i0 = 0, i1 = 0, i2 = 0;
// Mostra mesnagem para que seja fornecido uma sequência de números (max 
100) digitado 0 para finalizar a entrada de dados.
printf("Informe uma sequencia de números, uma a um, quando desejar para 
(digite 0)\n");
for (i = 0; i < 100; i++)
{
printf("\nInforme o %do numero (digite 0) para finalizar ", i + 
1);
scanf_s("%d", &principal[i]);
// Testa se o valor informado for 0 finaliza a entrada de dados
if (principal[i] == 0)
{
break;
}
else {
i0++;
}
// Testa se o numero informado é positivo armazena no vetor 
numerospares
if ((principal[i] % 2) == 0)
{
numerospares[i1] = principal[i];
i1++;
}
// Caso não seja par é impar, armazena no vetor numerosimpares
else {
numerosimpares[i2] = principal[i];
6
i2++;
}
}
//system("cls");
printf("***********************\n");
printf("***** RU 2391096 *****\n");
printf("***********************\n\n");
// Mostra os números pares informados
printf("\n\n***** Numeros pares *****\n");
for (i = 0; i < i1; i++)
{
printf("%d ", numerospares[i]);
}
// Mostra os números impares informados multiplicando os por 96
printf("\n\n***** Numeros impares * 96 *****\n");
for (i = 0; i < i2; i++)
{
// Multiplica o valor do numero impar por 96 (ultimos numeros do 
RU 2391096 
numerosimpares[i] = numerosimpares[i] * 96;
printf("%d ", numerosimpares[i]);
}
printf("\n\n");
system("pause");
return 0;
}
7
Exercício 4: 
Faça um algoritmo em linguagem C com as seguintes funcionalidades: 
 Receba duas matrizes como dados de entrada. A dimensão das matrizes deve 
ser de, no máximo 5x5. Ambas matrizes devem ter as mesmas dimensões; 
 O usuário deve digitar a dimensão das matrizes (máximo5x5). Faça uma 
checagem usando um laço de repetição que só permita o programa avançar caso 
ele digite dimensões corretas de no máximo 5; 
 Escreva ambas matrizes na tela, de uma forma legível; 
Escreva a matriz resultante da soma destas duas matrizes multiplicada pelos 
últimos dois números do seu RU da UNINTER; 
 Escreva um vetor resultante da soma das diagonais principais das duas matrizes 
multiplicado pelos últimos dois números do seu RU da UNINTER; 
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Define as matrizes matriz1 e matriz2 e matrizsoma com no máximo 5x5, e 
o vetor para armazenar a soma da diagonal principal
8
int matriz1[5][5], matriz2[5][5], matrizsoma[5][5], vetor[5];
// Define variavel para a dimensão
int dimensao;
// Define variaveis de controle i0 matriz 1 i1 matriz 2
int i0, i1, v=0;
// Repete a entrada de dados para a dimensão até que a mesma esteja 
dentro do limite de 1 a 5
do
{
system("cls");
printf("informa a dimensao para duas matrizes no maximo 5x5\n");
printf("informa a dimensao\n");
scanf_s("%d", &dimensao);
}
while ((dimensao > 5) || (dimensao == 0));
// Solicita os valores para a primeira matriz
printf("\n\nEntre com os valores para a primeira matriz [%dx%d]\n", 
dimensao, dimensao);
for (i0=0;i0<dimensao;i0++)
{
for (i1 = 0; i1 <dimensao; i1++)
{
printf("[%d:%d]",i0,i1);
scanf_s("%d", &matriz1[i0][i1]);
}
}
// Solicita os valores para a segunda matriz
printf("\n\nEntre com os valores para a segunda matriz [%dx%d]\n", 
dimensao, dimensao);
for (i0 = 0; i0 <dimensao; i0++)
{
9
for (i1 = 0; i1 < dimensao; i1++)
{
printf("[%d:%d]",i0,i1);
scanf_s("%d", &matriz2[i0][i1]);
}
}
// Formata a saída e mostrar a matriz 1
printf("\n\nValores da matriz 1 [%dx%d]\n", dimensao, dimensao);
printf(" "); // adiciona espaço a esquerda para inicio da coluna
for (i1 = 0; i1 < dimensao; i1++)
{
printf("[%3d]", i1); // Mostra o cabeçalho das colunas
}
printf("\n"); 
for (i0 = 0; i0 < dimensao; i0++)
{
printf("[%d]", i0); // Mostra a dimensão da linha
for (i1 = 0; i1 < dimensao; i1++)
{
printf(" %3d ", matriz1[i0][i1]); // Mostra o valor da 
matriz linha,coluna
}
printf("\n");
}
// Formata a saída e mostra a matriz 2
printf("\n\nValores da matriz 2 [%dx%d]\n", dimensao, dimensao);
printf(" "); // adiciona espaço a esquerda para inicio da coluna
for (i1 = 0; i1 < dimensao; i1++)
{
printf("[%3d]", i1); // Mostra o cabeçalho das colunas
10
}
printf("\n");
for (i0 = 0; i0 < dimensao; i0++)
{
printf("[%d]", i0); // Mostra a dimensão da linha
for (i1 = 0; i1 < dimensao; i1++)
{
printf(" %3d ", matriz2[i0][i1]); // Mostra o valor da 
matriz 2 linha, coluna
}
printf("\n");
}
// Acumula e mostra a soma das 2 matrizes
printf("\n\nSoma das matrizes\n");
printf(" "); // Adiciona espaço a esquerda das colunas
for (i1 = 0; i1 < dimensao; i1++)
{
printf("[%5d]", i1); // Mostra o cabeçalho das colunas
}
printf("\n");
for (i0 = 0; i0 < dimensao; i0++)
{
printf("[%d]", i0); // Mostra a dimensão da linha
for (i1 = 0; i1 < dimensao; i1++)
{
matrizsoma[i0][i1] = matriz1[i0][i1] + matriz2[i0][i1]; // 
Soma os valores das duas matrizes
printf(" %5d ",matrizsoma[i0][i1] * 96); // 
Mostra valor multiplicado pelo final da RU 2391096
if (i0 == i1) // 
Se a dimensão esta na Diagonal principal, armazena no vetor
11
{
vetor[v] = matrizsoma[i0][i1] * 96; // Multiplica 
pelo final da RU 2391096
v++;
}
}
printf("\n");
}
// Mostra os valores do vetor com os valores da diagonal principal * 96
printf("\n\nVetor soma da diagonal principal\n");
for (i0 = 0; i0 < dimensao; i0++)
{
printf("\n[%d]=%d", i0, vetor[i0]);
}
printf("\n");
system("pause");
return 0;
}
12
Exercício 5: 
Faça um algoritmo em linguagem C que contenha uma FUNÇÃO que: 
a. Recebe como parâmetro as notas de uma disciplina (APOLs, prova objetiva, 
prova discursiva e atividade prática), seguindo os critérios da UNINTER; 
b. Retorna como resposta da função: 1 se o aluno foi aprovado, 2 se está em 
exame, ou 0 se está reprovado. 
No programa principal, leia todas as notas do aluno nas provas e atividades (0 -
100) e passe-as como parâmetro para a função que você criou. Com o retorno que 
a função irá fornecer, imprima na tela as mensagens “APROVADO”, “REPROVADO” 
e “EM EXAME”. 
Para resolver este exercício, utilize a Equação abaixo que calcula o média de um 
aluno em uma disciplina da UNINTER. 
Para estar aprovado, o aluno precisa ter média 70 ou mais. Para estar em exame, 
precisa estar com média entre 30 e 69. Abaixo de 30 estará reprovado diretamente. 
𝑁𝑜𝑡𝑎=(Σ𝐴𝑝𝑜𝑙𝑠5)∗20+𝑃𝑂∗20+𝑃𝐷∗30+𝐴𝑃∗30100 
Em que PO é a prova objetiva, PD prova discursiva e AP é atividade prática. 
ATENÇÃO, VOCÊ TAMBÉM DEVERÁ IMPRIMIR NA TELA A MÉDIA DO ALUNO 
#include <stdio.h>
13
#include <stdlib.h>
#include <math.h>
// Declara a função que será definida no progama
int verificaaprovacao(float *apol, float po, float pd, float ap, float *media);
int main()
{
// Declara as variaveis para as notas, para apuração correta são float
float apol[5], provaobjetiva, provadiscursiva, atividadepratica;
// Declara a variavel para receber a media calculada na função
float media;
// Declara a variavel para receber o retorno da função 
int resultado;
// Solicita as notas das Apos (1 a 5)
printf("Informa a nota da Apol1: ");
scanf_s("%f", &apol[0]);
printf("Informa a nota da Apol2: ");
scanf_s("%f", &apol[1]);
printf("Informa a nota da Apol3: ");
scanf_s("%f", &apol[2]);
printf("Informa a nota da Apol4: ");
scanf_s("%f", &apol[3]);
printf("Informa a nota da Apol5: ");
scanf_s("%f", &apol[4]);
// Solicita a nota da Prova objetiva
printf("Informa a nota da Prova Objetiva: ");
scanf_s("%f", &provaobjetiva);
// Solicita a nota da Prova Discursiva
14
printf("Informa a nota da Prova Discursiva: ");
scanf_s("%f", &provadiscursiva);
// Solicita a nota da Atividade Prática
printf("Informa a nota da Atividade Prática: ");
scanf_s("%f", &atividadepratica);
// Chama a função para calcular a média das notas e retornar 0=Reprovado, 
1=Aprovado 2=Em Exame
resultado = verificaaprovacao(apol, provaobjetiva, provadiscursiva, 
atividadepratica, &media);
//
// Mostra a média calculada
printf("\n\nA sua media foi %.1f", media);
// Mostra se esta Aprovado, Em Exame ou Reprovado
printf("\nVoce esta ");
switch (resultado) {
case 0: { printf("REPROVADO\n");
break; }
case 1: { printf("APROVADO\n");
break; }
default: {
printf("EM EXAME\n");
break;
 }
}
//
system("pause");
return 0;
}
// Função para cálculo da média e retorno do status 0=Reprovado, 1=Aprovado 2=Em 
Exame
15
int verificaaprovacao(float *apol, float po, float pd, float ap, float *media)
{
// Calcula a média e arredonda para cima conforme padrão UNINTER.
*media = ceil(((apol[0] + apol[1] + apol[2] + apol[3] + apol[4]) / 5 * 20 
+ po * 20 + pd * 30 + ap * 30) / 100);
// Verifica qual foi a média e retorna o status
if (*media < 30)
{
return 0; // Reprovado
}
else if (*media < 70)
{
return 2; // Em exame
}
else return 1; // Aprovado
}
16
17

Continue navegando