Buscar

ATIVIDADE PRÁTICA - LOGICA DE PROGRAMAÇÃO

Prévia do material em texto

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER
ESCOLA SUPERIOR POLITÉCNICA
BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO
DISCIPLINA DE LINGUAGEM DE PROGRAMAÇÃO
ATIVIDADE PRÁTICA
ALUNO: VITOR PRUDENCIO DA SILVA – RU: 2825758
PROFESSOR: Winston Sen Lun Fung
Juiz de fora – minas gerais
2020
1. EXERCÍCIO 1
Vamos supor que várias pedras do jogo de xadrez estão no tabuleiro. Para facilitar a indicação das peças, vamos convencionar: 1 – peões 3 – torres 5 – reis 0 – ausência de peças 2 – cavalos 4 – bispos 6 – rainhas O tabuleiro é o seguinte: 
Construa um programa, em linguagem C, que: 
a) Solicite ao usuário que informe qual peça deseja colocar em cada posição do tabuleiro. 
b) Mostre o tabuleiro informado pelo usuário na tela. 
c) Determine a qual a quantidade de cada tipo de peça no tabuleiro.
RESPOSTA
#include <stdio.h>
#include <stdlib.h>
enum pecas { vago, peao, cavalo, torre, bispo, rei, rainha };
int main()
{
	float c;
	int tabuleiro[8][8] = {
	{1, 3, 0, 5, 4, 0, 2, 1},
	{1, 0, 1, 0, 0, 1, 0, 0},
	{0, 0, 0, 0, 1, 0, 6, 0},
	{1, 0, 0, 1, 1, 0, 0, 1},
	{0, 1, 0, 4, 0, 0, 1, 0},
	{0, 0, 3, 1, 0, 0, 1, 1},
	{1, 0, 6, 6, 0, 0, 1, 0},
	{1, 0, 5, 0, 1, 1, 0, 6}
	};
	// mostra o tabuleiro do enunciado
	printf("\nTabuleiro:\n\n");
	int linha, coluna;
	for (linha = 0; linha < 8; linha++)
	{
		for (coluna = 0; coluna < 8; coluna++)
		{
			printf("%d ", tabuleiro[linha][coluna]);
		}
		printf("\n");
	}
	int contador[7] = { 0 };
	int i, x;
	for (i = 0; i < 8; i++) {
		for (x = 0; x < 8; x++) {
			switch (tabuleiro[i][x])
			{
			case vago:
				contador[0]++;
				break;
			case peao:
				contador[1]++;
				break;
			case cavalo:
				contador[2]++;
				break;
			case torre:
				contador[3]++;
				break;
			case bispo:
				contador[4]++;
				break;
			case rei:
				contador[5]++;
				break;
			case rainha:
				contador[6]++;
				break;
			default:
				break;
			}
		}
	}
	printf("\n");
	printf("LEGENDA\n");
	printf("0 - VAZIO\n1 - PEAO\n2 - CAVALO\n3 - TORRE\n4 - BISPO\n5 - REI\n6 - RAINHA\n\n");
	printf("\nPECAS E CASAS VAZIAS:\n\n");
	printf("VAZIO= %d\n", contador[0]);
	printf("PEAO= %d\n", contador[1]);
	printf("CAVALO= %d\n", contador[2]);
	printf("TORRE= %d\n", contador[3]);
	printf("BISPO= %d\n", contador[4]);
	printf("REI= %d\n", contador[5]);
	printf("RAINHA %d\n", contador[6]);
	printf("\n");
	system("pause");
	// montando o tabuleiro do usuário
	contador[0] = 0;
	contador[1] = 0;
	contador[2] = 0;
	contador[3] = 0;
	contador[4] = 0;
	contador[5] = 0;
	contador[6] = 0;
	int tabuleirousuario[8][8] = {
	{1, 3, 0, 5, 4, 0, 2, 1},
	{1, 0, 1, 0, 0, 1, 0, 0},
	{0, 0, 0, 0, 1, 0, 6, 0},
	{1, 0, 0, 1, 1, 0, 0, 1},
	{0, 1, 0, 4, 0, 0, 1, 0},
	{0, 0, 3, 1, 0, 0, 1, 1},
	{1, 0, 6, 6, 0, 0, 1, 0},
	{1, 0, 5, 0, 1, 1, 0, 6}
	};
	int linhausuario, colunausuario; // definindo linha e coluna que o usuário irá preencher
	int escolhausuario;
	int SimOuNao;
	system("cls");
	printf("Monte seu tabuleiro\n\n");
	for (linha = 0; linha < 8; linha++)
	{
		for (coluna = 0; coluna < 8; coluna++)
		{
			printf("%d ", tabuleirousuario[linha][coluna]);
		}
		printf("\n");
	}
	printf("\nDigite a linha (1 a 8) que vai alterar:\n");
	scanf_s("%d", &linhausuario);
	while ((linhausuario < 1) || (linhausuario > 8))
	{
		printf("O valor nao existe. Digite um numero de 1 a 8 para informar a linha!\n");
		scanf_s("%d", &linhausuario);
	}
	printf("Digite a coluna (1 a 8) que vai alterar:\n");
	scanf_s("%d", &colunausuario);
	while ((colunausuario < 1) || (colunausuario > 8))
	{
		printf("O valor nao existe. Digite um numero de 1 a 8 para informar a coluna!\n");
		scanf_s("%d", &colunausuario);
	}
	printf("Qual peça vai inserir nessa posicao? %d,%d:\n", linhausuario, colunausuario);
	printf("0 = VAZIA\n");
	printf("1 = PEAO\n");
	printf("2 = CAVALO\n");
	printf("3 = TORRE\n");
	printf("4 = BISPO\n");
	printf("5 = REI\n");
	printf("6 = RAINHA\n");
	scanf_s("%d", &escolhausuario);
	while ((escolhausuario < 0) || (escolhausuario > 6))
	{
		printf("A peca nao existe! Insira um valor de peca valida conforme o menu!\n");
		scanf_s("%d", &escolhausuario);
	}
	tabuleirousuario[linhausuario - 1][colunausuario - 1] = escolhausuario;
	printf("Deseja alterar outra posicao?\n");
	printf("(1) para SIM e (2) para NAO\n");
	scanf_s("%d", &SimOuNao);
	while (SimOuNao == 1) // enquanto o usuário não informar, o programa continua solicitando alterações.
	{
		printf("\nDigite a posição da linha (1 a 8) que deseja alterar:\n");
		scanf_s("%d", &linhausuario);
		while ((linhausuario < 1) || (linhausuario > 8)) //o usuário só pode utilizar uma das alternativas dadas ou ficará no laço
		{
			printf("O valor nao existe. Digite um numero de 1 a 8 para a linha!\n");
			scanf_s("%d", &linhausuario);
		}
		printf("Agora, digite a posicao da coluna (1 a 8) que deseja alterar:\n");
		scanf_s("%d", &colunausuario);
		while ((colunausuario < 1) || (colunausuario > 8)) // se o usuário escolher um valor fora do solicitado ele fica no laço.
		{
			printf("O valor nao existe. Digite um numero de 1 a 8 para a coluna!\n");
			scanf_s("%d", &colunausuario);
		}
		printf("Digite a peca que deseja inserir na posicao %d,%d:\n", linhausuario, colunausuario);
		printf("0 - VAZIO\n1 - PEAO\n2 - CAVALO\n3 - TORRE\n4 - BISPO\n5 - REI\n6 - RAINHA\n\n");
		scanf_s("%d", &escolhausuario);
		while ((escolhausuario < 0) || (escolhausuario > 6)) // se o usuario escolhe uma peça que nao existe, fica no laço.
		{
			printf("A peça desejada não existe! Insira um valor válido conforme o menu!\n");
			scanf_s("%d", &escolhausuario);
		}
		tabuleirousuario[linhausuario - 1][colunausuario - 1] = escolhausuario;
		printf("Deseja alterar outra posica?\n");
		printf("(1) para SIM e (2) para NAO\n");
		scanf_s("%d", &SimOuNao);
	}
	system("cls");
	printf("Este foi o tabuleiro montado\n\n");
	int linha1, coluna1;
	int contadorusuario[7];
	for (linha1 = 0; linha1 < 8; linha1++)
	{
		for (coluna1 = 0; coluna1 < 8; coluna1++)
		{
			printf("%d ", tabuleirousuario[linha1][coluna1]);
		}
		printf("\n");
	}
	int j, l;
	for (j = 0; j < 8; j++) {
		for (l = 0; l < 8; l++)
		{
			switch (tabuleirousuario[j][l])
			{
			case vago:
				contador[0]++;
				break;
			case peao:
				contador[1]++;
				break;
			case cavalo:
				contador[2]++;
				break;
			case torre:
				contador[3]++;
				break;
			case bispo:
				contador[4]++;
				break;
			case rei:
				contador[5]++;
				break;
			case rainha:
				contador[6]++;
				break;
			default:
				break;
			}
		}
	}
	printf("\n");
	printf("LEGENDA\n");
	printf("0 - VAZIO\n1 - PEAO\n2 - CAVALO\n3 - TORRE\n4 - BISPO\n5 - REI\n6 - RAINHA\n\n");
	printf("\nQuantidade de pecas e casas vazias:\n");
	printf("Casas vazias= %d\n", contador[0]);
	printf("Peoes= %d\n", contador[1]);
	printf("Cavalos= %d\n", contador[2]);
	printf("Torres= %d\n", contador[3]);
	printf("Bispos= %d\n", contador[4]);
	printf("Reis= %d\n", contador[5]);
	printf("Rainhas\= %d\n", contador[6]);
	printf("\n");
	system("pause");
	return 0;
}
 
EXERCÍCIO 2:
Escreva um programa, em LINGUAGEM C, que: a) Solicite ao usuário a entrada de um registro que armazene na memória o Nome do funcionário e o seu salário. b) Utilizando o salário informado calcule o imposto de renda devido e mostre na tela, conforme a tabela abaixo:
rESPOSTA:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct imposto {
 char nome[61];
 float salario;
 float ir;
}; struct imposto folha;
int main() {
 printf("EXERCICIO 02 - ATIVIDADE PRATICA VITOR PRUDENCIO DA SILVA\n\n\n");/* Cabeçalho do programa e solicitação de inserção dos dados*/
 printf("Insira o nome do colaborador: \n");
 scanf_s("%s", &folha.nome);
 printf("Insira o salario do colaborador: \n");
 scanf_s("%f", &folha.salario);
 printf("\n\n\n####################################################################################################\n\n\n");
 printf("IMPOSTO DE RENDA CALCULADO SOBRE O SALARIO\n\n");
 printf("Nome do Colaborador: %s\n", folha.nome);
 printf("Salario declarado:R$ %.2f\n", folha.salario);
 if (folha.salario <= 1637.11)/*Comando IF/ELSE para determinar qual aliquota será aplicada sobre o salário*/
 {
 printf("Colaborador isento de Imposto de Renda");
 }
 else if (folha.salario >= 1637.12 && folha.salario <= 2453.50)
 {
 folha.ir = (folha.salario * 0.075);
 printf("Aliquota de 7,5 porcento.\nO imposto a ser pago sera de: R$ %.2f\n\n", folha.ir);
 }
 else if (folha.salario >= 2453.51 && folha.salario <= 3271.38)
 {
 folha.ir = folha.salario * 0.15;
 printf("Aliquota de 15 porcento.\nO imposto a ser pago sera de: R$ %.2f", folha.ir);
 }
 else if (folha.salario >= 3271.39 && folha.salario <= 4087.65)
 {
 folha.ir = folha.salario * 0.225;
 printf("Aliquota de 22,5 porcento.\nO imposto a ser pago sera de: R$ %.2f", folha.ir);
 }
 else if (folha.salario >= 4087.66)
 {
 folha.ir = folha.salario * 0.275;
 printf("Aliquota de 27,5 porcento.\nO imposto a ser pago sera de: R$ %.2f", folha.ir);
 }
 printf("\n\n\nOBRIGADO PELA CONSULTA!!!!\n\n\n");
 system("pause");
 return 0;
}
EXERCÍCIO 3:
Faça um programa, em linguagem C, que lê 5 frases, informadas pelo o usuário, de, no máximo, 50 caracteres cada uma e armazene-as em um arquivo. Mas, antes de gravar cada frase no arquivo, é necessário converter todas as suas letras para maiúsculas. O nome do arquivo será fornecido, via teclado, pelo usuário. A seguir, feche o arquivo. Reabra o arquivo, para leitura, exibindo na tela todas as frases convertidas.
RESPOSTA
#include <stdio.h>
#include<ctype.h>
#include <stdlib.h>
#include <string.h>
int main()
{
 FILE* farq;
 int i, j;
 char texto[51];
 char maiusc[51];
 char nomearq[20];
 int num;
 char c;
 printf("ATIVIDADE PRATICA 03 - VITOR PRUDENCIO DA SILVA\n\n\n");
 printf("\n\nDigite o nome do arquivo: ");
 scanf("%s", &nomearq);
 scanf("%c", &c);
 farq = fopen(nomearq, "w");
 if (farq == NULL) {
 fprintf(stderr, "fopen() failed in file %s at line # %d", __FILE__, __LINE__);
 exit(EXIT_FAILURE);
 }
 for (i = 0; i < 5; i++) {
 printf("Digite uma frase com ate 50 caracteres: ");
 gets(texto);
 fflush(stdin);
 j = 0; j < 5;
 while (texto[j] != '\0' && j <= 50) {
 maiusc[j] = toupper(texto[j]); // convertendo as frases para maiúscula
 fflush(stdin);
 j++;
 num++;
 }
 maiusc[j] = '\0';
 fwrite(&num, sizeof(int), 1, farq); //Gravando tamanho do texto
 fflush(stdin);
 fwrite(maiusc, sizeof(char), num, farq); //Gravando o texto
 }
 fclose(farq);
 farq = fopen(nomearq, "r");
 if (farq == NULL) {
 fprintf(stderr, "fopen() failed in file %s at line # %d", __FILE__, __LINE__);
 exit(EXIT_FAILURE);
 }
 fread(&num, sizeof(int), 1, farq); // lendo o tamanho do texto
 fread(maiusc, sizeof(char), num, farq); // lendo o texto gravado
 printf("RESULTADO:\n");
 printf("NOME DO ARQUIVO SALVO: %s\n", &nomearq);
 fflush(stdin);
 while (!feof(farq)) {
 printf("\nTexto convertido: %s", &maiusc);
 fflush(stdin);
 memset(maiusc, '\0', 50);
 fread(&num, sizeof(int), 1, farq); // lendo o tamanho do texto
 fread(maiusc, sizeof(char), num, farq); // lendo o texto gravado
 }
 fclose(farq);
}
EXERCÍCIO 4
Faça um programa, em linguagem C, para calcular a área e o perímetro de um hexágono. O programa deve implementar uma função chamada calc_hexa que calcula a área e o perímetro de um hexágono regular de lado L. O programa deve solicitar ao usuário o lado do polígono, calcular e imprimir a área e o perímetro do polígono. O programa termina quando for digitado um valor negativo qualquer para o lado. A função deve obedecer ao seguinte protótipo: 
void calc_hexa(float L, float *area, float *perimetro);
Lembrando que a área e o perímetro de um hexágono regular são dados por: 
Para os cálculos, obrigatoriamente você deve utilizar as funções sqrt e pow da biblioteca math.h.
RESPOSTA
#include<stdio.h>
#include<math.h>
void calc_hexa(float l, float* area, float* per) {
	*per = 6 * l;
	*area = (3 * pow(l, 2) * sqrt(3)) / 2;
}
int main() {
	float lado, area, perimetro;
	printf("ATIVIDADE PRATICA 04 - ALUNO VITOR PRUDENCIO DA SILVA\n\n\n");
	printf("\nDIGITE O A MEDIDA DO LADO DO HEXAGONO:");
	scanf("%f", &lado);
	while (lado > 0) {
		calc_hexa(lado, &area, &perimetro);
		printf("\n\n******** RESULTADO ********\n\n");
		printf("\n\LADO DO HEXAGONO INFORMADO: %.2f\nAREA = %.2f\nPERIMETRO = %.2f", lado, area, perimetro);
		printf("\n\nDIGITE O A MEDIDA DO LADO DO HEXAGONO, OU DIGITE VALOR NEGATIVO PARA SAIR:");
		scanf("%f", &lado);
	}
}
EXERCÍCIO 5
Faça um programa, em linguagem C, que: a) Crie uma struct chamada ponto2d que tenha como atributos os pontos x,y. b) Crie duas estruturas do tipo ponto2d chamadas ponto_inicial e ponto_final. c) Mostre um menu com as seguintes opções e implemente‐as: [1] ‐ Digitar os valores do primeiro ponto [2] - Digitar os valores do segundo ponto [3] ‐ Mostrar a distância entre os pontos [4] ‐ Sair
Resposta:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
	//criando struct//
	struct ponto2d
	{
		int x;
		int y;
	};
	struct ponto2d ponto_ini;
	struct ponto2d ponto_fim;
	int opcao;
	int d_pontosx, d_pontosy, d_ponto, ponto2d;
	fflush(stdin);
	printf_s("ATIVIDADE 05 - ALUNO VITOR PRUDENCIO DA SILVA\n\n");
	while (opcao > 0 || opcao < 5)//criando menu//
	{
		printf_s("[1] - Digitar os valores do primeiro ponto.\n");
		printf_s("[2] - Digitar os valores do segundo ponto.\n");
		printf_s("[3] - Mostrar a distancia entre os dois pontos.\n");
		printf_s("[4] - Sair.\n");
		scanf_s("%i", &opcao);
		switch (opcao)
		{
		case 1://inserindo as coordenadas do ponto A//
			printf_s("Insira a coordenada X do ponto A:\n");
			scanf_s("%d", &ponto_ini.x);
			printf_s("Insira a coordenada Y do ponto A:\n");
			scanf_s("%d", &ponto_ini.y);
			break;
		case 2://inserindo as coordenadas do ponto B//
			printf_s("Insira a coordenada X do ponto B:\n");
			scanf_s("%d", &ponto_fim.x);
			printf_s("Insira a coordenada Y do ponto B:\n");
			scanf_s("%d", &ponto_fim.y);
			break;
		case 3://calculando a distancia aplicando a fórmula//
			fflush(stdin);
			d_pontosx = (ponto_ini.x - ponto_fim.x);
			d_pontosy = (ponto_ini.y - ponto_fim.y);
			d_ponto = sqrt(pow(d_pontosx, 2) + pow(d_pontosy, 2));
			printf_s("\n Distancia entre os pontos A(%d,%d) e B(%d,%d) = %d\n ", ponto_ini.x, ponto_ini.y, ponto_fim.x, ponto_fim.y, d_ponto);
			system("pause");
			break;
		case 4://saindo do programa//
			system("pause");
			return 0;
			break;
		default: printf_s("\nEntrada invalida!\n");
			system("pause");
		}
	}
}
1

Continue navegando