Prévia do material em texto
CADERNO DE RESPOSTAS DA
ATIVIDADE PRÁTICA DE:
Linguagem de Programação
ALUNO: LUCIANO CAMATTI RU:4233945
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
Escreva um programa em C que solicite ao aluno que digite seu nome completo
e os sete dígitos do seu RU. O programa deve verificar se o último dígito do RU
é igual ao último dígito do ano atual. Se forem iguais, exiba a mensagem "Aluno
[NOME DO ALUNO], seu RU está autenticado". Caso contrário, exiba a
mensagem "Aluno [NOME DO ALUNO], seu RU não está autenticado".
Para demonstrar o funcionamento faça as capturas de tela do terminal de
execução.
I. Apresentação do código-fonte (colorido):
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <string.h>
int main() {
char nome[100];
int ru;
int ultimoDigitoRU;
int ultimoDigitoAno;
printf("DIGITE SEU NOME COMPLETO: "); // solicita nome completo.
fgets(nome, sizeof(nome), stdin);
nome[strcspn(nome, "\n")] = '\0'; // Remove o caractere '\n' do final do
nome
printf("DIGITE SEU RU(sete digitos): ");// Solicita ru.
scanf("%d", &ru);
ultimoDigitoRU = ru % 10;// Obtém o último dígito do ru.
time_t now = time(NULL); // extrai ultimo dígito do ano.
struct tm * localTime = localtime(&now);
ultimoDigitoAno = localTime->tm_year % 10;
if (ultimoDigitoRU == ultimoDigitoAno) { // compara últimos dígitos do ru e
do ano atual.
printf("ALUNO %s, SEU RU ESTA AUTENTICADO.\n", nome);
}
else {
printf("ALUNO %s, SEU RU NAO ESTA AUTENTICADO.\n", nome);
}
return 0;
}
II. Apresentar a captura de tela evidenciando o funcionamento:
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
2
PRÁTICA 02
Escreva um programa em C que declare uma estrutura chamada "Aluno" contendo
os seguintes campos: nome (string) e nota (float). Solicite ao aluno que digite seu
nome completo e a nota de uma prova. Em seguida, utilize o primeiro dígito do RU
do aluno para calcular sua média final, adicionando-o à nota da prova. Exiba na tela
a mensagem "Aluno [NOME DO ALUNO], sua média final é [MÉDIA FINAL]".
Para demonstrar o funcionamento faça as capturas de tela do terminal de execução.
III. Apresentação do código-fonte (colorido):
#define _crt_secure_no_warnings
#include <stdio.h>
#include <string.h>
struct Aluno {
char nome[100];
float nota;
};
int main() {
struct Aluno aluno;
int primeiroDigitoRU=4;
float mediaFinal;
printf("DIGITE SEU NOME COMPLETO: ");
fgets(aluno.nome, sizeof(aluno.nome), stdin);
aluno.nome[strcspn(aluno.nome, "\n")] = '\0';
printf("DIGITE A NOTA DA PROVA: ");
scanf_s("%f", &aluno.nota);
mediaFinal = aluno.nota + primeiroDigitoRU;
printf("%s,SUA MEDIA FINAL E %.2f\n", aluno.nome, mediaFinal);
return 0;
}
IV. Apresentar a captura de tela evidenciando o funcionamento:
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
3
PRÁTICA 03
Escreva um programa em C que leia um número inteiro positivo do usuário e exiba
a sequência de Fibonacci até esse número. A sequência de Fibonacci é uma
sequência em que cada número é a soma dos dois anteriores:
0, 1, 1, 2, 3, 5, 8, 13, ...
Demonstre a execução utilizando para o valor alvo da sequência o número formado
pela somatória do primeiro dígito com o penúltimo digito do seu RU. Para
demonstrar o funcionamento faça as capturas de tela do terminal de execução
V. Apresentação do código-fonte (colorido):
#include <stdio.h>
int main() {
int num, pri = 0, seg = 1, prox = 0;
printf("DIGITE A SOMATORIA DO PRIMEIRO COM PENULTIMO DIGITO DO SEU RU: ");
scanf_s("%d", &num);
printf("SEQUENCIA DE FIBONACCI ATE %d:\n", num);
printf("%d, %d, ", primeiro, segundo); // exibe números da sequência
proximo = primeiro + segundo;
while (prox <= num) {
printf("%d, ", prox);// exibi a sequência até que o próximo número seja maior
que o número informado
pri = seg;
seg = prox;
prox = pri + seg;
}
printf("\n");
return 0;
}
VI. Apresentar a captura de tela evidenciando o funcionamento:
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
4
PRÁTICA 04
Escreva um programa em linguagem C que solicite ao aluno que digite o número de
notas que deseja calcular a média. Em seguida, peça que o aluno digite as notas
separadas por espaços. O programa deve armazenar as notas em um vetor e utilizar
uma função chamada calcularMedia() para calcular a média das notas.
O protótipo da função calcularMedia() é o seguinte:
float calcularMedia(float notas[], int tamanho);
A função calcularMedia() deve receber como parâmetros um vetor de notas (notas[])
e o tamanho do vetor (tamanho). Ela deve calcular a média das notas e retornar o
resultado como um valor de ponto flutuante (float).
No programa principal, após obter as notas e armazená-las no vetor, chame a função
calcularMedia() passando o vetor de notas e o tamanho como argumentos.
Armazene o resultado retornado pela função em uma variável e, em seguida, exiba
o valor da média na tela.
Para demonstrar o funcionamento utilize o vetor com os números do seu RU.
Capture a tela do terminal de execução
VII. Apresentação do código-fonte (colorido):
#define use_crt_secure_no_warnings
#include <stdio.h>
#include <stdlib.h>
float calcularMedia(float notas[], int tamanho);
int main() {
int quantidadeNotas;
printf("DIGITE A QUANTIDADE DE NOTAS QUE DESEJA CALCULAR A MEDIA: ");
scanf_s("%d", &quantidadeNotas);
float* notas = (float*)malloc(quantidadeNotas * sizeof(float));
printf("DIGITE AS NOTAS SEPARADAS POR ESPACO: ");
for (int i = 0; i < quantidadeNotas; i++) {
scanf_s("%f", ¬as[i]);
}
float media = calcularMedia(notas, quantidadeNotas);
printf("A MEDIA DAS NOTAS E: %.2f\n", media);
free(notas); // Liberar a memória alocada
return 0;
}
float calcularMedia(float notas[], int tamanho) {
float soma = 0;
for (int i = 0; i < tamanho; i++) {
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
5
soma += notas[i];
}
float media = soma / tamanho;
return media;
}
VIII. Apresentar a captura de tela evidenciando o funcionamento:
PRÁTICA 05
Escreva um programa em C que implemente o jogo da forca. O programa deve ler
uma palavra aleatória de um arquivo chamado "palavras.txt" e permitir que o
jogador tente adivinhar a palavra, fornecendo letras como palpites. O programa
deve exibir o estado atual da palavra, com as letras corretas adivinhadas e os
espaços para as letras não descobertas. O jogador tem um número limitado cinco
erros antes de ser enforcado.
Para demonstrar o funcionamento mostre o conteúdo do arquivo “palavras.txt” e o
terminal de execução do programa.
IX. Apresentação do código-fonte (colorido):
#define use_CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_PALAVRA 100
#define MAX_ERROS 5
void limparTela() {
system("cls");
}
void exibirForca(int erros) {
printf(" _____\n");
printf("| |\n");
if (erros >= 1) {
printf("| O\n");
}
else {
printf("|\n");
}
if (erros >= 2) {
printf("| /");
}
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
6
else {
printf("|");
}
if (erros >= 3) {
printf("|\\");
}
printf("\n");
if (erros >= 4) {
printf("| |\n");
}
else {
printf("|\n");}
if (erros >= 5) {
printf("| / ");
}
else {
printf("|");
}
if (erros >= 6) {
printf("\\\n");
}
else {
printf("\n");
}
printf("|\n");
printf("|\n");
}
int main() {
FILE* arquivoPalavras;
char palavra[MAX_PALAVRA];
if (fopen_s(&arquivoPalavras, "palavras.txt", "r") != 0) { // ABRI o arquivo
"palavras.txt"
printf("ERRO ARQUIVO palavras.txt NAO ENCONTRADO.\n");
return 1;
}
int numPalavras = 0;
char linha[MAX_PALAVRA];
while (fgets(linha, MAX_PALAVRA, arquivoPalavras) != NULL) { // Conta o número de
palavras
numPalavras++;
}
srand(time(NULL));
int indicePalavra = rand() % numPalavras; // escolhe a palavra
rewind(arquivoPalavras);
for (int i = 0; i <= indicePalavra; i++) {
fgets(palavra, MAX_PALAVRA, arquivoPalavras); // le a palavra
}
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
7
palavra[strcspn(palavra, "\n")] = '\0';
fclose(arquivoPalavras); // fecha o arquivo
char palavraAdivinhada[MAX_PALAVRA];
memset(palavraAdivinhada, '_', strlen(palavra)); // inicializa a palavra
adivinhada
palavraAdivinhada[strlen(palavra)] = '\0';
int numErros = 0;
char letrasUsadas[MAX_PALAVRA];
memset(letrasUsadas, 0, sizeof(letrasUsadas));
limparTela();
printf("SEJA BEM VINDO AO JOGO DA FORCA!\n"); // começo do jogo
printf("ADIVINHE A PALAVRA PARA NAO MORRER ENFORCADO!:\n\n");
while (numErros < MAX_ERROS) {
exibirForca(numErros);
printf("Palavra: %s\n", palavraAdivinhada);
char letra;
printf("DIGITE UMA LETRA: ");
scanf_s(" %c", &letra, sizeof(letra));
int letraRepetida = 0;
for (int i = 0; i < strlen(letrasUsadas); i++) {
if (letrasUsadas[i] == letra) {
letraRepetida = 1;
break;
}
}
if (letraRepetida) {
printf("VOCE JA DIGITOU ESSA LETRA. POR FAVOR TENTE OUTRA.\n");
continue;
}
letrasUsadas[strlen(letrasUsadas)] = letra;
letrasUsadas[strlen(letrasUsadas)] = '\0';
int acertou = 0;
for (int i = 0; i < strlen(palavra); i++) {
if (palavra[i] == letra) {
palavraAdivinhada[i] = letra;
acertou = 1;
}
}
if (!acertou) {
numErros++;
printf("A LETRA '%c' NAO ESTA NA PALAVRA.\n", letra);
}
if (strcmp(palavra, palavraAdivinhada) == 0) {
exibirForca(numErros);
printf("PARABENS! VOCE ACERTOU A PALAVRA: %s\n", palavra);
break;
}
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
8
limparTela();
}
if (numErros >= MAX_ERROS) {
exibirForca(numErros);
printf("VOCE FOI ENFORCADO! A PALAVRA ERA: %s\n", palavra);
}
return 0;
}
X. Apresentar a captura de tela evidenciando o funcionamento:
Falta do arquivo palavras.txt
Tela inicial do jogo
Tela do jogo com o acerto da palavra escolhida
Caderno de Resolução da
Atividade Prática de
Linguagem de Programação
9
Tela do jogo com o erro da palavra escolhida
XI. Apresentar a captura de tela do arquivo palavras.txt: