Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER
ESCOLA SUPERIOR POLITÉCNICA
BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO
DISCIPLINA DE LÓGICA DE PROGRAMAÇÃO E ALGORITMOS
ATIVIDADE PRÁTICA
EDUARDO DA SILVA MORAES – RU: 3346946
PROF: VINICIUS POZZOBON BORIN
CANDIOTA-RS
2020
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 1- 7.
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ígitos do seu RU da UNINTER (3346946) 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
1 (1º dígito) Cachorro-quente 5 (antepenúltimo dígito)
2 (2º dígito) X-salada 6 (penúltimo dígito)
3 (3º dígito) X-bacon 7 (último dígito)
#include<stdio.h>
voiditensMenu(){// declaração da função que mostra o menu
intop;
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");
}
intmain(){
// declaração de variáveis
intopcao, cont = 0, itemPedido[100][2], i;
floatsomaCompra = 0;
printf("Selecione seu Item no Menu e Quantidade Desejada: \n");
itensMenu();
do {//laços de repetição para cadastrar os pedidos
printf( "\nInforme o Item: ");
scanf( "%d",&opcao);//recebe o item do pedido
switch(opcao){
case1: //selecionar o item
itemPedido[cont][0] = opcao;//armazena qual eo item
printf("\nCACHORRO-QUENTE");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra += 5*itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case2:
itemPedido[cont][0] = opcao;//armazena qual e o item
printf( "\nX-SALADA: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 8.79*itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case3:
itemPedido[cont][0] = opcao;//armazena qual eo item
printf( "\nX-BACON: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 9.99*itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case4:
itemPedido[cont][0] = opcao;//armazena qual eo item
printf( "\nMISTO: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 6.89 * itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case5:
itemPedido[cont][0] = opcao;//armazena qual eo item
printf( "\nSALADA: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 4.80*itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case6:
itemPedido[cont][0] = opcao;//armazena qual eo item
printf( "\nÁGUA: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 3.49 * itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
case7:
itemPedido[cont][0] = opcao;//armazena qual eo item
printf( "\nREFRIGERANTE: ");
printf( "\nQuantidade: ");
scanf( "%d",&itemPedido[cont][1]);
somaCompra+= 4.99*itemPedido[cont][1];//soma o valor com a qtd
printf( "\nInserido com sucesso");
printf( "\n\n");
cont++; //incrementa um item na lista
break;
default:
printf( "\nPedido Encerrado: \n");
break;
}
}while (opcao>= 1&&opcao<= 7);//laços vai repetir entre 1 e 7, valor diferente
encerra o pedido
printf( "\n---------------Extrato do Seu Pedido-------------------\n");
for(i = 0; i <cont; i++){//for para mostrar os itens do pedido
if(itemPedido[i][0] == 1){//verifica os itens armzanados
printf( "\nQtd: %d - CACHORRO-QUENTE: R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*5));
} elseif(itemPedido[i][0] == 2){
printf( "\nQtd: %d - X-SALADA: valor R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*8.79));
} elseif(itemPedido[i][0] == 3){
printf( "\nQtd: %d - X-BACON: valor R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*9.99));
} elseif(itemPedido[i][0] == 4){
printf( "\nQtd: %d - MISTO: VALOR R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*6.89));
} elseif(itemPedido[i][0] == 5){
printf( "\nQtd: %d - SALADA: VALOR R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*4.80));
} elseif(itemPedido[i][0] == 6){
printf( "\nQtd: %d - ÁGUA: VALOR R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*3.49));
} elseif(itemPedido[i][0] == 7){
printf( "\nQtd: %d - REFRIGERANTE: VALOR R$ %.2f" ,itemPedido[i][1],(float)
(itemPedido[i][1]*4.99));
}
}
printf("\nValor Total do Pedido: %.2f" , somaCompra);
return0;
}
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 (3346946
) 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)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<locale.h>
intmain() {
floatqtdChuvaMes[12], qtdAguaGastoMes[12], nivelReservatorio = 50, Reservatorio;
int x;
do{
printf( "INFORME O TAMANHO DO RESERVATORIO: " );
scanf( "%f",&Reservatorio);//recebe a capacidade do Reservatorio
if(Reservatorio<100){
printf( "\nVALOR INCORRETO\n");
}
}while(Reservatorio<100);
do{//laços de repetição, rodar os meses do ano
if(x == 0){
printf("\nJaneiro:");
}
elseif(x == 1){
printf("\nFevereiro:");
}
elseif(x == 2){
printf("\nMarço:");
}
elseif(x == 3){
printf("\nAbril:");
}
elseif(x == 4){
printf("\nMaio:");
}
elseif(x == 5){
printf("\nJunho:");
}
elseif(x == 6){
printf("\nJulho:");
}
elseif(x == 7){
printf("\nAgosto:");
}
elseif(x == 8){
printf("\nSetembro:");
}
elseif(x == 9){
printf("\nOutubro:");
}
elseif(x == 10){
printf("\nNovembro:");
}
elseif(x == 11){
printf("\nDezembro:");
}
printf("\nNIVEL DO RESERVATORIO: %f\n", nivelReservatorio);
//Nivel existente de agua no Reservatorio
printf("QUANTIDADE DE CHUVA NO MES: %d: " ,(x+1));
scanf("%f", &qtdChuvaMes[x]); //solicita a qtd de chuva no mes
printf("GASTO NO MES: %d - " ,(x+1));
//solicita a qtd de agua gasta
scanf("%f", &qtdAguaGastoMes[x]);
nivelReservatorio += qtdChuvaMes[x]; //mesmo procedimento do if anterior
do{
if(qtdAguaGastoMes[x] >nivelReservatorio)
{
printf( "\nVALOR INVALIDO\nNÃO TEM ESSA QUANTIDADE DE AGUA: \n");
printf( "GASTO NO MÊS: %d - " ,(x+1));
scanf( "%f", &qtdChuvaMes[x]);
}
} while(nivelReservatorio<qtdAguaGastoMes[x]);
nivelReservatorio-= qtdAguaGastoMes[x];
if(nivelReservatorio>= Reservatorio)
{ //se qtd de agua for maior ou igual a qtd do Reservatorio ele está cheio
nivelReservatorio = Reservatorio;
printf( "\nRESERVATORIO CHEIO: \n");
}
if(nivelReservatorio == 0)
{ //se for igual a 0 esta vazio
printf( "\nRESERVATORIO VAZIO Vazio: \n");
}
x++;
}while(x <12);
printf("\nNÍVEL DO RESERVATÓRIO: %f\n", nivelReservatorio);
return0;
}
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 matriz.
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 cadastrado
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.
#include<stdio.h>
#include<string.h>
#include<ctype.h>
intNumerico(char item);
int main() {
int M, N;
char Matriz[10][10], aux;
intcontadorPosicao = 0, i, b, c, d;
printf("linha e Coluna da Matriz: \n");
do{//vai controlar a entrada do valor de M que deve estar entre 1 e 10
printf( "Linha: ");
scanf( "%d", &M);//vai receber o valor de M
if(M <= 1 || M >10)//e fazer uma comparação que tem que estar dentro de 0 a 10
{
printf( "\nValor Invalido\nDeve estar entre 1 e 10 \n");//caso o valor for
diferente vai mostrar uma mensagem e voltar para pedir o valor
}
}while(M <= 1 || M >10);//Só vai sair quando o usuario digitar um valor dentro de
0 a 10
do{//vai controlar a entrada do valor de M que deve estar entre 1 e 10
printf( "Coluna: ");//igual no N
scanf( "%d", &N);
if(N <= 1 || N >10){
printf( "\nValor Invalido\nDeve estar entre 1 e 10 \n");
}
}while(N <= 1 || N >10);//laço vai repetir ate seja digitado valor valido
printf("\nMatriz [Linha: %d - Coluna: %d] \n", M, N);
//recebe os dados da matriz
for(i = 0; i < M; i++){
for(b = 0; b < N; b++){
printf( "Matriz: [%d - %d]: " , i+1, b+1);
scanf( "%s",&Matriz[i][b]);
}
}
//verificação dos dados da matriz
printf("\n\nRelatorio Matriz\n\n");
for(i = 0; i < M; i++){
for(b = 0; b < N; b++){
aux = Matriz[i][b];//aux vai receber as posições
contadorPosicao = 0;
for (c = 0; c < M; c++) { //roda a matriz faz a verificação e o contador recebe
for (d = 0; d < N; d++) {
if(aux == Matriz[c][d]){
contadorPosicao++; //soma no contador
}
}
}
printf("Valor: %c - Qtd %d \n",Matriz[i][b], contadorPosicao);//e manda exibir o
valor e a sua quantidade
}
}
if(islower(Matriz[0][0]) == 0){//função que vai verificar se e a primeira posição
e maiúsculo ou nao
printf( "\nLetra Maiúsculo: %c\nValornumerico: %f\n",Matriz[0][0], (float)
Numerico(Matriz[0][0]) / 10);//mostra a divisão do retorno por 10
}
else{
printf("\nLetraMinusculo: %c\nValornumerico: %f\n",Matriz[0][0],(float)
Numerico(Matriz[0][0]) * 2);//mmostra A multiplicação por 2
}
return0;
}
intNumerico(char item){
return item;//retorna o valor numerico do caracter
}
REFERÊNCIAS BIBLIOGRÁFICAS:
MIZRAHI, Victorine Viviane. Treinamento em Linguagem C 2ª edição. São Paulo, 2008.
Leal, Gislaine Camila Lapasini. Linguagem Programação e banco de dados.
Puga, Sandra Risseti, Gerson. Lógica de Programação e estruturas de Dados.
ASCENCIO, Ana Fernanda Gomes. Fundamentos da Programação de Computadores.
Canal da Tutoria AVA Univirtus-Uninter.