Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA TECNOLOGIA EM CIENCIA DE DADOS DISCIPLINA DE LÓGICA DE PROGRAMAÇÃO E ALGORITMOS ATIVIDADE PRÁTICA DIEGO DE JESUS CORDEIRO – RU: 3112949 VINICIUS BORIN CONTAGEM - MINAS GERAIS 2020 1 1 EXERCÍCIO 1 ENUNCIADO: Uma certa empresa fez uma pesquisa de mercado para saber se as pessoas gostaram ou não do seu último produto lançado. Para isto, coletou o sexo do entrevistado e a sua resposta (sim ou não). Sabendo que foram entrevistadas 150 pessoas, fazer um algoritmo que calcule e mostre ao final: • O número de pessoas que responderam sim; • O número de pessoas que responderam não; • A percentagem de pessoas do sexo feminino que responderam sim; • A percentagem de pessoas do sexo masculino que responderam não; Para a resposta SIM/NÃO. Utilize uma variável do tipo CHAR, que armazena S ou N, ou use uma variável do tipo INT que armazena 1 (para SIM) e 2 (para NÃO). Solução do aluno: Não esqueça de explicar o código com comentários!! CTRL+C/CTRL+V do Visual Studio!! Se desejar, defina as páginas do documento para PAISAGEM para melhor inserir os códigos. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int main() { // declaração de variaveis int opcao = 0, msim = 0, mnao = 0, fsim = 0, fnao = 0, entrevistados = 0, sexo = 0, pessoas = 0, linha = 0, resposta = 0, sim = 0, nao = 0; float percentualmasculinonao = 0, aux = 0, percentualfemininosim = 0;//float para o calculo de percentuais //obs: para esse exercício, nao utilizei um valor total de entrevistados, declarei a variável "entrevistados" no qual é possível incluir a quantidade que quiser de entrevistados não tendo uma quantidade máxima // menu de opções inicio: system ("cls"); printf ("\n\n1 - Adicionar dados de pesquisa"); printf ("\n2 - Relatorio de pesquisa completo"); printf ("\n3 - Sair"); printf ("\n\nEscolha uma opcao: "); scanf_s ("%d", &opcao);//ler a opção desejada no menu switch (opcao) {//função que verifica qual opção foi escolhida case 1:// caso a opção escolhida seja 1, executa o algoritmo deste loop system ("cls");// função para limpar a tela do usuário printf ("Quantas pessoas deseja incluir na entrevista: "); scanf_s ("%d", &pessoas);// aqui será lido quantas pessoas deseja cadastrar na pesquisa, OBS: ao acessaar o menu e quiser i ncluir mais pessoas, é possível, tornando a pesquisa mais ampla for (linha = 0; linha < pessoas; ++linha) {// loop será lido enquanto atingir a quantidade de pessoas que deseja cadastrar sexo = 0; resposta = 0; printf ("\n\nPessoa %d - Digite 1 para masculino ou 2 para feminino: ", linha + 1); scanf_s ("%d", &sexo);// variável para ler o sexo if (sexo == 1) {//caso for do sexo masculino executa o if printf ("\nA pessoa gostou do produto? 1-SIM, 2-NAO: "); scanf_s ("%d", &resposta);//leio a resposta se gostou do protudo if (resposta == 1) { ++msim; //caso gostou, sei que é do sexo masculino e gostou do produto } else { ++mnao; // senão, é masculino e não gostou } } if (sexo == 2) {// já aqui, é identico ao anterior, porém caso a escolha seja do sexo feminino printf ("\nA pessoa gostou do produto? 1-SIM, 2-NAO: "); scanf_s ("%d", &resposta); if (resposta == 1) { ++fsim;//é do sexo feminino e gostou do produto } else { ++fnao;//feminino e não gostou } } system ("cls");//limpa a tela } entrevistados = entrevistados + pessoas; pessoas = 0;//zerando as pessoas no inicio do cadastro system ("pause"); //pausa goto inicio;//retorna ao menu inicial case 2:// aqui é o loop que mostra os resultados da pesquisa if (entrevistados != 0) {// se tiver entrevistados cadastrados, executa if aux = 100 / entrevistados;//como não há limite de entrevistados, a variável aux é utilizada para calcular os p ercentuais de acordo com a quantidade de entrevistados cadastrados sim = msim + fsim;//sim recebe a quantidade de pessoas que responderam que gostaram, independente do sexo nao = mnao + fnao; percentualmasculinonao = mnao * aux;//aqui multiplico a quantidade de pessoas do sexo masculino responderam não pela variável aux, calculado anteriormente de acordo com o numero total de entrevistados percentualfemininosim = fsim * aux;//aqui é o calculo do sexo feminino que respondeu sim // abaixo os printfs do relatório printf ("\nRELATORIO COMPLETO "); printf ("\n\nForam estrevistados um total de %d pessoas", entrevistados); printf ("\nO numero de pessoas que responderam SIM foi : %d", sim); printf ("\nO numero de pessoas que responderam NAO foi : %d", nao); printf ("\nO percentual de pessoas do sexo FEMININO que responderam SIM : %.2f", percentualfemininosim); printf ("\nO percentual de pessoas do sexo MASCULINO que responderam NAO : %.2f\n\n", percentualmasculinonao); } else {// printf ("\nVoce ainda nao cadastrou dados da pesquisa\n\n"); } system ("pause"); goto inicio; case 3: //opção usada para sair system ("cls"); printf ("voce pediu para sair, fechando programa...\n"); exit (0);//fecha o programa default: // verifica se a opção digitada eh valida system ("cls"); printf ("voce deve escolher uma opcao valida\n"); printf ("Precione qualquer tecla para voltar ao menu\n"); system ("pause"); goto inicio;//retorna ao início do menu } }//FIM DO PROGRAMA 2 EXERCÍCIO 2 ENUNCIADO: Para cada um dos consumidores de energia elétrica de uma cidade é informado o número da conta e o total de KW consumido no mês. Sabendo-se que o custo do KW é de R$ 1,75, fazer um algoritmo para: • Armazenar e listar o número da conta, o total de KW consumidos e o valor a pagar de cada consumir cadastrado; • Listar o número da conta, o total de KW consumidos e o valor a pagar do consumidor que mais gastou e o que menos gastou; • Mostrar a média de consumo da cidade; • Mostrar o número de consumidores que ultrapassaram o consumo de 170 KW; Armazene as informações em estruturas de vetores e/ou matrizes. Na tela, deve existir um MENU que pergunta ao usuário se ele deseja cadastrar um novo consumidor ou listar alguma informação (maior, menor, média, etc.). Uma certa empresa fez uma pesquisa de mercado para saber se as pessoas gostaram ou não do seu último produto lançado. Para isto, coletou o sexo do entrevistado e a sua resposta (sim ou não). Sabendo que foram entrevistadas 150 pessoas, fazer um algoritmo que calcule e mostre ao final: • O número de pessoas que responderam sim; • O número de pessoas que responderam não; • A percentagem de pessoas do sexo feminino que responderam sim; • A percentagem de pessoas do sexo masculino que responderam não; Para a resposta SIM/NÃO. Utilize uma variável do tipo CHAR, que armazena S ou N, ou use uma variável do tipo INT que armazena 1 (para SIM) e 2 (para NÃO). Solução do aluno: Nãoesqueça de explicar o código com comentários!! CTRL+C/CTRL+V do Visual Studio!! Se desejar, defina as páginas do documento para PAISAGEM para melhor inserir os códigos. #include <stdlib.h> #include <stdio.h> #include <conio.h> float custoPorKW = 1.75, clientes[100][3], maior, menor, media; //declaração de variaveis int opcao, total, coluna, linha, aux, tam = 0; int main() { //inico de código, com um menu para escolha inicio: system("cls"); printf("\nEscolha sua opcao "); printf("\n1 - Cadastrar cliente : "); printf("\n2 - Verificar qual cliente teve o MAIOR consumo : "); printf("\n3 - Verificar qual cliente teve o MENOR consumo : "); printf("\n4 - Media de consumo dos clientes : "); printf("\n5 - Exibir clientes que ultrapassaram 170 kw:"); printf("\n6 - Relatorio das contas : "); printf("\n7 - Sair:"); printf("\n\nQual a sua escolha : "); scanf_s("%d", &opcao); switch (opcao) { case 1: //opção usada para cadastrar novos clientes opcao = 0; system("cls"); if (total < 100) { // se o total de clientes for menor que 100, entra no cadastro printf("Digite o numero da conta : "); scanf_s("%f", &clientes[total][0]); // le o numero do cliente e armazena na matriz clientes printf("\nDigite a quantidade de KW consumida pelo cliente : "); scanf_s("%f", &clientes[total][1]); //le o total de kw consumido e armazena na matriz clientes clientes[total][2] = clientes[total][1] * custoPorKW; // multiplica o consumo pelo custo e arma- zena na matriz clientes total = total + 1; } else { printf("\nNao eh possível cadastrar novos clientes, maximo 100.\n"); } system("pause"); goto inicio; // fim do loop opção 1 case 2: // utilizado para verificar qual cliente teve o maior consumo opcao = 0; maior = 0; aux = 0; if (total != 0) { // verifica se o total de clientes é diferente de Zero for (linha = 0; linha < total; ++linha) { //passara por toda a matriz clientes if (maior < clientes[linha][1]) { //testa se o consumo é maior que a variável maior maior = clientes[linha][1]; //variável maior recebe o valor para testar com ou- tros consumos de clientes da matriz aux = linha; // ira armazenar a linha da matriz em que encontrar o maior con- sumo }//fim do if }//fim do for printf("O maior consumo registrado foi do cliente %.0f que consumiu %.0f KW, tendo um gasto de R$ %.2f\n\n", clientes[aux][0], clientes[aux][1], clientes[aux][2]); //imprime na tela a linha armazenada por aux onde foi encontrado o maior consumo } else { printf("\nNao há clientes cadastrados"); } system("pause"); goto inicio; //fim da opção 2 case 3: // utilizado para verificar qual cliente teve o MENOR consumo opcao = 0; menor = clientes[0][1]; aux = 0; if (total != 0) { // verifica se o total de clientes é diferente de Zero for (linha = 0; linha < total; ++linha) { //passara por toda a matriz clientes if (menor > clientes[linha][1]) { //testa se o consumo é menor que a variável menor aux = linha; // ira armazenar a linha da matriz em que encontrar o menor con- sumo }//fim do if }//fim do for printf("O menor consumo registrado foi do cliente %.0f que consumiu %.0f KW, tendo um gasto de R$ %.2f\n\n", clientes[aux][0], clientes[aux][1], clientes[aux][2]); //imprime na tela a linha armazenada por aux onde foi encontrado o menor consumo } else { printf("\nNao há clientes cadastrados\n"); } system("pause"); //goto inicio; case 4: // media de consumo de todos os clientes opcao = 0; media = 0; if (total != 0) { // verifica se o total de clientes é diferente de Zero for (linha = 0; linha < total; ++linha) { //passara por toda a matriz clientes media = media + clientes[linha][1]; //a variável auxiliar media ira receber a somatória de consumo de todos os clientes }//fim do for media = media / total; // dividi-se a variável pela quantidade total de clientes para obter a media printf("\n A media consumida de todos os clientes foi de %.0f KW\n\n", media); } else { printf("\nNao há clientes cadastrados"); } system("pause"); goto inicio; case 5: // opção usada para verificar qual cliente ultrapassou 170kw de consumo opcao = 0; media = 0; if (total != 0) { // verifica se o total de clientes é diferente de Zero printf("CLIENTES DE ULTRAPASSARAM O CONSUMO DE 170 KW \n\n"); printf("CONTA CONSUMO VALOR EM R$ \n"); for (linha = 0; linha < total; ++linha) { //passara por toda a matriz clientes if (clientes[linha][1] > 170) { //testa se o consumo for maior que 170kw printf("\n"); for (coluna = 0; coluna < 3; ++coluna) // se o consumo for maior, usa para imprimir toda a linha com os dados printf(" %.2f ", clientes[linha][coluna]); }//fim do if }//fim do for } else { printf("\nNao há clientes cadastrados"); } system("pause"); goto inicio; case 6: //opção usada para imprimir um relatório de todas as contas opcao = 0; if (total != 0) { // verifica se o total de clientes é diferente de Zero printf("CONTA CONSUMO VALOR EM R$ \n"); for (linha = 0; linha < total; ++linha) { // usado para ler a matriz ate o total de clientes printf("\n"); for (coluna = 0; coluna < 3; ++coluna) { printf("%.2f ", clientes[linha][coluna]); } } } else { printf("\nNao há clientes cadastrados"); } system("pause"); goto inicio; // fim do loop opção 6 case 7: //opção usada para sair system("cls"); printf("voce pediu para sair, fechando programa...\n"); //Sleep(3000); // Aqui ele pausa por 3 segundos depois continua o código exit(0); default: // verifica se a opção digitada eh valida printf("voce deve escolher uma opcao valida\n"); printf("Precione qualquer tecla para voltar ao menu\n"); system("pause"); goto inicio; } // final switch } // final do metodo int main 3 EXERCÍCIO 3 ENUNCIADO: Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais. Dada uma matriz quadrada dimensão MxM, verifique se ela é um quadrado mágico através de um algoritmo. Exemplo de matriz quadrado mágico: [ 8 0 7 4 5 6 3 10 2 ] Solução do aluno: Não esqueça de explicar o código com comentários!! CTRL+C/CTRL+V do Visual Studio!! Se desejar, defina as páginas do documento para PAISAGEM para melhor inserir os códigos. #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <locale.h> int opcao, coluna, linha, matriz[50][50], tam, aux, d1, d2, vLinha[50], vColuna[50], aLinha, aColuna; int main() { //inico de código, com um menu para escolha inicio: //menu de opções system("cls"); //limpar tela printf("\n\nMATRIZ QUADRADO MAGICO\n "); printf("\nEscolha uma opcao "); printf("\n1 - Insira valores na matriz"); printf("\n2 - Exibir a matriz inserida"); printf("\n3 - Verifique se a matriz pode ser um quadrado magico"); printf("\n4 - Sair"); printf("\n\n Escolhaa uma opcao : "); scanf_s("%d", &opcao); switch(opcao) { //usa a opcao escolhida e entra no loop da opcao escolhida case 1: system("cls"); tam = 0; aux = 0; for (linha = 0; linha < 50; ++linha) {//usado para limpar a matriz for (coluna = 0; coluna < 50; ++coluna) { matriz[linha][coluna] = 0; } } printf("Quantas linhas e colunas tera sua Matriz quadrada : "); scanf_s("%d", &tam);//usado para saber de quantas linhas e colunas será a matriz aux = tam * tam;//como a matriz é quadrada, multiplica-se o tamanho recebido para saber a quantidade de numeros que terá a matriz printf("\n\nSua matriz tera % d linha e % d colunas, Com total de % d numeros : ", tam, tam, aux); for (linha = 0; linha < tam; ++linha) { for (coluna = 0; coluna < tam; ++coluna) { printf("\nDigite um a um os valores da matriz; linha % d, coluna % d : ", linha, coluna); scanf_s("%d", &matriz[linha][coluna]); } } printf("\n\nPronto, sua matriz esta completa, favor retornar ao menu\n\n"); system("pause"); goto inicio; case 2: //opção usada para imprimir na tela a matriz anteriormente inserida system("cls"); if (tam != 0) { printf("\n Sua Matriz cadastrada : \n\n"); for (linha = 0; linha < tam; ++linha) { // a matriz sera lida somente ate o tamanho definido printf("\n\n"); for (coluna = 0; coluna < tam; ++coluna) { printf(" % d ", matriz[linha][coluna]); //imprime os números da matriz } printf("\n\n"); } } else { printf("\n\nVoce ainda nao cadastrou uma Matriz, volte ao menu inicial\n\n"); } system("pause"); // pausa goto inicio; case 3: //opção usada para verificar se a matriz inserida pode ser um quadrado magico system("cls"); if (tam != 0) { d1 = 0; d2 = 0; aLinha = 0; aColuna = 0; aux = tam - 1; // variável auxiliar recebe tamanho da matriz menos 1 para usar no calculo da diagonal printf("\n Verificando sua Matriz : \n"); for (linha = 0; linha < tam; ++linha) { // a matriz sera lida somente ate o tamanho definido d2 = d2 + matriz[linha][aux];// usado para ler e somar os valores da diagonal que co- meça pela ultima coluna e vem decrescendo até a coluna zero aux = aux - 1;//diminuo o aux para na próxima passagem, usar o valor da outra coluna for (coluna = 0; coluna < tam; ++coluna) { vLinha[linha] = vLinha[linha] + matriz[linha][coluna];// leios os valores de cada linha da matriz, somo as mesmas e guardo no vetor para comparar depois com todas as variáveis vColuna[linha] = vColuna[linha] + matriz[coluna][linha];//leio os valores de cada coluna,somo e armazeno no vetorcoluna if (linha == coluna) { d1 = d1 + matriz[linha][coluna]; } //neste ponto a variável diag1 lê e soma as variáveis em diagonal da ma- triz...1.1, 2.2, 3.3 e assim por diante } } //neste ponto, é feita a comparação das linhas, colunas e diagonais aLinha = 0; aColuna = 0; for (linha = 0; linha < tam; ++linha) { } for (linha = 0; linha < tam - 1; ++linha) { //for usado ler os vetores das linhas e colunas e comparar seus v alores entre si...tam-1 é usado para não comparar com um valor inexistente na matriz if (vLinha[linha] == vLinha[linha + 1]) aLinha = aLinha + 1; if (vColuna[linha] == vColuna[linha + 1]) aColuna = aColuna + 1; } //fim for if ((aLinha) == (aColuna)) { if ((aColuna) == (tam - 1)) { printf("\n\n TESTE auxilinha %d auxcoluna %d tam-1 %d\n", aLinha, aColuna, tam - 1); if (vLinha[0] == vColuna[0]) {//por fim, camparo todos os valores de li- nha,coluna e diagonais if (vColuna[0] == d1) if (d1 == d2) printf("\n\n\n PARABENS, ESTA MATRIZ FOI RECONHECIDA COMO UM QUADRADO MAGICO \n\n"); } } } else { printf("\n\n Essa matriz NAO foi reconhecida como quadrado magico :("); printf("\n\n Tente da proxima vez...\n\n"); }//fim else } else { printf("\n\nVoce ainda nao cadastrou uma Matriz, volte ao menu inicial\n\n"); } system("pause"); // pausa goto inicio; case 4: //opção usada para sair system("cls"); printf("voce pediu para sair, fechando programa...\n"); exit(0); default: // verifica se a opção digitada eh valida printf("\nvoce deve escolher uma opcao valida\n"); printf("\nPrecione qualquer tecla para voltar ao menu\n"); system("pause"); goto inicio; }//fim switch }//fim int main 4 EXERCÍCIO 4 ENUNCIADO: Escrever uma função que receba como parâmetro duas strings, bem como um valor inteiro que representa uma posição. A função deve, portanto, inserir a segunda string no na posição indicada da primeira. Escreva um programa que receba estas duas strings do usuário, o valor da posição desejada, e chame a função anteriormente implementada e exiba o resultado ao usuário na tela. Para imprimir na tela e tirar o print screen, mostre o resultado utilizando o seu primeiro nome como string 1 e o seu último nome como string 2, e a posição de teste deverá ser o último digito do seu RU. Solução do aluno: Não esqueça de explicar o código com comentários!! CTRL+C/CTRL+V do Visual Studio!! Se desejar, defina as páginas do documento para PAISAGEM para melhor inserir os códigos. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str1[20], str2[20], auxStr[40]; int pos = 0, medida1= 0, medida2 = 0, aux = 0, linha = 0, demais = 0, opcao = 0; inicio: system("cls"); printf("\n\n1 - Para digitar 2 string e posicao"); printf("\n2 - Resultado com posicao digitada"); printf("\n3 - Resultado com posicao de teste utilizando o ultimo numero do RU 3112949"); printf("\n4 - Sair"); printf("\n\Selecione uma opcao: "); scanf_s("%d", &opcao); switch (opcao) { case 1: // case que recebe as strings digitadas pelo usuario e a posição escollhida system("cls"); getchar(); //serve para realizar a limpeza do buffer digitado no scanf_s da opcao printf("Digite string numero 1: "); gets_s(str1); printf("\n\nDigite string numero 2: "); gets_s(str2); printf("\n\nDigite a posicao da string 2 na string 1: "); scanf_s("%d", &pos); medida1 = strlen(str1); medida2 = strlen(str2); system("pause"); goto inicio; case 2: //case que exibe a string digitada pelo usuario na sua respectiva posicao digitada pelo usuario aux = 0; demais = pos; for (linha = 0; linha < pos; ++linha) { auxStr[linha] = str1[linha]; } for (linha = pos; linha < pos + medida2; ++linha) { auxStr[linha] = str2[aux]; ++aux; } for (linha = pos + medida2; linha < medida1 + medida2; ++linha) { auxStr[linha] = str1[pos]; pos = pos + 1; } auxStr[medida1 + medida2] = '\0'; printf("\n\nString final: %s\n\n\n", auxStr); system("pause"); goto inicio; case 3: //case que realiza o teste com o RU aux = 0; demais = 9; if (medida1 >= 9) { for (linha = 0; linha < demais; ++linha) { auxStr[linha] = str1[linha]; } for (linha = demais; linha < pos + medida2; ++linha) { auxStr[linha] = str2[aux]; ++aux; } for (linha = demais + medida2; linha < medida1 + medida2; ++linha) { auxStr[linha] = str1[demais]; demais = demais + 1; } auxStr[medida1 + medida2] = '\0'; printf("\n\nString final: %s\n\n\n", auxStr); } else { printf("\n\n A String digitadapode ser menor que a posicao de teste, certifique-se que ela possua mais de 9 caracteres\n"); } system("pause"); goto inicio; case 4: //case usada para sair system("cls"); printf("voce pediu para sair, fechando programa...\n"); exit(0); default: // é usado para verificar se a opção digitada é valida system("cls"); printf("voce deve escolher uma opcao valida\n"); printf("Precione qualquer tecla para voltar ao menu\n"); system("pause"); goto inicio; } //Fim do Switch }// Fim do metodo Int Main
Compartilhar