Buscar

Caderno de Resolucao de Atividade Pratica LP 2023 - C1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CADERNO DE RESPOSTAS DA 
ATIVIDADE PRÁTICA DE: 
Linguagem de Programação 
 
ALUNO: MARCUS VINICIUS NOGUEIRA 
FERREIRA - RU: 2401658 
 
Prof. Winston Sen Lun Fung, Esp. 
ANO 
2023 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
1 
 
PRÁTICA 01 
 
Implemente um programa em C que faça o seguinte: 
• Crie uma estrutura chamada "Estudante" que armazene um nome completo (até 
100 caracteres) e o RU (7 dígitos). 
• Peça ao usuário para inserir o seu nome completo e RU. 
• Crie um ponteiro que aponte para essa estrutura. 
• Usando o ponteiro, verifique se o RU é par ou ímpar, imprimindo o resultado. 
• Use o ponteiro para imprimir o nome do estudante ao contrário. Por exemplo, se 
o nome for "João da Silva", o programa deve imprimir "avliS ad oãoJ". 
Para demonstrar o funcionamento informe o seu nome e o seu RU, faça as capturas 
de tela do terminal de execução 
I. Apresentação do código-fonte (colorido): 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
 
// Definindo a estrutura Estudante 
struct Estudante { 
 char nome[100]; 
 char RU[8]; // 7 dígitos mais 1 para o caractere nulo '\0' 
}; 
 
int main() { 
 // Declarando uma variável do tipo Estudante 
 struct Estudante estudante; 
 
 // Declarando um ponteiro para a estrutura Estudante 
 struct Estudante* ptr_estudante = &estudante; 
 
 // Solicitando ao usuário que insira o nome completo 
 printf("Digite o nome completo (até 100 caracteres): "); 
 fgets(estudante.nome, sizeof(estudante.nome), stdin); 
 estudante.nome[strcspn(estudante.nome, "\n")] = '\0'; // Remover a quebra de 
linha no final 
 
 // Solicitando ao usuário que insira o RU 
 printf("Digite o RU (7 dígitos): "); 
 fgets(estudante.RU, sizeof(estudante.RU), stdin); 
 estudante.RU[strcspn(estudante.RU, "\n")] = '\0'; // Remover a quebra de linha no 
final 
 
 // Verificando se o RU é par ou ímpar 
 int RU_numero = atoi(estudante.RU); // Converte a string do RU para um número 
inteiro 
 if (RU_numero % 2 == 0) { 
 printf("O RU %s é par.\n", estudante.RU); 
 } 
 else { 
 printf("O RU %s é ímpar.\n", estudante.RU); 
 } 
 
 // Imprimindo o nome do estudante ao contrário 
 printf("Nome do estudante ao contrário: "); 
 for (int i = strlen(estudante.nome) - 1; i >= 0; i--) { 
 printf("%c", estudante.nome[i]); 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
2 
 
 } 
 printf("\n"); 
 
 return 0; 
} 
 
 
 
 
II. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
3 
 
PRÁTICA 02 
 
Escreva um programa em C que siga os seguintes passos: 
• Solicite ao usuário que insira o seu RU. 
• Crie um vetor cujo tamanho seja igual ao número de dígitos no RU. Por exemplo, 
se o RU for "1234567", então o vetor terá 7 posições. 
• Peça ao usuário para inserir cada dígito do seu RU, armazenando cada dígito em 
uma posição do vetor. Por exemplo, se o RU for "1234567", o vetor deverá ter os 
elementos [1, 2, 3, 4, 5, 6, 7]. 
• Usando ponteiros, calcule o produto de todos os números no vetor. 
Para demonstrar o funcionamento informe o seu RU e faça as capturas de tela do 
terminal de execução. 
III. Apresentação do código-fonte (colorido): 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
 
int main() { 
 char RU[8]; // Para armazenar o RU do usuário 
 int tamanhoRU; // Para armazenar o tamanho do RU (número de dígitos) 
 int produto = 1; // Para armazenar o produto dos dígitos 
 
 // Solicite ao usuário que insira o seu RU 
 printf("Digite o seu RU (7 dígitos): "); 
 fgets(RU, sizeof(RU), stdin); 
 RU[strcspn(RU, "\n")] = '\0'; // Remover a quebra de linha no final 
 
 // Calcule o tamanho do RU 
 tamanhoRU = strlen(RU); 
 
 // Crie um vetor dinamicamente com o tamanho igual ao número de dígitos no RU 
 int* vetor = (int*)malloc(tamanhoRU * sizeof(int)); 
 
 if (vetor == NULL) { 
 printf("Erro ao alocar memória para o vetor.\n"); 
 return 1; 
 } 
 
 // Peça ao usuário para inserir cada dígito do seu RU e armazene no vetor 
 for (int i = 0; i < tamanhoRU; i++) { 
 vetor[i] = RU[i] - '0'; // Converte o caractere para um número inteiro 
 } 
 
 // Calcule o produto dos números no vetor usando ponteiros 
 int* ptr = vetor; 
 for (int i = 0; i < tamanhoRU; i++) { 
 produto *= *ptr; // Multiplica o valor atual pelo produto acumulado 
 ptr++; // Avança para o próximo elemento do vetor 
 } 
 
 // Imprima o produto calculado 
 printf("O produto dos dígitos do RU é: %d\n", produto); 
 
 // Libere a memória alocada para o vetor 
 free(vetor); 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
4 
 
 return 0; 
} 
 
IV. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
5 
 
PRÁTICA 03 
 
Escreva um programa em C que siga os seguintes passos: 
• Solicite ao usuário que insira o comprimento do lado (L) de um pentágono 
regular. 
• Implemente uma função chamada calc_penta que recebe o comprimento do lado 
do pentágono e dois ponteiros para float. Esta função deve calcular a área e o 
perímetro do pentágono e armazenar os resultados nos endereços apontados 
pelos ponteiros. A função deve seguir o protótipo abaixo: 
void calc_penta(float l, float *area, float *perimetro); 
• No programa principal, depois de receber o valor do lado do usuário, chame a 
função calc_penta, passando o valor do lado e os endereços de duas variáveis 
de float (para armazenar a área e o perímetro calculados). 
• Imprima a área e o perímetro calculados na tela. 
• O programa deve continuar pedindo ao usuário um novo valor de lado e 
calculando a área e o perímetro até que o usuário insira um valor negativo para 
o lado. 
Para demonstrar o funcionamento utilize para o valor do lado o primeiro dígito do 
seu RU. 
Nota: A área (A) e o perímetro (P) de um pentágono regular podem ser calculados 
com as seguintes fórmulas: 
 
V. Apresentação do código-fonte (colorido): 
 
#include <stdio.h> 
#include <math.h> 
#define PI 3.14 //Defenimos a constante PI como 3.14 
 
// Protótipo da função calc_penta 
void calc_penta(float l, float* area, float* perimetro); 
 
int main() { 
 float lado, area, perimetro; 
 
 while (1) { 
 // Solicite ao usuário que insira o comprimento do lado do pentágono 
 printf("Digite o comprimento do lado do pentágono (ou um valor negativo para 
sair): "); 
 scanf_s("%f", &lado); 
 
 // Verifique se o usuário deseja sair 
 if (lado < 0) { 
 printf("Programa encerrado.\n"); 
 break; 
 } 
 
 // Chame a função calc_penta para calcular a área e o perímetro 
 calc_penta(lado, &area, &perimetro); 
 
 // Imprima os resultados 
 printf("Área do pentágono: %.2f\n", area); 
 printf("Perímetro do pentágono: %.2f\n", perimetro); 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
6 
 
 } 
 
 return 0; 
} 
 
// Implementação da função calc_penta 
void calc_penta(float l, float* area, float* perimetro) { 
 *area = (5.0 * l * l) / (4.0 * tan(PI / 5.0)); // Fórmula da área do pentágono 
regular 
 *perimetro = 5.0 * l; // Perímetro de um pentágono regular 
} 
 
VI. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
7 
 
PRÁTICA 04 
 
Desenvolva, em linguagem C, um programa que calcule o valor RMS (Root Mean 
Square) de um sinal elétrico. O valor RMS é uma medida estatística da magnitude 
de um sinal variável. Ele pode ser especialmente útil ao lidar com quantidades 
variáveis no tempo, como a corrente ou a tensãoem um circuito elétrico. 
Seu programa deverá: 
• Solicitar ao usuário para inserir o número de leituras do sinal que deseja analisar. 
• Receber do usuário essa sequência de leituras, uma por uma. 
• Utilizar uma função recursiva para calcular a soma dos quadrados dessas 
leituras. 
• Finalmente, calcular e imprimir o valor RMS do sinal. Lembre-se, o valor RMS é 
a raiz quadradada média dos quadrados das leituras. 
• Para a função recursiva, você pode usar o protótipo: 
double somaQuadrados(double leituras[ ], int tamanho, int indice) 
Para demonstrar o funcionamento informe a quantidade de medidas igual a 
quantidade de dígitos do seu RU e para cada uma das medidas informe cada dígito 
do seu RU. 
VII. Apresentação do código-fonte (colorido): 
 
#include <iostream> 
#include <cmath> 
 
// Protótipo da função recursiva 
double somaQuadrados(double leituras[], int tamanho, int indice); 
 
int main() { 
 int n; 
 
 // Solicitar ao usuário para inserir o número de leituras do sinal 
 std::cout << "Digite o número de leituras do sinal: "; 
 std::cin >> n; 
 
 if (n <= 0) { 
 std::cout << "Número inválido de leituras. O programa será encerrado." << 
std::endl; 
 return 1; 
 } 
 
 double* leituras = new double[n]; 
 
 // Receber do usuário as leituras do sinal 
 for (int i = 0; i < n; i++) { 
 std::cout << "Digite a leitura " << i + 1 << ": "; 
 std::cin >> leituras[i]; 
 } 
 
 // Chamar a função recursiva para calcular a soma dos quadrados das leituras 
 double soma_quadrados = somaQuadrados(leituras, n, 0); 
 
 // Calcular o valor RMS 
 double rms = std::sqrt(soma_quadrados / n); 
 
 // Imprimir o valor RMS 
 std::cout << "O valor RMS do sinal é: " << rms << std::endl; 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
8 
 
 
 // Liberar a memória alocada 
 delete[] leituras; 
 
 return 0; 
} 
 
// Implementação da função recursiva para calcular a soma dos quadrados 
double somaQuadrados(double leituras[], int tamanho, int indice) { 
 if (indice == tamanho) { 
 return 0.0; // Caso base: não há mais leituras para somar 
 } 
 
 double quadrado = leituras[indice] * leituras[indice]; 
 
 // Chamada recursiva para a próxima leitura 
 return quadrado + somaQuadrados(leituras, tamanho, indice + 1); 
} 
 
 
 
 
VIII. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
9 
 
PRÁTICA 05 
 
Seu objetivo é criar um programa em linguagem C para manipular e armazenar 
informações pessoais. 
Você deve começar solicitando ao usuário que insira dados para seis diferentes 
registros. Cada registro deve incluir as seguintes informações: Nome, CPF, 
Telefone (DDD+n° do telefone) e E-mail. 
Uma vez coletados, você deve armazenar esses dados em um arquivo no formato 
CSV. Para manter os dados organizados, use o caractere ponto e vírgula (;) como 
delimitador de campo. 
O nome do arquivo a ser gerado deve ser o seu número de Registro Único (RU). 
Assim, se o seu RU for 123456, o nome do arquivo deve ser "123456.csv". 
IX. Apresentação do código-fonte (colorido): 
 
#include <stdio.h> 
#include <string.h> 
 
int main() { 
 FILE* arquivo; 
 char nome[100], cpf[12], telefone[15], email[100]; 
 int num_registros = 6; 
 
 // Abra o arquivo em modo de escrita 
 if (fopen_s(&arquivo, "informacoes_pessoais.csv", "w") != 0) { 
 printf("Erro ao abrir o arquivo.\n"); 
 return 1; 
 } 
 
 printf("Informe os dados para %d registros:\n", num_registros); 
 
 for (int i = 0; i < num_registros; i++) { 
 printf("Registro %d:\n", i + 1); 
 
 // Solicitar informações ao usuário 
 printf("Nome: "); 
 fgets(nome, sizeof(nome), stdin); 
 nome[strcspn(nome, "\n")] = '\0'; // Remover a quebra de linha 
 printf("CPF: "); 
 fgets(cpf, sizeof(cpf), stdin); 
 cpf[strcspn(cpf, "\n")] = '\0'; // Remover a quebra de linha 
 printf("Telefone (DDD+número): "); 
 fgets(telefone, sizeof(telefone), stdin); 
 telefone[strcspn(telefone, "\n")] = '\0'; // Remover a quebra de linha 
 printf("E-mail: "); 
 fgets(email, sizeof(email), stdin); 
 email[strcspn(email, "\n")] = '\0'; // Remover a quebra de linha 
 
 // Escrever os dados no arquivo CSV 
 fprintf(arquivo, "%s;%s;%s;%s\n", nome, cpf, telefone, email); 
 } 
 
 // Fechar o arquivo 
 fclose(arquivo); 
 
 printf("Dados gravados com sucesso no arquivo informacoes_pessoais.csv.\n"); 
 
 return 0; 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
10 
 
} 
 
X. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
XI. Apresentar a captura de tela do arquivo CSV:

Continue navegando