Buscar

ATIVIDADE PRÁTICA DE LÓGICA DE PROGRAMAÇÃO E LOGARITMO nota 100

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 12 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 12 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 12 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

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER 
ESCOLA SUPERIOR POLITÉCNICA 
BACHARELADO EM ENGENHARIA DE PRODUÇÃO 
DISCIPLINA DE LÓGICA DE PROGRAMAÇÃO E ALGORITMOS 
 
 
 
 
 
 
 
ATIVIDADE PRÁTICA 
 
 
 
 
 
 
 
 
MICHELE NUNES OLIVEIRA PEREIRA – RU: 2824461 
PROFESSOR VINICIOS BORIN 
 
 
 
 
 
 
 
 
 
 
BOM SUCESSO DE ITARARÉ– SÃO PAULO 
2020 
 
 
 
1 
 
 Exercício 1: 
Faça um algoritmo em linguagem C para calcular quanto cada cliente gastou em pedidos 
realizados em uma lancheria. A lancheria vende os seguintes produtos: 
 
Item Produto Código Preço Unitário 
1 Cachorro-quente 100 5,00 
2 X-salada 101 8,79 
3 X-bacon 102 9,99 
4 Misto 103 6,89 
5 Salada 104 4,80 
6 Água 105 3,49 
7 Refrigerante 106 4,99 
Ao iniciar o programa, deve-se aparecer na tela um menu com todos os itens vendidos 
e seus respectivos preços. O usuário deve escolher digitando de 1-7 qual item quer comprar. 
Observe que o usuário pode comprar o mesmo item diversas vezes e também pode 
comprar vários itens diferentes (exemplo: 2 águas e um cachorro-quente, no mesmo pedido). 
Para encerrar o processo de compra, o usuário deve digitar um valor diferente de 17. 
Ao encerrar a compra, deve-se listar todos os itens comprados, seus preços individuais e o 
total a se pagar. 
Imprima na tela um teste do seu programa utilizando os três primeiros e os últimos dígi-
tos do seu RU da UNINTER como os valores de entrada para os pedidos. Os três primeiros 
dígitos serão os itens comprados, e os três últimos a quantidade de cada item comprado. Por 
exemplo, se seu RU for 1234567, a compra resultante será: 
Item Produto Quantidade 
2 (1º dígito) Cachorro-quente 4 (antepenúltimo dígito) 
8 (2º dígito) X-salada 6 (penúltimo dígito) 
2 (3º dígito) X-bacon 1 (último dígito) 
 
 
 
 
 
 
 
Solução do aluno: 
#include <stdio.h> 
 
#include <string.h> 
 
#include <locale> 
 
#define TOTAL_PRODUTOS 7 
 
 
 
int main() 
{ 
 
 
 setlocale(LC_ALL, ""); // Acentuação em português 
 
 // declaração de variáveis 
 
 int op, qtd[TOTAL_PRODUTOS]; 
 float total[TOTAL_PRODUTOS], final = 0; 
 char produtos[TOTAL_PRODUTOS][20]; 
 
 strcpy_s(produtos[0], "cachorro-quente"); 
 strcpy_s(produtos[1], "x-salada"); 
 strcpy_s(produtos[2], "x-bacon"); 
 strcpy_s(produtos[3], "misto"); 
 strcpy_s(produtos[4], "salada"); 
 strcpy_s(produtos[5], "água"); 
 strcpy_s(produtos[6], "refrigerante"); 
 
 // Menu de Opções 
 
 system("cls"); 
 
 printf("ITEM PRODUTO CÓDIGO VALOR UNITÁRIO\n"); 
 
 printf("1 CACHORRO-QUENTE 100 5,00\n"); 
 
 printf("2 X-SALADA 101 8,79\n"); 
 
 printf("3 X-BACON 102 9,99\n"); 
 
 printf("4 MISTO 103 6,89\n"); 
 
 printf("5 SALADA 104 4,80\n"); 
 
 printf("6 ÁGUA 105 3,49\n"); 
 
 printf("7 REFRIGERANTE 106 4,99\n"); 
 
 printf("Escolha o produto:"); 
 scanf_s("%i", &op); 
 
 while ((op >= 1) && (op <= 7)) 
 { 
 switch (op) 
 { 
 case 1: //cachorro-quente 
 printf("Você escolheu: "); 
 puts(produtos[0]); 
 printf("Quantos deseja comprar?"); 
 
 
 
 
 scanf_s("%i", &qtd[0]); 
 total[0] = qtd[0] * 5.00; 
 break; 
 
 case 2: //x-salada 
 printf("Você escolheu: "); 
 puts(produtos[1]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[1]); 
 total[1] = qtd[1] * 8.79; 
 break; 
 
 case 3: //x-bacon 
 printf("Você escolheu: "); 
 puts(produtos[2]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[2]); 
 total[2] = qtd[2] * 9.99; 
 break; 
 
 case 4: //misto 
 printf("Você escolheu: "); 
 puts(produtos[3]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[3]); 
 total[3] = qtd[3] * 6.89; 
 break; 
 
 case 5: //salada 
 printf("Você escolheu: "); 
 puts(produtos[4]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[4]); 
 total[4] = qtd[4] * 4.80; 
 break; 
 
 case 6: //água 
 printf("Você escolheu: "); 
 puts(produtos[5]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[5]); 
 total[5] = qtd[5] * 3.49; 
 break; 
 
 case 7: //refrigerante 
 printf("Você escolheu: "); 
 puts(produtos[6]); 
 printf("Quantos deseja comprar?"); 
 scanf_s("%i", &qtd[6]); 
 total[6] = qtd[6] * 4.99; 
 break; 
 
 } 
 
 printf("Escolha o produto:"); 
 scanf_s("%i", &op); 
 
 } 
 for (int i = 0; i < TOTAL_PRODUTOS; i++) 
 { 
 if (qtd[i] > 0) 
 { 
 
 
 
 
 puts(produtos[i]); 
 printf("Quantidade: %i | Total a pagar: %.2f\n", qtd[i], to-
tal[i]); 
 // final = final + total[i]; 
 final += total[i]; 
 } 
 } 
 printf("Total do pedido: %.2f", final); 
 return 0; 
} 
 
Imagem do código funcionando no seu computador: 
 
 
 Nessa primeira atividade montei minha estrutura básica conforme o professor Vinícios 
Borin nos ensinou, já no início introduzi na biblioteca o que seria necessário para cada co-
mando como: stdio, string para poder utilizar a função strcpy e locale para fazer a leitura cor-
reta dos acentos. Criei as variáveis necessárias: int op que é uma variável inteira para o menu 
(vetor de quantidade), float total para o cálculo do valor individual de cada produto e porque 
vamos utilizar a vírgula e por último o char produtos que é uma matriz com duas dimensões, 
onde o número de linhas é o número de produtos e o número de colunas é número máximo 
de cada palavra, também coloquei um #define TOTAL_ PRODUTOS 7 para definir o total de 
produtos. 
 Criei um menu para os pedidos, utilizei o laço de repetição while, fiz um switch case 
para os sete produtos vendidos, fiz uso do printf, scanf e o puts para imprimir na tela. 
OBS: Como o enunciado nos pede para utilizar os três primeiros números do nosso RU para 
fazer os pedidos e os três últimos para a quantidade de cada produto, no meu caso consegui 
apenas fazer o primeiro, porque o número de produtos do menu corresponde a 7 e o meu RU 
é 2824461, quando vou fazer o segundo pedido e digito um número maior que no caso é o 8 
o meu programa finaliza a compra. 
 
 
 
 
 
 
 
Exercício 2: 
Faça um algoritmo em linguagem C que receba como dado de entrada a quantidade 
máxima em milímetros que um reservatório de água suporta. E também como dado de entrada 
informe quantos milímetros de chuva tivemos em cada mês do ano, e quantos milímetros 
deste reservatório por mês foi gasto. Armazene as informações de cada mês em vetores de 
dados. 
Sabendo a capacidade do reservatório, quanto choveu em cada mês e quanto foi gasto. 
Informe o valor disponível de água, em milímetros, para cada mês do ano. Caso o reservatório 
fique vazio em algum momento, informe isso na tela. Caso o reservatório fique cheio em algum 
momento, também informe isso na tela. 
Imprima na tela um teste do seu programa utilizando o seu RU da UNINTER como os 
valores de entrada, cada dígito do seu RU será um dos valores gastos, em milímetros, por 
mês. Por exemplo, se seu RU for 1234567, faça: 
 
Jan 1 mm (1º dígito) 
Fev 2 mm (2º dígito) 
Mar 3 mm (3º dígito) 
Abr 4 mm (4º dígito) 
Mai 5 mm (5º dígito) 
Jun 6 mm (6º dígito) 
Jul 7 mm (7º dígito) 
Ago 1 mm (1º dígito) 
Set 2 mm (2º dígito) 
Out 3 mm (3º dígito) 
Nov 4 mm (4º dígito) 
Dez 5 mm (5º dígito) 
 
Como dado de entrada, utilize os três últimos valores do seu RU. 
 
Solução do aluno: 
#include<stdio.h> //Inclusão de biblioteca s de entrada e saida 
#include<stdlib.h> 
 
 
 
 
#include<locale.h> 
 
#define TAMANHOVETOR 12 //definiçãção de tamanho do vetor 
int main() 
{ 
 //Declaração de inicio e tipo de função principal 
 float somaChuv[12], somaAgua[12], restante[12], ttl[12]; //Variavel deve do 
tipo float, pois os numeros podemser decimais 
 int reservatorio, c; 
 setlocale(LC_ALL, "Portuguese");//Biblioteca de acentuação em portugues 
 printf("***CADASTRO DO RESERVATORIO**** \n"); 
 printf("Reservatorio em milimetro - informe o valor : \n"); //Usuario digita o 
valor maximo de capacidade do reservatorio em m ilimetr os 
 scanf_s("%i", &reservatorio); //É feita a leitura da quantidade digitada pelo 
usuario 
 printf("****CADASTRO DE CHUVA E GASTO DE AGUA***** \n"); 
 for (c = 1; c <= TAMANHOVETOR; c++) 
 { printf("Valor de chuva no mes %d ? \n", c); //Usuario digita a quantidade de 
chuva em cada mes do ano 
 scanf_s("%f", &somaChuv[c]); //É feita a leitura da quantidade digitada pelo usu-
ario 
 printf("***********\n"); 
 printf(" Gasto de agua no mes %d ? \n", c); //Usuario digita a quantidade de agua 
gasta em c ada mes do ano 
 scanf_s("%f", &somaAgua[c]); //É feita a leitura da quantidade digitada pelo usu-
ario 
 restante[c] = somaChuv[c] - somaAgua[c]; //É feita as operações aritmeticas per-
tinentes aos valores digitados pelo usuario 
 ttl[c] = restante[c] + reservatorio; //É feita as operações aritmeticas pertinen-
tes aos valores digitados pelo usuario 
 printf("\n"); 
 if (ttl[c] <= 0) 
 { 
 printf(" RESERVATORIO VAZIO E COM CAPACIDADE MAXIMA !!!! \n"); //Mensagem para 
usuario 
 } 
 if (ttl[c] > reservatorio) 
 { 
 printf(" RESERVATÓRIO CHEIO - CONTROLE SEU RESERVATORIO !!!! \n"); //Mensagem 
para usuario 
 } 
 printf(" NIVEL TOTAL EM: %.2f mm\ n", ttl[c]); //Mensagem para usuario 
 } 
 return 0; 
} 
 
 
 
 
 
Exercício 3: 
Faça um algoritmo em linguagem C que receba como dado de entrada uma matriz de 
caracteres. Cada posição da matriz deve armazenar um caractere. 
A dimensão da matriz deverá ser MxN, onde M e N são dados de entrada escolhidos 
pelo usuário. Declare a matriz como sendo de dimensão máxima 10x10, e valide os valores 
de M e N, que devem estar entre 1 e 10, incluindo 1 e 10. Para a validação, o usuário deve 
ficar preso no programa enquanto não digitar um número válido para M e para N. 
Após escolhida a dimensão da matriz e povoado ela com caracteres. Faça: 
• Conte o número de ocorrências de cada caractere que aparece na ma-
triz. Após a contagem, liste cada caractere digitado e o número de ocorrências; 
• Crie uma função que receba como parâmetro o primeiro caractere ca-
dastrado na matriz. A função deve retornar um dado numérico. Se o caractere 
for maiúsculo, retorne na função o resultado deste caractere dividido por 10. 
Caso contrário, retorne o resultado do caractere multiplicado por 2; 
Imprima na tela um teste do seu programa utilizando como primeiro caractere a primeira 
letra do seu nome. 
Solução do aluno: 
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
 
// ** funções auxiliares **// 
void 
 
 
 
 
digQuantMxN(); 
void digDadosMatriz(); 
void imprimirMatriz(); 
void mostraOcorrenciaCaracteres(); 
void manipulaDado(); 
 
 
// *** variaveis **// 
int i, j, k, m, n, c, x, indice, cont; 
float pri, resultado; 
char str[10][10], vetor[100], aux; 
 
 
// ** função principal **// 
 int main() 
 { 
 setlocale(LC_ALL, ""); // Acentuação em português 
 digQuantMxN(); //Função pede para o usuário digitar os valores de linha e coluna 
da matriz. 
 printf("\n\n"); //pula duas linhas para organização. 
 digDadosMatriz(); //Função pede para o usuário digite os valores da matriz. 
 printf("\n"); //pula duas linhas para organização. 
 imprimirMatriz(); //Função que imprime a matriz. 
 printf("\n\n"); //pula duas linhas para organização. 
 mostraOcorrenciaCaracteres(); //Função que mostra as ocorrencias dos caracteres 
 printf("\n\n"); //pula duas linhas para organização. 
 manipulaDado(); //função manipula o primeiro dados da matriz. 
 printf("n\n"); //pula uma linha para organização. 
 system("pause"); 
 return 0; 
 } 
 
 // *** função para digitar a quantidade de linha e coluna **// 
 void 
 digQuantMxN() 
 { 
 do 
 { 
 //imprime instrucões ao usuário 
 printf(" \n\n Digite a quantidade de linhas de 1 a 10: "); 
 scanf_s("%d", &m);// amarzena o dado na variavel. 
 while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de te-
chado. 
 } 
 while (m < 1 ||m > 10);// validação dos numeros de 1 a 10 
 do 
 { 
 //imprime instrucões ao usuário 
 printf(" \n\n Digite a quantidade de colunas de 1 a 10: "); 
 scanf_s("%d", &n);// amarzena o dado na variavel. 
 while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de te-
chado. 
 } 
 while (n < 1 || n > 10);// validação dos numeros de 1 a 10 
 } 
 
 // *** função para carregar dados na matriz **// 
 void 
 digDadosMatriz() 
 { 
 for (i = 0; i < m; i++) 
 { 
 
 
 
 
 for (j = 0; j < n; j++) 
 { 
 //mostra para o usuario a posição que esta a matriz. 
 printf(" Digite o caracter [%d] [%d]: ", i, j); 
 scanf_s("%c", &str[i][j]); // amarzena o dado digitado pelo usu-
ário e armazena na variavel. 
 while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de 
techado. 
 } 
 } 
 } 
 
 // ** função imprime os dados da matriz **// 
 void 
 imprimirMatriz() 
 { 
 // imprime mensagem para usuario 
 printf(" Matriz formada MxN.\n"); 
 for (i = 0; i < m; i++) 
 { 
 printf(" \n");//dá espaço na tela 
 
 //imprime o valor da matriz 
 for (j = 0; j < n; j++) 
 { 
 printf(" %c\t", str[i][j]); 
 } 
 } 
 } 
 // ** função mostra as ocorrências dos caracteres **// 
 void 
 mostraOcorrenciaCaracteres() 
 { 
 indice = 0;// inicia a variavel em 0. 
 //transforma a matriz em vetor 
 for (i = 0; i < m; i++) 
 { 
 for (j = 0; j < n; j++) 
 { 
 vetor[indice] = str[i][j]; 
 indice++; 
 } 
 } 
 for (i = 0; i < indice; i++) 
 { 
 for (j = i + 1; j < indice; j++) 
 { 
 if (vetor[i] > vetor[j]) 
 { 
 aux = vetor[i]; 
 vetor[i] = vetor[j]; 
 vetor[j] = aux; 
 } 
 } 
 } 
 cont = 1; //Se está na lista então aparece pelo menos 1 vez 
 for (i = 1; i < indice; i++) 
 { 
 //Note que começa com i=1 para já comparar o segundo com o primeiro no 
if abaixo: 
 if (vetor[i] == vetor[i - 1]) 
 { //Se é igual ao anterior incrementa o contador 
 
 
 
 
 cont++; 
 } 
 else 
 { 
 //Se mudou o número 
 if (cont >= 2) 
 { 
 //Acabou de contar o número anterior então podemos 
imprimir 
 //o número de vezes que ele aparece: 1], 
cont); 
 printf(" O caracter %c aparece %d vezes! 
\n",vetor[i - 1], cont); 
 //Recomeça a contagem para o novo número: 
 cont = 1; 
 } 
 else 
 { 
 //Acabou de contar o número anterior então podemos 
imprimir 
 //o número de vezes que ele aparece: 
 printf(" O caracter %c aparece %d vez!\n", ve-
tor[i - 1], cont); 
 //Recomeça a contagem para o novo número: 
 cont = 1; 
 } 
 } 
 } 
 if (cont >= 2) 
 { 
 //Também imprime para o último número: 
 printf(" O caracter %c aparece %d vezes!\n", vetor[i - 1], cont); 
 } 
 else 
 { 
 //Também imprime para o último número: 
 printf(" O caracter %c aparece %d vez!\n", vetor[i - 1], cont); 
 } 
 }// ** função manipula primeiro dado da matriz 
 void 
 manipulaDado() 
 { 
 //imprime informações ao usuário 
 pri = str[0][0]; 
 printf(" O primeiro caracter da matriz = \"%c\" \n", str[0][0]); 
 if ((pri >= 65) && (pri <= 90)) 
 { 
 printf(" O caracter \"%c\" eh uma letra maiusculo", str[0][0]); 
 resultado = pri / 10; 
 printf("\n A funcao pedida para esse tipo de caracter resulta em: 
%.1f ", resultado); 
 } 
 else 
 { 
 printf(" O caracter \" %c \" eh uma letra minuscula", str[0][0]); 
 resultado = pri * 2; 
 printf("\n A funcao pedida para esse tipo de caracter resulta em: 
%.0f ", 
 resultado); 
 } 
 } 
 
 
 
 
 
 Para a resolução deste problema, primeiro montei a estrutura básica do meu programa 
com as bibliotecas que seriam necessárias, criei funções auxiliares como o professor Vinicios 
Borin nos explicou que seria necessário, função principal entre outras e assim fiz a matriz MxN 
com a dimensão dentro do que se pede no enunciado que é de no máximo 10x10, contei o 
número de ocorrências de cada caractere e listei cada um, criei a função que como parâmetro 
recebe o primeiro caractere e retorne com um dado numérico e no meu caso o caractere foi 
minúsculo, por isso o meu resultado foi multiplicado por 2 e para o teste imprimi meu nome 
ne tela.

Outros materiais