Você está na página 1de 11

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER

ESCOLA SUPERIOR POLITÉCNICA


ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
DISCIPLINA DE LINGUAGEM DE PROGRAMAÇÃO

ATIVIDADE PRÁTICA

ADRIELE MARIA DA SILVA SANTOS – RU: 3314980

PROFESSOR SANDRO DE ARAUJO

APODI–RN
2020
1 EXERCÍCIO 1

ENUNCIADO: 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
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.

Solução do aluno:
​ ​stdio.h​>
#include​ <
#include​ <​ ​stdlib.h​>

int​ main(){
​// array com a quantidade de cada peca
​int​ pecas[​7​]={​32​,​16​,​4​,4
​ ​,​4​,2
​ ​,​2​}; ​// índice do array indicando o código da peca
​int​ tabuleiro[​8​][​8]​ ; ​// tamanho do tabuleiro
​int​ i, j, x; ​// variáveis auxiliares

​// Menu de apresentação


printf(​"| Peca |"​ ​" Codigo |"​ ​" Quantidade​\t​|​\n\n​"​ );
printf(​"| Rainha |"​ ​" 6 |"​ ​ " 2​\t\t​|​\n​"​ );
printf(​"| Rei |"​ ​" 5 |"​ ​ " 2​\t\t​|​\n​"​ );
printf(​"| Bispo |"​ ​" 4 |"​ ​ " 4​\t\t​|​\n​"​ );
printf(​"| Torre |"​ ​" 3 |"​ ​ " 4​\t\t​|​\n​"​ );
printf(​"| Cavalo |"​ ​" 2 |"​ ​ " 4​\t\t​|​\n​"​ );
printf(​"| peao |"​ ​" 1 |"​ ​ 16​\t\t​|​\n​"​ );
"
printf(​"| Branco |"​ ​" 0 |"​ ​ 32​\t\t​|​\n​"​ );
"

​// primeiro (for) para preenchimento do tabuleiro


​for​(i=​0​;i<​8​;i++){
​for​(j=​0​;j<​8​;j++){
printf(​"​\n​Digite o codigo da peca que voce deseja colocar nessa
posicao ? "​);
scanf(​"%d"​, &x); ​// digitar o valor desejado

tabuleiro[i][j]=x; ​// adicionar o valor digitado na posição do array

pecas[x]--; ​// decrementação para saber quantas pecas do mesmo tipo


falta para preencher
printf(​"​\n​Falta |%d| pecas de codigo: %d "​, pecas[x], x);
}
}
​// segundo (for) para impressão do tabuleiro
​for​(i=​0​;i<​8​;i++){
printf(​"​\n​ "​);
​for​(j=​0​;j<​8​;j++){
printf(​"​\t​%d "​,tabuleiro[i][j]);
}
}
system(​"pause"​);
​return​ ​0​;
}
Imagem do código funcionando no seu computador:

OBS.: NÃO VOU MOSTRAR COMPLETO PORQUE SÃO 64 PEÇAS***


Imagem do código funcionando no seu computador:
2 EXERCÍCIO 2

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

Solução do aluno:
​ ​stdio.h​>
#include​ <
#include​ <​ ​stdlib.h​>

// Estrutura Funcionario com nome e salário


struct​ funcionario {
​char​ nome[​50​];
​float​ salario;

} pessoa;

int​ main()
{
​// Variáveis auxiliares
​float​ imposto, total;

printf(​"Digite o nome do funcionario​\n​ "​);


gets(pessoa.nome); ​// gets utilizado para strings compostas, captura o que
foi digitado pelo usuario
printf(​"Digite o salario do funcionario​\n​ "​);
scanf(​"%f"​, &pessoa.salario); ​// capturar o valor digitado pelo usuario

​// Selecionar o salario e calcular o imposto correspondente


​if​(pessoa.salario <= ​1637.11​){
​// Mostrar na tela
printf(​"​\n​sem cobranca de imposto​\n​"​);
}​else​ ​if​(pessoa.salario >= ​1637.51​ || pessoa.salario <= ​2453.50​){
imposto = pessoa.salario * ​0.075​;
​// Mostrar na tela
printf(​"​\n​Funcionario: %s | Imposto de Renda: %.2f | Salario Total:
%.2f ​\n\n​"​, pessoa.nome, imposto, total);
}​else​ ​if​(pessoa.salario >= ​2453.51​ || pessoa.salario <= ​3271.38​){
imposto = pessoa.salario * ​0.15​;
​// Mostrar na tela
printf(​"​\n​Funcionario: %s | Imposto de Renda: %.2f | Salario Total:
%.2f \​ n\n​"​, pessoa.nome, imposto, total);
}​else​ ​if​(pessoa.salario >= ​3271.39​ || pessoa.salario <= ​4087.65​){
imposto = pessoa.salario * ​0.225​;
​// Mostrar na tela
printf(​"​\n​Funcionario: %s | Imposto de Renda: %.2f | Salario Total:
%.2f ​\n\n​"​, pessoa.nome, imposto, total);
}​else​{
imposto = pessoa.salario * ​0.275​;
​// Mostrar na tela
printf(​"​\n​Funcionario: %s | Imposto de Renda: %.2f | Salario Total:
%.2f ​\n\n​"​, pessoa.nome, imposto, total);
}

​// Calcular o salário descontando o valor do imposto


total = pessoa.salario - imposto;

​return​ ​0​;
}

Imagem do código funcionando no seu computador:

3 EXERCÍCIO 3

ENUNCIADO: 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.

Solução do aluno:

​ ​stdio.h​>
#include​ <
#include​ <​ ​string.h​>​ ​// uso de strings
#include​ < ​ ​ctype.h​>​ ​// função toupper()

#define​ TAM ​50​ ​// define tamanho maximo de cada frase

int​ main(){
​int​ i=​0​,j=​0​; ​// variaveis auxiliares

​char​ frase[​5​][TAM]; ​// variável do tipo string


​char​ aux[TAM];
​char​ nome[​20​]; ​// Armazena o nome do arquivo de saída

​//Rotina para obter o nome, via teclado, do arquivo de saída


printf(​"Escreva o nome do arquivo: "​);

setbuf(stdin, NULL); ​//função que limpa o buffer de entrada do teclado, no


caso.
gets(nome);
setbuf(stdin, NULL);
strcat(nome, ​".txt"​);​// concatena o nome que foi capturado no scanf com
.txt

FILE *arq; ​// cria variável ponteiro para se trabalhar com arquivos
arq = fopen( nome, ​"w"​ ); ​//abrindo o arquivo para escrita, com tipo de
abertura "w"

​// Rotina para obter 5 frases, pelo teclado, e converte elas para
maiuscula
​do​{
printf(​"​\n​Escreva %da frase para gravacao de arquivo:​\n​"​, j+​1​); ​//
(j+1 para numerar a frase)

setbuf(stdin, NULL);
gets(aux); ​// Obtém a frase

​if​ ( (​int​)strlen(aux) <= TAM ){ ​// a funcao strlen() para saber o


tamanho da frase digitada

​for​(i=​0​; i< TAM; i++){ ​// Subrotina - Transforma todas para


maiúcula.
aux[i] = toupper(aux[i]);
}

strcpy( frase[j], aux ); ​// Frase com tamanho validado será


copiada para o array de frases

fprintf( arq, ​"​\n​frase %d: %s "​, j+​1​, frase[j] ); ​//Grava a frase


no arquivo de saída aberto. (j+1 para numerar a frase)

j++;

} ​else​ {
​//Em caso de erro entra no else e retorna pedindo uma frase de
tamanho TAM
printf(​"​\n\n​ERRO: Sua frase ter no maximo %d letras ​\n​"​, (​int​)TAM );
}

}​while​( j < ​5​ );

fclose(arq); ​// fechamento de arquivo


printf(​"​\n\n​Frases gravadas com sucesso!​\n​"​);

​return​ ​0​;
}
Imagem do código funcionando no seu computador:

Imagem do arquivo criado no computador:

Imagem da saída do arquivo:


4 EXERCÍCIO 4

ENUNCIADO: 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.

Solução do aluno:

#include​ ​<​stdio.h​>

#include​ ​<​math.h​>​ ​//biblioteca para a funçao pow() e sqrt()

void​ calc_hexa(​float​ L, ​float​ *area, ​float​ *perimetro); ​// prototipo da funçao


dado na questao

int​ main()
{
​float​ l, a, p; ​//variaveis

printf(​"Digite o valor do lado do hexagono "​);


scanf(​"%f"​, &l); ​// entrada de valor recebendo o lado

​while​(l>=​0​){ ​//laço repete ate ser digitado um valor negativo

calc_hexa(l,&a,&p); ​// chamada da funçao calc_hexa() que recebe o


valor de l e o endereço de a e p
printf(​"Hexagono de area: %.2f e perimetro: %.2f​\n\n​"​, a, p ); ​//
imprimindo a area e o perimetro

printf(​"Digite o valor do lado do hexagono "​);


scanf(​"%f"​, &l); ​// entrada de valor recebendo o lado dentro do laço

​return​ ​0​;
}

void​ calc_hexa(​float​ L, ​float​ *area, ​float​ *perimetro){ ​// funçao calc_hexa()


pega o endereço de a e p e o valor de l

*area = (​3​ * pow(L,​2​) * sqrt(​3​))/​2​; ​// calculando a area utilizando as


funçoes pow() e sqrt()

*perimetro = L * ​6​; ​// calculando o perimetro


}

/* OBS.:
**Esses efeitos não ocorrem quando os parâmetros são passados por valor
**(sem o uso do asterisco ‘*’ e o operador ‘&’), em que uma cópia do dado é
**passada como parâmetro para a função e a variável origem não sofre qualquer
**alteração. */
Imagem do código funcionando no seu computador:

5 EXERCÍCIO 5

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

Solução do aluno:
​ ​stdio.h​>
#include​ <
#include​ <​ ​math.h​>​ ​// biblioteca para uso das funcoes sqrt() e pow()

int​ main()
{
​struct​ ponto2d{ ​// struct
​float​ x;
​float​ y;
};
​struct​ ponto2d ponto_inicial; ​// estrutura do tipo ponto2d
​struct​ ponto2d ponto_final; ​// estrutura do tipo ponto2d

​// variaveis
​float​ X=​0​;
​float​ Y=​0​;
​float​ distancia=​0​;

​//menu
​int​ opcao;
inicio: ​// definicao do ponto de inicio

printf(​"​\n​[1] - DIGITE OS VALORES DO 1o PONTO"​);


printf(​"​\n​[2] - DIGITE OS VALORES DO 2o PONTO"​);
printf(​"​\n​[3] - MOSTRAR A DISTANCIA ENTRE OS PONTOS"​);
printf(​"​\n​[4] - SAIR​\n\n​"​);

scanf(​"%d"​, &opcao); ​// usuario digita u valor para o menu


​switch​ (opcao) {

​case​ 1
​ ​:
printf(​"ponto X1: "​);
scanf(​"%f"​, &ponto_inicial.x); ​// usuario digita o valor de x1

printf(​"ponto Y1: "​);


scanf(​"%f"​, &ponto_inicial.y); ​// usuario digita o valor de y1

​goto​ inicio; ​// volta para o ponto de inicio


​break​;
​case​ ​2​:
printf(​"ponto X2: "​);
scanf(​"%f"​, &ponto_final.x); ​// usuario digita o valor de x2

printf(​"ponto Y2: "​);


scanf(​"%f"​, &ponto_final.y); ​// usuario digita o valor de y2

​goto​ inicio; ​// volta para o ponto de inicio


​break​;
​case​ ​3​:
​// calculo da distancia usando as funcoes sqrt() e pow()
X = (ponto_final.x) - (ponto_inicial.x);
Y = (ponto_final.y) - (ponto_inicial.y);
distancia = sqrt(pow(X,​2​) + pow(Y,​2​));

printf(​"​\n​A distancia entre pontos: %.2f​\n\n​"​, distancia);

​goto​ inicio; ​// volta para o ponto de inicio


​break​;
​case​ ​4​:
exit(​0​); ​// finaliza o programa
​break​;
​default​: ​// se digitar um valor diferente
printf(​"voce deve escolher uma opcao valida​\n​"​);
printf(​"Pressione qualquer tecla para voltar ao menu​\n​"​);

​goto​ inicio; ​// volta para o ponto de inicio


}

​return​ ​0​;
}
Imagem do código funcionando no seu computador:

Você também pode gostar