Baixe o app para aproveitar ainda mais
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:
Compartilhar