Você está na página 1de 7

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO

DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

As questões abaixo devem ser resolvidas utilizando a linguagem C. APENAS os códigos-fonte


deverão ser compactados numa pasta com o nome LE4-NOME-SOBRENOME que deve ser
compactada como zip e enviada via classroom.

LEIA E SIGA ATENTAMENTE AS INSTRUÇÕES a seguir:


> Cada questão deve ter um arquivo-fonte com o nome LE4-Q?-NOME-SOBRENOME.c
> Deve-se incluir como comentário no início do arquivo uma descrição do seu propósito, o(s)
autor(es), a disciplina e o que mais for relevante para identificação futura.

> Lembre-se de:

o usar nomes significativos para variáveis, funções e parâmetros.

o buscar modularização/reuso.

> Observe as partes dos programas/subprogramas:

o Cada função deve ter um cabeçalho com sua descrição, dados de entrada e saída.

o Insira comentários também no código para explicá-lo.


UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

1. Receba n inteiros positivos passados como argumento na chamada do programa.


./L4-Q1-NOME-SOBRENOME 10 5 3 4 5 6 2

Cada 2 inteiros consecutivos representam um ponto no quadrante positivo. Neste caso:


(10,5) (3,4) (5,6) { o 2 é descartado pois não tem par }
Use um struct para representar pontos.
A cada ponto lido, informe:
- o ponto e sua distância da origem
- a maior distância até o momento.
Ao final, informe o ponto com a maior distância.
DICAS:
typedef struct { ...
} tPonto;
...
#include <math.h>
...
int main(int argc, char *argv[]) {
...
dist = sqrt( pow(p.x,2) + pow(p.y,2) );

Para compilar no terminal, acresente "-lm" :


gcc L4-Q1-NOME-SOBRENOME.c -o L4-Q1-NOME-SOBRENOME -lm

EXEMPLO:
./L4-Q1-NOME-SOBRENOME 10 5 3 4 5 6 2
A distância da origem a (10,5) é 11.180340.
A maior distância até o momento é 11.180340.

A distância da origem a (3,4) é 5.000000.


A maior distância até o momento é 11.180340.

A distância da origem a (5,6) é 7.810250.


A maior distância até o momento é 11.180340.
O ponto de maior distância 11.180340 é (10,5)
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

2. Leia parâmetros na chamada do programa


./L4-Q2-NOME-SOBRENOME teste.txt abacate

O 1o parâmetro é o nome do programa e pode ser descartado. O 2o é o nome de um arquivo


que deve ser criado e 3o em diante são valores (tamanho máximo 20) que serão escritos em
linhas diferentes do arquivo. Em seguida, feche o arquivo, abra-o novamente e imprima os
valores na tela. Crie uma função que abra o arquivo para escrita, outra para leitura, uma que
escreva no arquivo e outra que leia e imprima na tela. Verifique se foi informado a
quantidade correta de parâmetros, e se foi possível abrir, ler/escrever no arquivo.
Exemplo 1:
./L4-Q2 teste.txt

Quantidade de parâmetros insuficiente!

Exemplo 2:
./L4-Q2 teste.txt abacate abacaxi
abacate
abacaxi

3. Escreva uma função chamada "trocarValores" que receba dois parâmetros inteiros por
referência e troque seus valores. Em seguida, implemente um programa que utilize essa
função para trocar os valores de duas variáveis e exiba os novos valores na tela.
Exemplo 1:
Digite os valores A e B: 85 24
Antes da troca: A = 85 e B = 24
Depois da troca: A = 24 e B = 85

Exemplo 2:
Digite os valores A e B: 4 2
Antes da troca: A = 4 e B = 2
Depois da troca: A = 2 e B = 4

4. Crie uma função chamada "inverterVetor" que receba um vetor de inteiros de tamanho 5
como parâmetro por referência. A função deve inverter a ordem dos elementos do vetor.
Escreva um programa que utilize essa função para inverter um vetor de números inteiros
e imprima o vetor resultante.

Exemplo 1:
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

Digite um vetor de 5 posições: 8 7 5 6 2


Vetor invertido: 2 6 5 7 8

Exemplo 2:
Digite um vetor de 5 posições: 1 2 3 4 5
Vetor invertido: 5 4 3 2 1

5. Faça um programa com as seguintes funções: criptografa(*char O, int K) e


decriptografa(*char C, int K), ambas recebem um vetore de caracteres de 6 posições e
um inteiro. A criptografia utilizada é a Cifra de César
(https://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sar), em que o texto a ser
criptografado/decriptografado é o vetor de caracteres e o “passo” (ou seja, o
deslocamento dos caracteres) é determinado pelo inteiro K.
Lembrando que o alfabeto termina em “z”, e caso ultrapasse essa letra, retorna ao início
do alfabeto.

Exemplo 1:
Escolha a opção desejada:
[1] Criptografar
[2] Descriptografar
Opcao escolhida: 1
Digite a sequência de char a ser criptografada e o passo: xarope 3
adursh

Escolha a opção desejada:


[1] Criptografar
[2] Descriptografar
Opcao escolhida: 2
Digite a sequência de char a ser decriptografada e o passo: adursh 3
xarope

Exemplo 2:
Escolha a opção desejada:
[1] Criptografar
[2] Descriptografar
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

Opcao escolhida: 1
Digite a sequência de char a ser criptografada e o passo: jujuba 365
kvkvcb

Escolha a opção desejada:


[1] Criptografar
[2] Descriptografar
Opcao escolhida: 2
Digite a sequência de char a ser decriptografada e o passo: kvkvcb 365
jujuba

6. Refaça a questão anterior, mas desta vez, ao invés de passar um inteiro como “passo” da
criptografia, passe um vetor de 6 posições. Agora, o “passo” de cada posição é
determinado pelos elementos do vetor.

Exemplo 1:
Escolha a opção desejada:
[1] Criptografar
[2] Descriptografar
Opcao escolhida: 1
Digite a sequência de char a ser criptografada: abcdef
Digite o vetor de passo: 0 1 2 3 4 5
Mensagem criptografada: acegik

Escolha a opção desejada:


[1] Criptografar
[2] Descriptografar
Opcao escolhida: 2
Digite a sequência de char a ser decriptografada: acegik
Digite o vetor de passo: 0 1 2 3 4 5
Mensagem criptografada: abcdef
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

7. Peça ao usuário que informe três inteiros, sendo um valor inicial, uma razão e a
quantidade n de elementos. Usando uma função, preencha um vetor-dinâmico de n
posições começando pelo valor inicial e multiplicando-o cumulativamente pela razão
(progressão geométrica - PG). Usando outra função, imprima o primeiro valor da PG
acima da média entre os três últimos elementos.
PG de valor inicial 3 e razão 4:
3, 3*4=12, 12*4=48, 48*4=192, ….
Exemplo:
Digite o inicio e a razao da PG:
3
4
Digite a quantidade de elementos da PG:
6
PG: 3 12 48 192 768 3072
O valor acima da média 1344.000000 é 3072!

8. Leia do teclado uma quantidade n de palavras a serem informadas. A cada palavra lida
(máx 20 caracteres), guarde num struct as seguintes informações:
- a string
- o número de vogais (exemplo "tenet" tem 2 vogais)
- o número de consoantes (exemplo "tenet" tem 3 consoantes)
- se eh palindromo (exemplo "tenet" é palindromo)
- compute a quantidade de cada vogal, maiúscula ou minúscula
Exemplo: "Abacate" tem 3 'a's e 1 'e'.
Ao final, imprima as palavras e as informações computadas da última até a primeira.
Use alocação dinâmica e funções.
Exemplo
Digite a quantidade de palavras: 3
Digite 3 palavras:
acabate
Abacaxi
tenet
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
ENGENHARIA ELÉTRICA
PROGRAMAÇÃO I – 2023/1

4ª LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO I

Resultado:
>> tenet
Vogais: 2
a: 0
e: 2
i: 0
o: 0
u: 0
Consoantes: 3
Palindromo: sim

>> Abacaxi
Vogais: 4
a: 3
e: 0
i: 1
o: 0
u: 0
Consoantes: 3
Palindromo: nao

>> acabate
Vogais: 4
a: 3
e: 1
i: 0
o: 0
u: 0
Consoantes: 3
Palindromo: nao

Você também pode gostar