Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA GRAD –GST GESTÃO DA TECNOLOGIA DA INFORMAÇÃO DISCIPLINA DE LÓGICA DE PROGRAMAÇÃO E ALGORITMOS ATIVIDADE PRÁTICA 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: 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, devese 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. 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á: Solução do aluno: #include <stdio.h> #include <stdlib.h> 1 #include <locale.h> #include <string.h> int main() { setlocale(LC_ALL, ""); // Acentuação em português // declaração de variáveis int opcao, indice = 0; float qtd, total = 0; float pedido[99][4]; char produto[20]; //float pedido[][4] = { 0.00,0.00,0.00,0.00 }; declarar a matriz desta forma gerou um erro em tempo de execução ... // 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"); do // Escolha dos pedidos { printf("\nEscolha um item : "); scanf_s("%d", &opcao); if (opcao >= 1 && opcao <= 7) { printf("Quantidade : "); // Quantidade desejada do item scanf_s("%f", &qtd); if (qtd <= 0) { printf("Quantidade deve ser maior que ZERO !!!!!\n\n"); system("pause"); break; } } switch (opcao) // Montagem da lista de pedidos { case 1: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 5.00; //pedido[indice][1] = strcpy_s(produto, "cahorroquente"); //printf("\n%s\n", produto); indice++; break; case 2: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 8.79; indice++; break; case 3: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 9.99; indice++; break; case 4: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 6.89; indice++; break; case 5: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 4.80; indice++; break; case 6: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 3.49; indice++; break; case 7: pedido[indice][0] = opcao; pedido[indice][2] = qtd; pedido[indice][3] = 4.99; indice++; break; } } while (opcao >= 1 && opcao <= 7); system("cls"); // Impressão do relatório de pedidos printf("Relatório dos Pedidos\n"); printf("\nITEM QTDE PREÇO VALOR\n"); for (int i = 0; i < indice; i++) { printf("%.1f %.1f %.2f %.2f\n", pedido[i][0], pedido[i][2], pedido[i][3], (pedido[i][2] * pedido[i][3])); total = total + (pedido[i][2] * pedido[i][3]); } printf("\n\nValor Total do Pedido %.2f\n\n", total); // Impressão do valor total dos pedidos system("pause"); return 0; } Imagem do código funcionando no seu computador 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: Solução do aluno: #include<stdio.h> #include<stdlib.h> #include<locale.h> //**funções auxiliares**// void janeiro(); void fevereiro(); void marco(); void abril(); void maio(); void junho(); void julho(); void agosto(); void setembro(); void outubro(); void novembro(); void dezembro(); void valores_janeiro(); void valores_fevereiro(); void valores_marco(); void valores_abril(); void valores_maio(); void valores_junho(); void valores_julho(); void valores_agosto(); void valores_setembro(); void valores_outubro(); void valores_novembro(); void valores_dezembro(); //variaveis// bool fim = true; int quantidadeMaxima, nivel, mut, c; int jan[4], fev[4], mar[4], abr[4], mai[4], jun[4], jul[4], ago[4], set[4], out[4], nov[4], dez[4]; //função principal// int main() { do { //imprime instruções ao usuario// printf("\n Digite a quantidade maxima em milimetros do reservatorio entre 10 a 99: "); scanf_s("%d", &quantidadeMaxima); //valor digitado e adiciona na variavel// while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer// //laço para aceitar somente numero de 10 a 99// while ((quantidadeMaxima > 99) || (quantidadeMaxima < 10)); } while ((quantidadeMaxima > 99) || (quantidadeMaxima < 10)); //laço para chamar as funcões na ordem// while (fim) { mut++;// variavel auxila a chamada dos meses na ordem// switch (mut) { case 1: janeiro(); break; case 2: fevereiro(); break; case 3: marco(); break; case 4: abril(); break; case 5: maio(); break; case 6: junho(); break; case 7: julho(); break; case 8: agosto(); break; case 9: setembro(); break; case 10: outubro(); break; case 11: novembro(); break; case 12: dezembro(); break; default: fim = false; break; } } system("cls");// limpa a tela// printf("\n\n\n\n"); //imprime uma tabela com todas as informações// printf("\n/************************************************/");printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); valores_outubro(); valores_novembro(); valores_dezembro(); printf("\n\n/************************************************/\n\n"); system("pause"); return 0; } //*** funções auxiliares ***// void janeiro() { do { system("cls");// limpa a tela// //imprime a quantidade maxima do reservatório// printf("\n\n Quantidade maxima do reservatorio: %d mm", quantidadeMa- xima); //imprime instrucões ao usuário// printf("\n\n Digite a quantidade de chuva caiu Janeiro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jan[0]);// pega o valor digitado e adiciona no vetor// while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo// } while (jan[0] < 0); do { // limpa a tela// system("cls"); //imprime a quantidade maxima do reservatório// xima); printf("\n\n Quantidade maxima do reservatorio: %d mm", quantidadeMa- //imprime informações ao usuário// printf("\n\n Digite a quantidade de chuva caiu Janeiro "); printf("\n Nao pode haver numero negativo : %d ", jan[0]); //imprime instrucões ao usuário// printf("\n\n Digite a quantidade de agua foi consumida em Janeiro: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jan[1]);// pega o valor digitado e adiciona no vetor// chado.// while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de te- // laço para não aceitar numero negativo// } while (jan[1] < 0); //nivel da caixa// jan[3] = jan[0] - jan[1]; }//fim void janeiro// void fevereiro() { do { // limpa a tela// system("cls"); //imprime a quantidade maxima do reservatório// printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior// printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); //imprime instrucões ao usuário// printf("\n\n Digite a quantidade de chuva caiu Fevereiro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &fev[0]);// pega o valor digitado e adiciona no vetor// while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado.// // laço para não aceitar numero negativo// } while (fev[0] < 0); do { // limpa a tela// system("cls"); //imprime a quantidade maxima do reservatório// xima); printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMa- //imprime o histórico do mês anterior// printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); //imprime informações ao usuário// printf("\n\n Digite a quantidade de chuva caiu Fevereiro "); printf("\n Nao pode haver numero negativo : %d ", fev[0]); //imprime instrucões ao usuário// "); printf("\n\n Digite a quantidade de agua foi consumida em Fevereiro: printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &fev[1]);// pega o valor digitado e adiciona no vetor// while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de te- chado.// // laço para não aceitar numero negativo } while (fev[1] < 0); //nivel da caixa fev[3] = (jan[3] + fev[0]) - fev[1]; }//fim void fevereiro void marco() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Marco "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &mar[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (mar[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Marco "); printf("\n Nao pode haver numero negativo : %d ", mar[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Marco: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &mar[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (mar[1] < 0); //nivel da caixa mar[3] = (fev[3] + mar[0]) - mar[1]; }//fim void marco() void abril() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Abril "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &abr[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (abr[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Abril "); printf("\n Nao pode haver numero negativo : %d ", abr[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Abril: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &abr[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (abr[1] < 0); //nivel da caixa abr[3] = (mar[3] + abr[0]) - abr[1]; }//fim void abril() void maio() { do { // limpa a tela system("cls");//imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Maio "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &mai[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (mai[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Maio "); printf("\n Nao pode haver numero negativo : %d ", mai[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Maio: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &mai[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (mai[1] < 0); //nivel da caixa mai[3] = (abr[3] + mai[0]) - mai[1]; }//fim void maio() void junho() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Junho "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jun[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (jun[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Junho "); printf("\n Nao pode haver numero negativo : %d ", jun[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Junho: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jun[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (jun[1] < 0); //nivel da caixa jun[3] = (mai[3] + jun[0]) - jun[1]; }//fim void junho() void julho() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Julho "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jul[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (jul[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Julho "); printf("\n Nao pode haver numero negativo : %d ", jul[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Julho: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &jul[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (jul[1] < 0); //nivel da caixa jul[3] = (jun[3] + jul[0]) - jul[1]; }//fim void julho() void agosto() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Agosto "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &ago[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (ago[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Agosto "); printf("\n Nao pode haver numero negativo : %d ", ago[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Agosto: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &ago[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. //laço para não aceitar numero negativo } while (ago[1] < 0); ago[3] = (jul[3] + ago[0]) - ago[1]; }//fim void agosto() void setembro() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMa- xima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Setembro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &set[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (set[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Setembro "); printf("\n Nao pode haver numero negativo : %d ", set[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Setembro: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &set[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (set[1] < 0); //nivel da caixa set[3] = (ago[3] + set[0]) - set[1]; }//fim void setembro() void outubro() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Outubro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &out[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (out[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Outubro "); printf("\n Nao pode haver numero negativo : %d ", out[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Outubro: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &out[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (out[1] < 0); //nivel da caixa out[3] = (set[3] + out[0]) - out[1]; }//fim void outobro() void novembro() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); valores_outubro(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Novembro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &nov[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (nov[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); valores_outubro(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Novembro "); printf("\n Nao pode haver numero negativo : %d ", nov[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Novembro: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &nov[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (nov[1] < 0); //nivel da caixa nov[3] = (out[3] + nov[0]) - nov[1]; }//fim void novembro() void dezembro() { do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maxima do reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); valores_outubro(); valores_novembro(); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de chuva caiu Dezembro "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &dez[0]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (dez[0] < 0); do { // limpa a tela system("cls"); //imprime a quantidade maxima do reservatório printf("\n\n Quantidade maximado reservatorio: %d mm\n\n", quantidadeMaxima); //imprime o histórico do mês anterior printf("\n * mes * quant chuva * consumo * nivel *"); printf("\n * * * * *"); valores_janeiro(); valores_fevereiro(); valores_marco(); valores_abril(); valores_maio(); valores_junho(); valores_julho(); valores_agosto(); valores_setembro(); valores_outubro(); valores_novembro(); //imprime informações ao usuário printf("\n\n Digite a quantidade de chuva caiu Dezembro "); printf("\n Nao pode haver numero negativo : %d ", dez[0]); //imprime instrucões ao usuário printf("\n\n Digite a quantidade de agua foi consumida em Dezembro: "); printf("\n Nao pode haver numero negativo : "); scanf_s("%d", &dez[1]);// pega o valor digitado e adiciona no vetor while ((c = getchar()) != '\n' && c != EOF) {} //limpa buffer de techado. // laço para não aceitar numero negativo } while (dez[1] < 0); //nivel da caixa dez[3] = (nov[3] + dez[0]) - dez[1]; }//fim void dezembro() void valores_janeiro() { printf("\n * jan "); if (jan[0] >= 10) { printf("* %d mm ", jan[0]); } else { printf("* %d mm ", jan[0]); } if (jan[1] >= 10) { printf("* %d mm ", jan[1]); } else { printf("* %d mm ", jan[1]); } if (jan[3] >= quantidadeMaxima) { jan[3] = quantidadeMaxima; printf("* %d mm *", jan[3]); printf(" atencao reservatorio cheio!!!"); } else if (jan[3] <= 0) { jan[3] = 0; printf("* %d mm *", jan[3]); printf(" atencao reservatorio vazio!!!"); } else { if (jan[3] >= 10) { printf("* %d mm *", jan[3]); } else { printf("* %d mm *", jan[3]); } } } void valores_fevereiro() { printf("\n * fev "); if (fev[0] >= 10) { printf("* %d mm ", fev[0]); } else { printf("* %d mm ", fev[0]); } if (fev[1] >= 10) { printf("* %d mm ", fev[1]); } else { printf("* %d mm ", fev[1]); } if (fev[3] >= quantidadeMaxima) { fev[3] = quantidadeMaxima; printf("* %d mm *", fev[3]); printf(" atencao reservatorio cheio!!!"); } else if (fev[3] <= 0) { fev[3] = 0; printf("* %d mm *", fev[3]); printf(" atencao reservatorio vazio!!!"); } else { if (fev[3] >= 10) { printf("* %d mm *", fev[3]); } else { printf("* %d mm *", fev[3]); } } } void valores_marco() { printf("\n * mar "); if (mar[0] >= 10) { printf("* %d mm ", mar[0]); } else { printf("* %d mm ", mar[0]); } if (mar[1] >= 10) { printf("* %d mm ", mar[1]); } else { printf("* %d mm ", mar[1]); } if (mar[3] >= quantidadeMaxima) { mar[3] = quantidadeMaxima; printf("* %d mm *", mar[3]); printf(" atencao reservatorio cheio!!!"); } else if (mar[3] <= 0) { mar[3] = 0; printf( printf("* %d mm *", mar[3]); " atencao reservatorio vazio!!!"); } else { if (mar[ 3] >= 10) { printf("* %d mm *", mar[3]); } else { printf("* %d mm *", mar[3]); } } } void valores_abril() { printf("\n * abr "); if (abr[0] >= 10) { printf("* %d mm ", abr[0]); } else { printf("* %d mm ", abr[0]); } if (abr[1] >= 10) { printf("* %d mm ", abr[1]); } else { printf("* %d mm ", abr[1]); } if (abr[3] >= quantidadeMaxima) { abr[3] = quantidadeMaxima; printf("* %d mm *", abr[3]); printf(" atencao reservatorio cheio!!!"); } else if (abr[3] <= 0) { abr[3] = 0; printf("* %d mm *", abr[3]); printf(" atencao reservatorio vazio!!!"); } else { if (abr[3] >= 10) { printf("* %d mm *", abr[3]); } else { printf("* %d mm *", abr[3]); } } } void valores_maio() { printf("\n * mai "); if (mai[0] >= 10) { printf("* %d mm ", mai[0]); } else { printf("* %d mm ", mai[0]); } if (mai[1] >= 10) { printf("* %d mm ", mai[1]); } else { printf("* %d mm ", mai[1]); } if (mai[3] >= quantidadeMaxima) { mai[3] = quantidadeMaxima; printf("* %d mm *", mai[3]); printf(" atencao reservatorio cheio!!!"); } else if (mai[3] <= 0) { mai[3] = 0; printf( printf("* %d mm *", mai[3]); printf(" atencao reservatorio vazio!!!"); } else { if (mai[3] >= 10) { printf("* %d mm *", mai[3]); } else { printf("* %d mm *", mai[3]); } } } void valores_junho() { printf("\n * jun "); if (jun[0] >= 10) { printf("* %d mm ", jun[0]); } else { "* %d mm ", jun[0]); } if (jun[1] >= 10) { printf("* %d mm ", jun[1]); } else { printf("* %d mm ", jun[1]); } if (jun[3] >= quantidadeMaxima) { jun[3] = quantidadeMaxima; printf("* %d mm *", jun[3]); printf(" atencao reservatorio cheio!!!"); } else if (jun[3] <= 0) { jun[3] = 0; printf("* %d mm *", jun[3]); printf(" atencao reservatorio vazio!!!"); } else { if (jun[3] >= 10) { printf("* %d mm *", jun[3]); } else { printf("* %d mm *", jun[3]); } } } void valores_julho() { printf("\n * jul "); if (jul[0] >= 10) { printf("* %d mm ", jul[0]); } else { printf("* %d mm ", jul[0]); } if (jul[1] >= 10) { printf("* %d mm ", jul[1]); } else { printf("* %d mm ", jul[1]); } if (jul[3] >= quantidadeMaxima) { jul[3] = quantidadeMaxima; printf("* %d mm *", jul[3]); printf(" atencao reservatorio cheio!!!"); } else if (jul[3] <= 0) { jul[3] = 0; printf("* %d mm *", jul[3]); printf(" atencao reservatorio vazio!!!"); } printf( else { if (jul[3] >= 10) { printf("* %d mm *", jul[3]); } else { printf("* %d mm *", jul[3]); } } } void valores_agosto() { printf("\n * ago "); if (ago[0] >= 10) { printf("* %d mm ", ago[0]); } else { printf("* %d mm ", ago[0]); } if (ago[1] >= 10) { printf("* %d mm ", ago[1]); } else { printf("* %d mm ", ago[1]); } if (ago[3] >= quantidadeMaxima) { ago[3] = quantidadeMaxima; printf("* %d mm *", ago[3]); printf(" atencao reservatorio cheio!!!"); } else if (ago[3] <= 0) { ago[3] = 0; printf("* %d mm *", ago[3]); " atencao reservatorio vazio!!!"); } else { if (ago[ 3] >= 10) { printf("* %d mm *", ago[3]); } else { printf("* %d mm *", ago[3]); } } } void valores_setembro() { printf("\n * set "); if (set[0] >= 10) { printf("* %d mm ", set[0]); } else { printf("* %d mm ", set[0]); } if (set[1] >= 10) { printf("* %d mm ", set[1]); } else {printf("* %d mm ", set[1]); } if (set[3] >= quantidadeMaxima) { set[3] = quantidadeMaxima; printf("* %d mm *", set[3]); printf(" atencao reservatorio cheio!!!"); } else if (set[3] <= 0) { set[3] = 0; printf("* %d mm *", set[3]); printf(" atencao reservatorio vazio!!!"); } printf( else { if (set[3] >= 10) { printf("* %d mm *", set[3]); } else { printf("* %d mm *", set[3]); } } } void valores_outubro() { printf("\n * out "); if (out[0] >= 10) { printf("* %d mm ", out[0]); } else { printf("* %d mm ", out[0]); } if (out[1] >= 10) { printf("* %d mm ", out[1]); } else { printf("* %d mm ", out[1]); } if (out[3] >= quantidadeMaxima) { out[3] = quantidadeMaxima; printf("* %d mm *", out[3]); printf(" atencao reservatorio cheio!!!"); } else if (out[3] <= 0) { out[3] = 0; printf("* %d mm *", out[3]); printf(" atencao reservatorio vazio!!!"); } else { if (out[3] >= 10) { printf("* %d mm *", out[3]); } else { printf("* %d mm *", out[3]); } } } void valores_novembro() { printf("\n * nov "); if (nov[0] >= 10) { printf("* %d mm ", nov[0]); } else { printf("* %d mm ", nov[0]); } if (nov[1] >= 10) { printf("* %d mm ", nov[1]); } else { printf("* %d mm ", nov[1]); } if (nov[3] >= quantidadeMaxima) { nov[3] = quantidadeMaxima; printf("* %d mm *", nov[3]); printf(" atencao reservatorio cheio!!!"); } else if (nov[3] <= 0) { nov[3] = 0; printf("* %d mm *", nov[3]); printf(" atencao reservatorio vazio!!!"); } else { if (nov[3] >= 10) { printf("* %d mm *", nov[3]); } else { printf("* %d mm *", nov[3]); } } } void valores_dezembro() { printf("\n * dez "); if (dez[0] >= 10) { printf("* %d mm ", dez[0]); } else { printf("* %d mm ", dez[0]); } if (dez[1] >= 10) { printf("* %d mm ", dez[1]); } else { printf("* %d mm ", dez[1]); } if (dez[3] >= quantidadeMaxima) { dez[3] = quantidadeMaxima; printf("* %d mm *", dez[3]); printf(" atencao reservatorio cheio!!!"); } else if (dez[3] <= 0) { dez[3] = 0; printf("* %d mm *", dez[3]); printf(" atencao reservatorio vazio!!!"); } else { if (dez[3] >= 10) { printf("* %d mm *", dez[3]); } else { printf("* %d mm *", dez[3]); } } } Imagem do código funcionando no seu computador: 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 Solução do aluno: // ** Bibliotecas **// #include<stdio.h> #include<stdlib.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() { 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 duas linhas 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 techado. } 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 techado. } 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 ocorrencias 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: contador if (vetor[i] == vetor[i - 1]) { //Se é igual ao anterior incrementa o 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 queele aparece: 1], cont); printf(" O caracter %c aparece %d vezes!\n", vetor[i - //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: cont); printf(" O caracter %c aparece %d vez!\n", vetor[i - 1], //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); } } Imagem do código funcionando no seu computador
Compartilhar