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: 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:
Compartilhar