Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER ESCOLA SUPERIOR POLITÉCNICA BACHARELADO EM ENGENHARIA ELÉTRICA DISCIPLINA DE LINGUAGEM DE PROGRAMAÇÃO ATIVIDADE PRÁTICA LUCIANO DE OLIVEIRA – RU: 512410 PROF. WINSTON SEN LUN FUNG TOLEDO – PR 2021 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. #include <stdio.h> #include <stdlib.h> #include <string.h> struct Registro {//criando struct/registro int ru;//campo do registro que ira armazenar o valor do RU char nome[60];//campo do registro que ira armazenar o valor do nome }; int main(void){ struct Registro R;//declarando o registro "R" printf("Digite seu RU: ");//pedindo ao usuario que informe seu RU scanf("%d", &R.ru);//lendo e alocando no campo RU printf("Informe seu nome: ");//pedindo ao usuario que informe seu nome fflush(stdin);//limpando o excesso de buff da memoria fgets(R.nome, 60, stdin);//coletando e alocando os caracteres informados no campo nome sscanf(R.nome,"%c",&R.nome);//lendo o campo nome do registro "R" size_t tam = strlen(R.nome);//declarando variavel "tam" que ira armazerar o tamanho do nome informado (para que possamos trabalhar com a largura maxima) char *p = (char *) &R.nome;//declarando ponteiro apontando para o campo nome do registro "R" while(tam--){//laco while/do decrementador printf("%c", p[tam]);//imprime o que esta abrangido pelo ponteiro a partir da largura, ou seja, do ultimo caracter para o primeiro } return 0; } 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 imprima na tela. Para demonstrar o funcionamento faça as capturas de tela do terminal utilizando seu RU. #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int i;//index, variavel de controle char v[6];//vetor de 6 posições printf("Informe o seu RU= ");//pede para o usuario informar seu RU for (i = 0; i < 6; i++) {//laco for que aloca cada numero do RU em um espaco da memoria scanf("%c", &v[i]);//le e aloca em um espaco da memoria numero por numero do RU informado } char *p = (char *) &v;//ponteiro apontado para o espaco na memoria onde se encontra o vetor char maior = p[0];//declarando variavel que ira receber o valor do maior numero do vetor/RU char menor = p[0];//declarando variavel que ira receber o valor do menor numero do vetor/RU for (i = 0; i < 6; i++) {//laco for que realiza a verificacao de qual o maior numero if (p[i] > maior) {//condicao que verifica qual o maior numero maior = p[i];//quando a variavel maior recebe o valor do maior numero, ate o momento } if (p[i] < menor) {//condicao que realiza a verificacao de qual o menor numero menor = p[i];//quando a variavel menor recebe o valor do menor numero, ate o momento } } printf("\nO maior numero deste RU e= %c\nO menor numero deste vetor e= %c", maior, menor);//imprimindo na tela o maior e o menor numero system("pause"); return 0; } 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. #include <stdio.h> #include <stdlib.h> #include <math.h> void calc_hexa(float L, float *area, float *perimetro){//funcao que recebe por parametro valor de L e pede para que seja executados a linha de area e perimetro *area=3*pow(L,2)*sqrt(3)/2;//formula do calculo da area de um hexagono *perimetro=6*L;//formula do calculo do perimetro de um hexagono } float main(){//metodo principal float L, perimetro, area;//declarando a variavel L, responsavel por receber o valor do lado do hexagono printf("Informe o valor do lado= ");//pede para o usuario que informe o valor de um lado de um hexagono scanf("%f",&L);//le e aloca na memoria o valor informado pelo usuario if(L<0){//condicao que verifica se e um valor valido printf_s("Informe um valor positivo!\n");//caso nao seja um valor valido, pede para que o usuario informe um valor positivo/valido system("pause");//encerra o programa exit(1); } else{//caso o valor informado seja valido: calc_hexa(L,&area,&perimetro);//chama a funcao calc_hexa e envi como parametro o vlaor de L e recebe o resultado de area e perimetro printf("A area e= %.2f\n",area);//imprime o valor da area do hexagono com lado informado pelo usuario printf("O perimetro e= %.2f\n", perimetro);//imprime o valor do perimetro do hexagono com lado informado pelo usuario } system("pause"); return 0; } 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: 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> int pot(int base, int exp) //parametros que receberao os valores da base e d o expoente, respectivamente { int res= 1; //variavel que recebera o resultado exponenciação int i= exp; //variavel de controle (index) /* Testa expoente, se igual a 0, retorna valor 1, pois, segundo a regra matematica, qualquer numero elevado a 0 e igual a 1 */ if (exp==0){ return 1; } /* Se o expoente não for igual a 0, entao o resulado sera igual a ele mesmo multiplicado pelo valor da base a quantidade de vezes que o expoente indica */ else{ for (i;i>0;){ //enquanto expoente for maior que 0 res = res * base; i-- ; //decremento, para ir diminuindo um numero sempre que completar um ciclo } return res; //retorna o resultado final do } } int main(void) { int num1 = 5, num2 = 0, result; //num1= primeiro numero do RU, num2= ult imo numero do RU, result vai receber o valor retornado da funcao pot /*result chama a funcao pot para receber o valor retornado dela */ result = pot (num1, num2); //passando num1 e num2 como parametro par a a funcao pot printf("O resultado de %d elevado a %d e= %d\n", num1, num2, result) ; //imprime o resultado final da exponenciacao system("pause"); return 0; } Imagem do código funcionando no seu computador: EXERCÍCIO 5 ENUNCIADO: Crie um programa, em linguagem C, que receba 10 registros contendo, Nome, RU, telefone e email. Solicite que sejam digitados todos os dados de todos os registros 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. /* Crie um programa, em linguagem C, que receba 10 registros contendo, Nome, RU , telefone email. Solicite que sejam digitados todos os dados de todos os registros e a o 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 */ #include <stdio.h> #include <stdlib.h> struct registros{//Estrutura que irá armazenar as variáveis do Registro char nome[40];//variável que vai armazenar o primeiro nome double RU;//variável que vai armazenar o RU double fone;//Variável que vai armazenar o número de telefone char email[30];//Variável que vai armazenar o endereço de e-mail }; int main (){ int i;//Variável de controle (contagem, index) struct registros R[10];//Chamando a Estrutura Registro, declarando a est rutura de registro "R" com 10 posições FILE *arquivo;//Declarando o arquivo com o ponteiro "arquivo" arquivo=fopen("512410.csv","w");//Abrindo o arquivo do tipo .csv com meu RU sendo o nome,tipo de abertura: criar um nome ou sobrescrever o já existe nte "w" /* Logo abaixo, estrutura if- else que verifica se o arquivo foi aberto ou não */ if (arquivo == NULL) { printf("ERRO! O arquivo não foi aberto!\n"); }else { printf("O arquivo foi aberto com sucesso!\n"); } /* Laço for usado para pedir ao usuário que informe os dados de cada aluno, no total, serão 10 registros */ for(i=0;i<10;i++){ printf("Informe o primeiro nome= "); scanf("%s",&R[i].nome); printf("\nInforme seu RU= "); scanf("%d",&R[i].RU); printf("\nInforme o numero de telefone= "); scanf("%d",&R[i].fone); printf("\nInforme seu email= "); scanf("%s",&R[i].email); } /* Laço for que escreve todoso os registros no arquivo "512410.csv" separan do-os por ";"(ponto e vírgula) */ for(i=0;i<10;i++){ fprintf(arquivo, "%s; %d; %d; %s",&R[i].nome,&R[i].RU,&R[i].fone,&R[ i].email); } fclose(arquivo);//Fechando o arquivo system("pause"); return 0; } Imagem do código funcionando no seu computador:
Compartilhar