Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

CADERNO DE RESPOSTAS DA 
ATIVIDADE PRÁTICA DE: 
Linguagem de Programação 
 
ALUNO: [Leonardo Bernardes Santana] – 
[4750487] 
 
Prof. Winston Sen Lun Fung, Esp. 
ANO 
2024 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
1 
 
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. 
I. Apresentação do código-fonte: 
#include 
#include 
 
// Estrutura para armazenar informações do aluno 
typedef struct { 
 char nomeCompleto[100]; // Nome completo do aluno 
 int ru; // Registro Único do aluno 
} Aluno; 
 
// Função para ler os dados do aluno 
void lerDadosAluno(Aluno *aluno) { 
 printf("Digite seu RU: "); 
 if (scanf("%d", &aluno->ru) != 1) { 
 printf("Erro: RU inválido.\n"); 
 exit(EXIT_FAILURE); // Encerra o programa em caso de erro 
 } 
 getchar(); 
 
 printf("Digite seu Nome Completo: "); 
 fgets(aluno->nomeCompleto, sizeof(aluno->nomeCompleto), stdin); 
 
 // Remover nova linha se presente 
 for (int i = 0; aluno->nomeCompleto[i] != '\0'; i++) { 
 if (aluno->nomeCompleto[i] == '\n') { 
 aluno->nomeCompleto[i] = '\0'; // Substitui nova linha por terminador de string 
 break; 
 } 
 } 
} 
 
// Função para verificar se o RU é par ou ímpar 
void verificarParOuImpar(int ru) { 
 if (ru % 2 == 0) { 
 printf("O RU %d é par.\n", ru); 
 } else { 
 printf("O RU %d é ímpar.\n", ru); 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
2 
 
 } 
} 
 
// Função para imprimir o nome completo invertido 
void imprimirNomeInvertido(const char *nome) { 
 int len = 0; 
 // Calcular o comprimento da string 
 while (nome[len] != '\0') { 
 len++; 
 } 
 printf("Nome Completo invertido: "); 
 for (int i = len - 1; i >= 0; i--) { 
 putchar(nome[i]); 
 } 
 printf("\n"); 
} 
 
// Função principal 
int main() { 
 Aluno *aluno = (Aluno *)malloc(sizeof(Aluno)); 
 if (aluno == NULL) { 
 printf("Erro: Falha ao alocar memória.\n"); 
 return EXIT_FAILURE; // Encerra se a alocação falhar 
 } 
 
 // Ler dados do aluno 
 lerDadosAluno(aluno); 
 
 // Verificar se o RU é par ou ímpar 
 verificarParOuImpar(aluno->ru); 
 
 // Imprimir o nome completo invertido 
 imprimirNomeInvertido(aluno->nomeCompleto); 
 
 // Liberar a memória alocada 
 free(aluno); 
 
 return 0; //Finalizado o código 
} 
 
 
II. Apresentar a captura de tela evidenciando o funcionamento: 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
3 
 
 
 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
4 
 
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. 
III. Apresentação do código-fonte: 
 
#include 
#include 
 
// Função para contar o número de dígitos em um número 
int contarDigitos(int numero) { 
 int contador = 0; 
 while (numero > 0) { 
 numero /= 10; 
 contador++; 
 } 
 return contador; 
} 
 
// Função para armazenar os dígitos em um vetor 
void armazenarDigitos(int numero, int *vetor, int numDigitos) { 
 for (int i = numDigitos - 1; i >= 0; i--) { 
 vetor[i] = numero % 10; // Armazena o dígito menos significativo 
 numero /= 10; 
 } 
} 
 
// Função para encontrar o maior e o menor dígito em um vetor 
void encontrarMaiorEMenor(int *vetor, int numDigitos, int *maior, int *menor) { 
 *maior = vetor[0]; // Inicializa maior com o primeiro dígito 
 *menor = vetor[0]; // Inicializa menor com o primeiro dígito 
 
 for (int i = 1; i *maior) { 
 *maior = vetor[i]; 
 } 
 if (vetor[i] 
#include 
 
// Prototipo da função 
void calcularHexagono(float lado, float *area, float *perimetro); 
 
// Função principal 
int main() { 
 float lado, area, perimetro; 
 
 while (1) { 
 // Solicitar ao usuário o lado do hexágono 
 printf("Digite o lado do hexágono (valor negativo para sair): "); 
 if (scanf("%f", &lado) != 1) { 
 printf("Erro: Entrada inválida. Tente novamente.\n"); 
 while (getchar() != '\n'); // Limpa o buffer 
 continue; // Retorna ao início do loop 
 } 
 
 // Verificar se o lado é negativo 
 if (ladodo hexágono: %.2f\n", area); 
 printf("Perímetro do hexágono: %.2f\n", perimetro); 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
8 
 
 } 
 
 return 0; //Finalizado o código 
} 
 
// Função para calcular a área e o perímetro de um hexágono regular 
void calcularHexagono(float lado, float *area, float *perimetro) { 
 *perimetro = 6 * lado; // Perímetro do hexágono 
 *area = (3 * lado * lado * sqrt(3)) / 2; // Área do hexágono 
} 
 
VI. Apresentar a captura de tela evidenciando o funcionamento: 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
9 
 
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 multiplicações sucessivas. 
 
Para demonstrar o funcionamento utilize o primeiro digito do seu RU como base e 
o último digito como expoente. 
VII. Apresentação do código-fonte: 
#include 
 
// Função recursiva para calcular a potência 
float calcularPotencia(int base, int expoente) { 
 // Caso base: qualquer número elevado a 0 é 1 
 if (expoente == 0) { 
 return 1; 
 } 
 // Caso recursivo: base^expoente = base * base^(expoente - 1) 
 return base * calcularPotencia(base, expoente - 1); 
} 
 
// Função principal 
int main() { 
 int base, expoente; 
 
 // Solicitar ao usuário a base e o expoente 
 printf("Digite a base: "); 
 if (scanf("%d", &base) != 1) { 
 printf("Erro: Entrada inválida para a base.\n"); 
 return 1; // Encerra o programa em caso de erro 
 } 
 
 printf("Digite o expoente: "); 
 if (scanf("%d", &expoente) != 1) { 
 printf("Erro: Entrada inválida para o expoente.\n"); 
 return 1; // Encerra o programa em caso de erro 
 } 
 
 // Calcular a potência usando a função recursiva 
 float resultado = calcularPotencia(base, expoente); 
 
 // Imprimir o resultado 
 printf("%d elevado a %d é igual a %.2f\n", base, expoente, resultado); 
 
 return 0; //Finalizado o código 
} 
 
VIII. Apresentar a captura de tela evidenciando o funcionamento: 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
10 
 
 
 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
11 
 
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 [N°_DO_RU.CSV]. 
 
ATENÇÃO: ASSISTA OS VIDEOS DA AULA 8 – MATERIAL COMPLEMENTAR. 
IX. Apresentação do código-fonte: 
#include 
#include 
#include 
 
#define MAX_REGISTROS 10 
#define MAX_NOME 100 
#define MAX_TELEFONE 15 
#define MAX_EMAIL 100 
 
// Estrutura para armazenar informações do registro 
typedef struct { 
 char nome[MAX_NOME]; 
 int ru; 
 char telefone[MAX_TELEFONE]; 
 char email[MAX_EMAIL]; 
} Registro; 
 
// Função para coletar dados do registro 
void coletarDados(Registro *registro) { 
 printf("Digite o Nome: "); 
 fgets(registro->nome, sizeof(registro->nome), stdin); 
 registro->nome[strcspn(registro->nome, "\n")] = 0; // Remove a nova linha 
 
 printf("Digite o RU: "); 
 while (scanf("%d", &registro->ru) != 1) { 
 printf("Erro: RU inválido. Digite novamente: "); 
 while(getchar() != '\n'); // Limpar buffer 
 } 
 getchar(); // Para consumir o caractere de nova linha 
 
 printf("Digite o Telefone: "); 
 fgets(registro->telefone, sizeof(registro->telefone), stdin); 
 registro->telefone[strcspn(registro->telefone, "\n")] = 0; // Remove a nova linha 
 
 printf("Digite o Email: "); 
 fgets(registro->email, sizeof(registro->email), stdin); 
 registro->email[strcspn(registro->email, "\n")] = 0; // Remove a nova linha 
 
 printf("\n"); 
} 
 
// Função para salvar os registros em um arquivo CSV 
void salvarRegistros(Registro *registros, int numRegistros) { 
 // Nome do arquivo CSV baseado no RU do primeiro registro 
 char nomeArquivo[20]; 
 sprintf(nomeArquivo, "%d.csv", registros[0].ru); 
 
 // Abrir arquivo para escrita 
 FILE *arquivo = fopen(nomeArquivo, "w"); 
Caderno de Resolução da 
Atividade Prática de 
Linguagem de Programação 
 
 
12 
 
 if (arquivo == NULL) { 
 perror("Erro ao abrir o arquivo"); 
 exit(EXIT_FAILURE); // Encerra se não conseguir abrir o arquivo 
 } 
 
 // Escrever cabeçalho 
 fprintf(arquivo, "Nome;RU;Telefone;Email\n"); 
 
 // Escrever os registros 
 for (int i = 0; i

Mais conteúdos dessa disciplina