Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO DISCIPLINA DE LINGUAGEM DE PROGRAMAÇÃO ATIVIDADE PRÁTICA HUGO PIRES BOAES – RU: 3421277 VINICIUS POZZOBON BORIN SÃO LUÍS – MARANHÃO 2021 1 1 EXERCÍCIO 1 ENUNCIADO: Escreva um algoritmo em linguagem C que atenda os seguintes requisitos: ✓ Crie um registro para armazenar o seu Nome Completo e o seu RU. ✓ Solicite ao usuário que digite o seu RU e o seu Nome Completo. ✓ Crie um ponteiro para o registro. ✓ Através do ponteiro para o registro verifique se o RU digitado é um número par ou ímpar e informe a resposta na tela. ✓ Através do ponteiro para o registro imprima o Nome Completo informado de traz para frente, invertido. Por exemplo: Pedro Alvares Cabral -> larbaC seravlA ordeP Para demonstrar o funcionamento faça as capturas de tela do terminal utilizando seu nome completo e o seu RU.. Solução do aluno: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> int main() { setlocale(LC_ALL, "portuguese"); //Parametros para lingua portugues, acentua- ções etc... struct registro { char nome[25]; //registro para armazenar o seu Nome Completo e o seu RU. int ru; char c; //Variavel criada para realizar a limpeza do buffer do teclado }; struct registro rg; printf("****************ATIVIDADE PRÁTICA 1*****************\n\n"); printf("DIGITE SEU RU: "); scanf_s("%d", &rg.ru); //Armazena o valor inteiro do RU no registro while ((rg.c = getchar()) != '\n' && rg.c != EOF) {} //limpeza do buffer de te- clado printf("\nDIGITE SEU NOME COMPLETO: "); gets(rg.nome); int* pontru; //criação do ponteiro para RU pontru = &rg.ru; char* pontnome; //Criação do ponteiro para o nome pontnome = &rg.nome; if (*pontru %2 == 0) //Verificação se o RU digitado é um número par ou ímpar { printf("\nO RU DIGITADO É PAR!!!\n\n"); } else { printf("\nO RU DIGITADO É IMPAR!!!\n\n"); } int tam; // Variavel criada pra usar no laço FOR tam = strlen(pontnome); //numero de caracteres na string for (int i = tam; i >= 0; i--) //Laço para imprimir o nome de tras para frente { printf("%c", pontnome[i]); } printf("\n\n"); system("pause"); return 0; } Imagem do código funcionando no seu computador: 2 EXERCÍCIO 2 ENUNCIADO: Escreva um algoritmo em linguagem C que atenda os seguintes requisitos: ✓ Crie um vetor com a quantidade de dígitos do seu RU. ✓ Solicite que usuário digite o seu RU, cada digito digitado deve ser armazenado em uma posição do vetor. ✓ Utilizando ponteiros verifique qual o maior e menor número contido neste vetor e im- prima na tela. Para demonstrar o funcionamento faça as capturas de tela do terminal utilizando seu RU. Solução do aluno: #include<stdio.h> #include<stdlib.h> #include<locale.h> int main() { setlocale(LC_ALL, "portuguese"); //parametros para uso da lingua portuguesa printf("******************ATIVIDADE PRATICA 2**********************\n\n"); int ruint, *x; int ru[7]; // Vetor com a quantidade de dígitos do seu RU x = ru; //Ponteiro que aponta para o vetor int maior = 0; int menor =9; printf("DIGITE SEU RU COM 7 DÍGITOS: "); scanf_s("%d", &ruint); if (ruint < 9999999) //Laço de decisão para não dar erro, se digitado mais que 7 digitos { ru[0] = ruint / 1000000; ru[1] = (ruint % 1000000) / 100000; ru[2] = (ruint % 100000) / 10000; //Armazenamento de cada digito em uma posição do vetor ru[3] = (ruint % 10000) / 1000; ru[4] = (ruint % 1000) / 100; ru[5] = (ruint % 100) / 10; ru[6] = ruint % 10; printf("\n\n"); for (int i = 0; i < 7; i++) { printf("POSIÇÃO [%d] DO VETOR: %d\n", i, x[i]); //Demonstração de cada posição do vetor } printf("\n\n"); for (int j = 0; j < 7; j++) //Laço para encontrar o maior e o menor va- lor digitado { if (maior > x[j]) //Estrutura para encontrar o maior { maior = maior; } else { maior = x[j]; } if (menor < x[j]) //Estrutura para encontrar o menor { menor = menor; } else { menor = x[j]; } } printf("MAIOR VALOR DIGITADO %d\n\n", maior); //Impressão na tela do maior valor printf("MENOR VALOR DIGITADO %d\n\n", menor); //Impressão na tela do me- nor valor } else { printf("DIGITE APENAS 7 DIGITOS!!!\n"); //Estrutura para o programa não dar erro caso digite mais digitos } system("pause"); return 0; } Imagem do código funcionando no seu computador: 3 EXERCÍCIO 3 ENUNCIADO: Faça um programa, em linguagem C, para calcular a área e o perímetro de um hexágono. O programa deve implementar uma função chamada calc_hexa que calcula a área e o perímetro de um hexágono regular de lado L. O programa deve solicitar ao usuário o lado do polígono, calcular e imprimir a área e o perímetro do polígono. O programa termina quando for digitado um valor negativo qualquer para o lado. A função deve obedecer ao seguinte protótipo: void calc_hexa(float l, floar *area, float *perimetro); Lembrando que a área e o perímetro de um hexágono regular são dados por: 𝑎𝑟𝑒𝑎=(3×𝐿2×√3)/2 𝑝𝑒𝑟í𝑚𝑒𝑡𝑟𝑜=6×𝐿 Para demonstrar o funcionamento faça os print de tela utilizando o primeiro número do seu RU. Solução do aluno: #include<stdio.h> #include<stdlib.h> #include<locale.h> void calc_hexa(float l, float *area, float *perimetro); int main() { setlocale(LC_ALL, "portuguese"); //parametros para uso da lingua portuguesa printf("******************ATIVIDADE PRATICA 3**********************\n\n"); float a, p, lado, * area, *perimetro; //Declaração de variaveis e ponteiro area = &a; perimetro = &p; printf("DIGITE O VALOR DOS LADOS DO HEXÁGONO: \n"); scanf_s("%f", &lado); if (lado > 0) //Estrutura condicional { a = (3 * (lado * lado) * 1.732050) / 2; //formula usada para o calculo da area p = 6 * lado; //formula usada para o calculo do perimetro calc_hexa(lado, area, perimetro); //chamada da função } else { printf("FOI DIGITADO UM VALOR NEGATIVO PARA O LADO O PROGRAMA, E ELE SERÁ ENCERRADO\n\n"); } system("pause"); return 0; } void calc_hexa(float l, float *area, float *p) //função para imprimir na tela os va- lores dos ponteiros { printf("O PERIMETRO É IGUAL A : %.2f\n", *p); printf("A ÁREA É IGUAL A : %.2f\n", *area); } Imagem do código funcionando no seu computador: 4 EXERCÍCIO 4 ENUNCIADO: Faça, em linguagem C, uma função recursiva para o cálculo potenciação. Sabe-se que o cálculo pode ser feito através de multiplicações sucessivas. Para demonstrar o funcionamento utilize o primeiro digito do seu RU como base e o último digito como expoente. Solução do aluno: #include <stdio.h> #include< stdlib.h> #include <locale.h> int funcao(int base, int expoente); // declaração da função int main() { setlocale(LC_ALL, "portuguese"); // Parametro para lingua portuguesa int b, e; //Declaração de variaveis printf("*******************ATIVIDADE PRATICA 4******************\n"); printf("\n\nDIGITE A BASE (primeiro digito do seu RU): "); scanf_s("%d", &b); //Base armazenada na memoria printf("\n\nDIGITE O EXPOENTE (último digito do seu RU): "); scanf_s("%d", &e); // Expoente armazenado na memoria printf("\nPOTÊNCIA É IGUAL A: %d\n\n", funcao(b, e)); //Mostra o resultado e chama a função system("pause"); return 0; } int funcao(intbase, int expoente) //Parametros da função { int res; //Variavel usada na função if (expoente > 0) //Condicional usada para recursividade { res = base* funcao(base, expoente - 1); //função chamando função (recur- sividade) return res; // Retorno do valor para a função main } else { return 1; //Retorno do valor para a função main } } Imagem do código funcionando no seu computador: 5 EXERCÍCIO 5 ENUNCIADO: Crie um programa, em linguagem C, que receba 10 registros con- tendo, Nome, RU, telefone email. Solicite que sejam digitados todos os dados de todos os re- gistros e ao final salve-os em um arquivo.csv, utilize o ; (ponto e vírgula) para separador e campo. O nome do arquivo deve ser o seu número de RU. Solução do aluno: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #include <time.h> #include <string.h> #include<locale.h> #include <Windows.h> #include<ctype.h> //criação da Struct ALUNO a onde irá receber o cadastrar Nome , email, ru, fone typedef struct { char nome[100], email[20], fone[20]; int ru; } ALUNO; //criação da função menu para poder realizar a escolha das opções para controlar a ALUNO int menu() { setlocale(LC_ALL, "portuguese"); int op;//vai receber a opção escolhida pelo usuário printf("1-Cadastro\n2-Salvar\n0 -sair\n"); scanf_s("%d", &op); return op;//vai retornar a opção escolhida pelo usuário } //função principal do programa int main() { setlocale(LC_ALL, "portuguese"); printf("*************ATIVIDADE PRÁTICA 5*************\n\n"); //as variáveis necessárias para executar o programa int op, contador = 0, i; //vai criar a ALUNO ALUNO ALUNO[10], * cadastro, temp; cadastro = ALUNO;//vai criar uma estrutura // salvar os dados cadastrados da ALUNO FILE* arquivo = fopen("3421277. csv", "w"); //para os caracteres ficarem em português setlocale(LC_ALL, "Portuguese"); //vai começar a rodar o programa e verificar qual foi a opção escolhida pelo usu- ário do { //op vai receber da função do menu escolhido pelo usuário op = menu(); getchar(); //vai verificar qual foi a opção escolhida pelo usuário switch (op) { //Opção de cadastro das ALUNO S case 1: if (contador <= 10) {//vai cadastrar até dar menor que 10 //vai receber os dados da ALUNO printf("Cadastro de ALUNO: %d \n", contador + 1); printf("Informe nome da ALUNO: "); gets(cadastro[contador].nome); //nome fflush(stdin); printf("email: "); gets(cadastro[contador].email); //e-mail fflush(stdin); printf("fone: "); gets(cadastro[contador].fone); //e-mail fflush(stdin); printf("RU: "); scanf_s("%f", &cadastro[contador].ru); //preço contador++; printf("\n============================================ \n"); } else {//se tive mais que 10 cadastro de ALUNOs printf("\nAs ALUNOS estão todas Preenchidas"); } break; //opção para salvar os dados dos cadastros das ALUNOs case 2://vai salvar os arquivos for (i = 0; i < contador; i++) {//vai rodar todos os cadastros para salvas os dados fprintf(arquivo, "%s;", cadastro[i].nome);//vai salvar o nome fprintf(arquivo, "%s;", cadastro[i].email);//vai salvar o email fprintf(arquivo, "%s;", cadastro[i].fone); //vai salvar o fone fprintf(arquivo, "%d;", cadastro[i].ru);//vai salvar o preço fprintf(arquivo, "\n"); //vai salvar o ar quivo } fclose(arquivo);//vai fechar printf("\n\tARQUIVO SALVO COM SUCESSO\n"); break; //opção a onde vai sair do programa case 0://vai sair do programa printf("\nFinalizando o sistema de cadastro de ALUNOS \ n"); break; //caso o usuario tenha escolhido uma opção invalida default://opção invalida printf("\n Opção Invalida \n"); break; } } while (op != 0); //vai rodar até o usuário escolha uma opção diferente de 0 return 0; } Imagem do código funcionando no seu computador: