Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA BACHARELADO EM ENGENHARIA DA PRODUÇÃO DISCIPLINA DE LÓGICA DE PROGRAMAÇÃO E ALGORITMOS Exercício 1: Faça um algoritmo em linguagem C para calcular quanto cada cliente gastou em pedidos realizados em uma lancheria. 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 como os valores de entrada para os pedidos primeiros dígitos serão os itens comprados, e os três últimos a quantidade de cada item comprado. #include <stdio.h> void main() { int n = 1, i;//declaração de inteiros para utilizacao em lacos de repeticao char products[8][60] = { //declaracao de matriz para armazenar as strings produtos " Itens | Produtos | Codigo| Preco Unitario", " 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 | Agua | 105 | 3,49 " , " 7 | Refrigerante | 106 | 4,99 " }; float precototal = 0;//declaração de float precototal para armazenar preço total da compra for (i = 0; i < 8; i++) //laço for para imprimir os produtos, com incremento de i para percorrer 7x a matriz tabela imprimindo cada indice do 0 ao 6 printf("%s\n", products[i]); while (n > 0 && n < 8) { //comando while de repeticao para enquanto o numero escolhido pelo usuario estiver dentro do intervalo 1-7 ele va realizando as escolhas de produtos printf("\n\nAtencao : caso informe um numero fora da lista de itens a compra se encerrara\n"); printf("Informe qual produto deseja seguindo a numeracao do cardapio: "); scanf_s("%d", &n); switch (n) //comando de controle switch, dependendo da escolha ele retorna um case com base na variavel n { case 1: int qtd01; //declaracao de qtd01 para armazenar a quantidade do produto a ser atribuida pelo usuario printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd01); precototal = precototal + (5 * qtd01);//somatoria do precototal a ele mesmo + o preco do produto escolhido multiplicado pela quantidade escolhida break; //break para encerrar o processo no case 1 e nao ficar pulando para os outros cases case 2: int qtd02; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd02); precototal = precototal + (8.79*qtd02); break; case 3: int qtd03; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd03); precototal = precototal + (9.99*qtd03); break; case 4: int qtd04; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd04); precototal = precototal + (6.89*qtd04); break; case 5: int qtd05; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd05); precototal = precototal + (4.8*qtd05); break; case 6: int qtd06; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd06); precototal = precototal + (3.49*qtd06); break; case 7: int qtd07; printf("Produto: %d \nInforme a quantidade: ", n); scanf_s("%d", &qtd07); precototal = precototal + (4.99*qtd07); break; default: printf("\n\t\tValor Total: %.2f Reais\n", precototal); //impressao para o usuario do precototal para pagar, preco acumulativo printf("*********************************************************************** **\n"); //estruturas "se" if, para imprimir os produtos finais com base nas quantidades selecionadas pelo usuario, se a qtd for maior que zero imprima if (qtd01 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd01, products[1]); //imprimi o indice da matriz products de acordo com a quantidade declarada no case } if (qtd02 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd02, products[2]); } if (qtd03 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd03, products[3]); } if (qtd04 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd04, products[4]); } if (qtd05 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd05, products[5]); } if (qtd06 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd06, products[6]); } if (qtd07 > 0) { printf("\nQuantia: %d Selecionado: %s ", qtd07, products[7]); } printf("\n\n"); break; } } } Obs.: Usado os números 2, 7, 8 para escolher produtos e os números 8, 7 para quantidades, seguindo uso de números do RU = 2879870, pois se seguisse o proposto na questão programa se encerraria no segundo pedido, por conta do digito 8. 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. #include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, "Portuguese");//comando para imprimir caracteres especiais int capacidade, repeticao = 0, capMes = 0;//declarado variaveis inteiras para armazenarem respectivamente, capacidade do reservatorio, repeticao em while e for e capacidade do mes int chuva[1000];//array para conter a chuva do mes int gasto[1000];//array para conter o gasto no mes char mesesDoAno[12][50] = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez" };//matriz com meses do ano nos indices printf("Digite o maximo em milimetros que o reservatorio suporta= "); scanf_s("%d", &capacidade);//armazenado entrada da capacidade do reservatorio for (repeticao = 0; repeticao < 12; repeticao++) {//laço for para percorrer os arrays de meses do ano e chuva por mes printf("\n Mês = %s \nQuanto de chuva tivemos em milimetros? ", mesesDoAno[repeticao]); scanf_s("%d", &chuva[repeticao]);//armazenado o tanto de chuva no mes printf("Quanto foi gasto, em milimetros, do reservatorio? "); scanf_s("%d", &gasto[repeticao]);//armazenado a quantidae consumida no mes capMes += chuva[repeticao] - gasto[repeticao];//atribuido de forma cumulativa a variavel capMes a formula de calculo da capacidade disponivel no mes, subtraindo do tanto de chuva que teve no mes o consumido no mesmo if (capMes > 0 && capMes < capacidade) {//caso a capacidade do mes nao for nula e nao ultrapasse a capacidade do reservatorio printf("Quantidade armazenada final no mes , em milimetros = %d \n", capMes);//impresso quantidade disponivel ao final do mes } else if (capMes <= 0) {//caso a capacidade seja nula ou negativa printf("Reservatório vazio\n"); } else {//de ultimo caso se aplica o caso de que a quantia ao fim do mes passou da capacidade total do reservatorio printf("Reservatório cheio\n"); } }; printf("\n\tConsumo por mês\n\n"); for (repeticao = 0; repeticao < 12; repeticao++) {//laço for para percorrer os indices dos meses do ano e gasto printf(" %s consumido: %d milimetros \n", mesesDoAno[repeticao],gasto[repeticao]); }; } 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. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> float valor(char letra) {//função considerando primeiro valor char maiusculo ou minusculo inserido na matriz float r = 0; if (letra >= 65 && letra <= 90) {//pesquisado codigo numerico atribuido a letras de a á z, sendo 65 = A e 90 = Z, usado estrutura de controle if para executar considerando o intervalo entre A e Z r = letra; r = r / 10;//dividindo por 10 em caso de maiuscula } else { r = letra * 2;//multiplicando por 2 em caso de minuscula }; return r; }; int main() { setlocale(LC_ALL, "Portuguese"); //comando para imprimir caracteres especiais char matrizprincipal[10][10] = {};//Matriz declarada char vetor1[100] = {};//vetor auxiliar para armazenar valor de indices da matriz principal int vetor2[100] = {};//vetor para armazenar quantidade de repeticoes char matrizsecundaria[10][10] = {};//Matriz secundaria para armazenar valor de indices da matriz principal int c, l; printf("Insira o número de colunas da matriz a ser gerada, máximo 10 = "); scanf("%d", &c);//armazenado número de colunas while (c <= 0 || c > 10) { //while, comando de repetição para informar ao usuário que quantia de colunas determinada está incorreta, podendo sair do laço ao inserir valor aceitavel printf("\nNúmero de colunas determinado inválido, digite de 1 a 10 = "); scanf("%d", &c);//armazenado novo valor de colunas }; printf("Insira o número de linhas da matriz a ser gerada, máximo 10 = "); scanf("%d", &l); while (l <= 0 || l > 10) {//while, comando de repetição para informar ao usuário que quantia de linhas determinada está incorreta, podendo sair do laço ao inserir valor aceitavel printf("Valor de linhas invalido, digite quantas linhas a matriz possui (valido até 10 colunas apenas): "); scanf("%d", &l);//armazenado novo valor de linhas }; for (int i1 = 0; i1 < l; i1++) {//laços for para percorrer indices da matrizprincipal for (int i2 = 0; i2 < c; i2++) { printf("Digite a letra para matriz [%d] [%d]= ", i2, i1); scanf("%s", &matrizprincipal[i1][i2]);//armazenada letra no indice especificado por i1 e i2 da matrizprincipal }; }; for (int i1 = 0; i1 < l; i1++) {//laços for para percorrer indices da matrizprincipal for (int i2 = 0; i2 < c; i2++) { printf("\t|%c|", matrizprincipal[i1][i2]); vetor1[(i1*c) + i2] = matrizprincipal[i1][i2];//atribuido ao vetor1 os valores nos indices da matrizprincipal matrizsecundaria[i1][i2] = matrizprincipal[i1][i2];//atribuido a matrizsecundaria os valores nos indices da matrizprincipal }; printf("\n");//usado para dar espaço entre os indices da matriz e deixa-lá em formato de tabela }; for (int i1 = 0; i1 < l; i1++) {//laços for para percorrer indices de vetor2 e vetor1 for (int i2 = 0; i2 < c; i2++) { for (int p = 0; p < l; p++) {//laços for para percorrer indices da matrizsecundaria for (int r = 0; r < c; r++) { if (matrizsecundaria[p][r] == vetor1[(i1 * c) + i2]) {//bloco condicional que compara os indices da matrizsecundaria com os do vetor1 para ver quais letras se repetem vetor2[(i1 * c) + i2]++;//incrementado valor de repetições em vetor inteiro vetor2 matrizsecundaria[p][r] = 0;//matriz zerada para realizar nova comparação }; }; }; }; }; printf("\n\tREPETIÇÕES\n"); for (int i1 = 0; i1 < (l * c); i1++) {//laço para percorrer os indices dos vetores if (vetor2[i1] != 0) {//caso vetor2 for diferente de zero significa que a letra a ser impressa apareceu pelo menos uma vez na matriz printf("\nletra = %c repetições = %d ", vetor1[i1], vetor2[i1]); }; }; printf("\n\n\tFUNÇÃO\n"); printf("Primeira letra da matriz= %c\nResultado: %.2f\n", matrizprincipal[0][0], valor(matrizprincipal[0][0]));//impresso o valor da função comparativa de maiusculos com minusculos }
Compartilhar