Você está na página 1de 9

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER

ESCOLA SUPERIOR POLITÉCNICA


BACHARELADO EM ENGENHARIA ELÉTRICA
DISCIPLINA DE LINGUAGEM DE PROGRAMAÇÃO

ATIVIDADE PRÁTICA

FLAVIO FARIAS PEREIRA – RU: 3350938


PROF. VINIVIUS POZZOBON BORIN, ME.
PROF. WINSTON SEN LUN FUNG, ESP.

MACAÉ – RIO DE JANEIRO


2021
PRÁTICA 01
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.

CÓDIGO:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct dados // Cria a Struct dados


{
char Nome[40]; //Cria o atributo Nome na struct dados
int RU; //Cria o atributo RU na struct dados
};

int main()
{
struct dados Aluno, *ponteiro; // cria a struct Aluno com dados e o ponteiro
int tamanho, contador;

printf("\n\nDigite o seu nome: "); // solicita na tela o nome


fgets(Aluno.Nome, 39, stdin); // le o nome e coloca em aluno

printf("\n\nDigite o seu RU: "); // solicita o RU


scanf_s("%d", &Aluno.RU); // le o RU e coloca em RU

ponteiro = &Aluno; // Ponteiro recebendo o endereço de memoria de Aluno

if (ponteiro->RU%2) // Se RU for impar


{
printf("\n\nRU impar\n\n"); // imprime RU impar
}
else // se não
{
printf("\n\nRU par\n\n"); // imprime RU par
}

tamanho = strlen(ponteiro->Nome); // determina o mumero de caracteres em Nome

for (contador = tamanho; contador >= 0; contador--) // atribui a contador a posicao do ultimo
caractere em nome ou seja o tamanho e decrementa ele até 0 ou seja o primeiro caractere de nome
{
printf("%c", ponteiro->Nome[contador]); // imprime um caractere de Nome por vez
}
printf("\n\n");
system("pause");

return 0;
}

1
FUNCIONAMENTO:

PRÁTICA 02
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.

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i, RU[7], maior, menor;

for (i = 0; i < 7; i++) // atribui a contador a posicao 0 ou seja o primeiro numero do RU e in-
crementa ele até 6 ou seja o setimo e ultimo numero do RU
{
printf("Digite o %d digito do sue RU: ", i + 1); // imprime um numero por vez do RU
scanf_s("%d", &RU[i]);
}

maior = RU[0]; //encontra o maior valor


for (i = 1; i < 7; i++) {
if (RU[i] > maior) {
maior = RU[i];
}
}

menor = RU[0]; //encontra o menor valor


for (i = 1; i < 7; i++) {
if (RU[i] < menor) {
menor = RU[i];
}
}

printf("\nMaior valor: %i", maior); // imprime o maior valor


printf("\nMenor valor: %i", menor); // imprime o menor valor
printf("\n\n");

system("pause");

return 0;
}
Funcionamento:

PRÁTICA 03
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.

CÓDIGO:
#include <stdio.h>
#include <stdlib.h>

void calc_hexa(float l, float *area, float *perimetro);

int main()
{
float area_hexa, perimetro_hexa, lado;

printf("Digite o valor do lado do hexagono: "); // solicita ao usuario o valor do lado do hexa-
gono
scanf_s("%f", &lado); // faz a leitura e coloca em lado

if (lado < 0) // se o valor de lado for inferior a 0, exibe mensagem de erro e encerra o pro-
grama
{
printf("\n\nValor invalido!!!\n\n");
exit(0);
}

calc_hexa(lado, &area_hexa, &perimetro_hexa);

printf("\n\nPerimetro do hexagono: %f", perimetro_hexa); // apresenta valor do perimetro calcu-


lado
printf("\n\nArea do exagono: %f\n\n", area_hexa); // apresenta o valor da area do exagono cal-
culado

system("pause");
return 0;

void calc_hexa(float l, float *area, float *perimetro)


{
*perimetro = 6 * l;
*area = (3 * l * l * 1.732) / 2;
}
FUNCIONAMENTO:

PRÁTICA 04
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 mul-
tiplicações sucessivas.

Para demonstrar o funcionamento utilize o primeiro digito do seu RU como base e o último digito como expoente.

Código:

#include <stdio.h>
#include <stdlib.h>

int potencia(int base, int expoente) //prototipo da funcao


{
if (expoente == 0)
return 1;
else
return (base * potencia(base, expoente - 1)); // recua o expoente ate 0 (b^e = b*b^e-1
ate e=0)
}

int main()
{
int base, expoente, resultado;

printf("\n\ndigite a base do numero: "); // solicita do usuario a base


scanf_s("%d", &base); // le a base

printf("\n\ndigite o expoente do numero: "); // solicita do usuario o expoente


scanf_s("%d", &expoente); // le o expoente

resultado = potencia(base, expoente);

printf("\n\nO resultado de %d^%d = %d\n\n", base, expoente, resultado); // imprime o resultado

system("pause");

return 0;
}

Funcionamento:
PRÁTICA 05
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 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.
Código:
#include <stdio.h>
#include <stdlib.h>

FILE* stream; // fluxo do tipo file para criação de arquivos

void limpa_buffer () // limpa buffer apos scanf


{
int ch;
while ((ch = fgetc(stdin)) != EOF && ch != '\n') {}
}

struct dados // cria a struct


{
char Nome[45];
int RU;
int Tel;
char email[30];
};

int main()
{
struct dados Aluno[10];
int cont;
errno_t err; // para tratar erro de abertura de arquivo

for (cont = 0; cont < 10; cont++) // solicita os dados ao usuario e salva na struct
{
printf("\n\nDigite o nome do registro %d: ", cont + 1);
gets_s(Aluno[cont].Nome, 44);

printf("\nDigite o RU do registro %d: ", cont + 1);


scanf_s("%d", &Aluno[cont].RU);
limpa_buffer();

printf("\nDigite o Telefone do registro %d: ", cont + 1);


scanf_s("%d", &Aluno[cont].Tel);
limpa_buffer();

printf("\nDigite o email do registro %d: ", cont + 1);


gets_s(Aluno[cont].email, 29);
}
err = fopen_s(&stream, "3350938.CSV", "w"); // gera msg em caso de erro ou sucesso ao gerar o
arquivo
if (err == 0)
{
printf("\n\n*******Arquivo criado com sucesso*******\n");
}
else
{
printf("\n\n*******Falha ao criar o arquivo*******\n");
exit(1);
}
fprintf(stream, "nome;ru;telefone;email\n");

for (cont = 0; cont < 10; cont++) // grava as informações no arquivo


{
fprintf(stream, "%s;%d;%d;%s\n", Aluno[cont].Nome, Aluno[cont].RU, Aluno[cont].Tel,
Aluno[cont].email);
}

_fcloseall(); // fecha e salva o arquivo

printf("\n\n*******Arquivo salvo com sucesso*******\n");

return 0;
}
Funcionamento:

Arquivo:

Arquivo aberto no Bloco de Notas:


Arquivo aberto no Excel:

Você também pode gostar