You are on page 1of 5

Algoritmos e Estruturas de Dados 1

Lista de Exerccios 3
Professor Paulo Gomide
Parte Terica
1. Explique o que so estruturas complexas homogneas ou estruturas compostas homogneas. Qual
a forma bsica de utilizao dessas estruturas em C?
2. Sobre as estruturas complexas homogneas, dena com suas palavras os seguintes termos:
(a) Vetor;
(b) Matriz;
(c) String.
3. possvel criar um vetor com N posies, sendo N uma varivel inteira informada pelo usurio
atravs da entrada padro (tela)? Por que?
4. Explique a utilidade do caractere de terminao \0 presente no nal das strings.
5. Sobre a biblioteca string.h:
(a) Descreva suas quatro principais funes, explicitando a nalidade de cada uma;
(b) Explique a forma de uso (parmetros e retorno) de cada uma dessas quatro funes.
Parte Prtica
1. Implemente um programa que leia da entrada padro (tela) um inteiro 1 N 1000 e declare um
vetor chamado primos com capacidade para 1000 inteiros. A partir da, atribua s P primeiras
posies desse vetor, os P nmeros naturais primos existentes entre 1 e 1000, inclusive.
2. Implemente um programa que leia da entrada padro (tela) um inteiro 1 P 1000 e declare um
vetor chamado primos com capacidade para 1000 inteiros. A partir da, atribua s P primeiras
posies desse vetor, os P primeiros nmeros naturais primos.
3. Em Matemtica, um nmero perfeito um nmero inteiro para o qual a soma de todos os seus
divisores positivos prprios (excluindo ele mesmo) igual ao prprio nmero. Por exemplo, os
nmeros 6 e 28 so nmeros perfeitos, pois: 6 = 1+2+3 e 28 = 1+2+4+7+14. Implemente um pro-
grama que leia da entrada padro (tela) um inteiro 1 N 1000 e declare um vetor chamado
perfeitos com capacidade para 1000 inteiros. A partir da, atribua s P primeiras posies desse
vetor, os P nmeros naturais perfeitos existentes entre 1 e 1000, inclusive.
4. Em Matemtica, um nmero perfeito um nmero inteiro para o qual a soma de todos os seus
divisores positivos prprios (excluindo ele mesmo) igual ao prprio nmero. Por exemplo, os
nmeros 6 e 28 so nmeros perfeitos, pois: 6 = 1+2+3 e 28 = 1+2+4+7+14. Implemente um pro-
grama que leia da entrada padro (tela) um inteiro 1 P 1000 e declare um vetor chamado
perfeitos com capacidade para 1000 inteiros. A partir da, atribua s P primeiras posies desse
vetor, os P primeiros nmeros naturais perfeitos.
5. Implemente um programa que declare um vetor V com capacidade para 100 pontos utuantes e
solicite ao usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro
1 N 100, representando o nmero de elementos a serem armazenados nesse vetor. A seguir,
solicite ao usurio que o mesmo digite os N elementos que sero armazenados emV . Esses valores
devem ser carregados nas variveis do seu programa atravs da entrada padro (tela). A partir
da, imprima na sada padro (tela) os elementos do vetor V cujos ndices sejam pares na ordem
inversa, considerando uma preciso de 2 casas decimais.
Entrada:
5
1.20 0.50 -0.30 2.10 -1.70
Sada:
-1.70 -0.30 1.20
6. Implemente um programa que declare um vetor V com capacidade para 100 pontos utuantes e
solicite ao usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro
1 N 100, representando o nmero de elementos a serem armazenados nesse vetor. A seguir,
solicite ao usurio que o mesmo digite os N elementos que sero armazenados emV . Esses valores
devem ser carregados nas variveis do seu programa atravs da entrada padro (tela). A partir
da, imprima na sada padro (tela) a soma dos elementos do vetor V , considerando uma preciso
de 2 casas decimais.
Entrada:
5
1.20 0.50 -0.30 2.10 -1.70
Sada:
1.80
7. Implemente um programa que declare um vetor V com capacidade para 100 pontos utuantes e
solicite ao usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro
1 N 100, representando o nmero de elementos a serem armazenados nesse vetor. A seguir,
solicite ao usurio que o mesmo digite os N elementos que sero armazenados emV . Esses valores
devem ser carregados nas variveis do seu programa atravs da entrada padro (tela). A partir
da, imprima na sada padro (tela) a mdia dos elementos do vetor V , considerando uma preciso
de 2 casas decimais.
Entrada:
5
1.20 0.50 -0.30 2.10 -1.70
Sada:
0.36
8. Implemente um programa que declare um vetor V com capacidade para 100 pontos utuantes e
solicite ao usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro
1 N 100, representando o nmero de elementos a serem armazenados nesse vetor. A seguir,
solicite ao usurio que o mesmo digite os N elementos que sero armazenados em V . Esses val-
ores devem ser carregados nas variveis do seu programa atravs da entrada padro (tela). A
partir da, imprima na sada padro (tela) o produto dos elementos do vetor V , considerando uma
preciso de 2 casas decimais.
Entrada:
5
1.20 0.50 -0.30 2.10 -1.70
Sada:
0.64
9. O produto interno ou escalar entre um vetor x e um vetor y, ambos de dimenses (n x 1), um
escalar k obtido por:
k = x
T
y = x
1
y
1
+ x
2
y
2
+ x
3
y
3
+ + x
n
y
n
=
n

i=1
x
i
y
i
.
Implemente um programa que leia da entrada padro (tela) dois vetores formados por n nmeros
reais e imprima na sada padro (tela) o produto interno entre eles com uma preciso de 2 casas
decimais. A entrada do programa ser composta por trs linhas. Na primeira linha haver um
inteiro n, sendo 1 n 10
5
, representando o tamanho dos vetores x e y. A segunda linha ser
composta por n nmero reais separados por espao representando os elementos do vetor x. E a
terceira linha ser composta por n nmero reais separados por espao representando os elementos
do vetor y.
Entrada 1: Entrada 2:
3 5
5.00 -1.00 2.00 1.50 -3.00 1.00 -4.00 -1.00
1.00 3.00 4.00 1.00 3.50 4.50 1.25 -10.00
Sada 1: Sada 2:
10.00 0.50
10. A multiplicao entre duas matrizes A e B denida quando a matriz A tem um nmero de
colunas igual ao nmero de linhas da matriz B. Nestes casos o produto da matriz A, de dimenses
(n x p), com a matriz B, de dimenses (p x m), resulta em uma matriz C, de dimenses (n x m),
tal que:
c
ij
=
p

k=1
a
ik
b
kj
, i = 1, 2, 3, . . . , n e j = 1, 2, 3, . . . , m,
onde os elementos a
xy
, b
xy
e c
xy
representam respectivamente os valores presentes na linha x e na
coluna y das matrizes A, B e C.
Implemente um programa que leia da entrada padro (tela) duas matrizes, uma de dimenses
(n x p) e outra de dimenses (p x m), formada por nmeros reais, e imprima na sada padro
(tela) o produto entre elas com cada elemento com uma preciso de 2 casas decimais. A entrada
do programa deve ser composta por 2 + n + p linhas. Na primeira linha haver dois inteiros n
e p separados por espao, sendo 1 n,p 100, representando as dimenses da matriz A. As
n linhas seguintes sero compostas por p nmeros reais representando os elementos da matriz A
separados por espao. Na terceira linha haver dois inteiros p e m separados por espao, sendo
1 p,m 100, representando as dimenses da matriz B. E as p linhas seguintes sero compostas
por m nmeros reais representando os elementos da matriz B separados por espao. A sada
do programa deve apresentar n linhas compostas por m nmeros reais separados por espao,
representando a matriz C resultante da multiplicao entre as matrizes A e B recebidas.
Entrada:
2 3
1.00 0.00 2.00
-1.00 3.00 1.00
3 4
3.00 1.00 -1.00 1.00
2.00 1.00 0.00 0.00
1.00 0.00 1.00 -1.00
Sada:
5.00 1.00 1.00 -1.00
4.00 2.00 2.00 -2.00
11. Sem usar a funo strcat implementada na biblioteca string.h, implemente um programa que
construa uma string a partir da concatenao de outras duas strings informadas pelo usurio
atravs da entrada padro (tela) e imprima a string formada na sada padro (tela). Considere
que as strings informadas pelo usurio tero no mximo 100 caracteres.
Entrada:
galo ucura
Sada:
galoucura
12. Sem usar a funo strcat implementada na biblioteca string.h, implemente um programa que
construa uma string a partir da concatenao de outras trs strings informadas pelo usurio atravs
da entrada padro (tela), considerando a ordem inversa em que foram informadas. Considere que
as strings informadas pelo usurio tero no mximo 100 caracteres.
Entrada:
ico et atl
Sada:
atletico
13. Sem usar a funo strcpy implementada na biblioteca string.h, implemente um programa que
receba duas string do usurio atravs da entrada padro (tela) e copie a segunda delas na primeira,
fazendo com que as duas strings quem idnticas. A seguir imprima as duas strings na sada
padro (tela). Considere que as strings informadas pelo usurio tero no mximo 100 caracteres.
Entrada:
fluminense atletico
Sada:
atletico atletico
14. Sem usar a funo strcmp implementada na biblioteca string.h, implemente um programa que
receba duas string do usurio atravs da entrada padro (tela) e informe qual string maior, isto
, qual string vem antes considerando a ordem lexicogrca. Usando a sada padro (tela):
caso a primeira string venha antes da segunda, imprima na tela o nmero -1;
caso a segunda string venha antes da primeira, imprima na tela o nmero 1;
caso as duas strings sejam idnticas, imprima na tela o nmero 0.
Considere que as strings informadas pelo usurio tero no mximo 100 caracteres.
Entrada 1: Entrada 2: Entrada 3:
atletico fluminense fluminense atletico atletico atletico
Sada 1: Sada 2: Sada 3:
-1 1 0
15. Implemente um programa que declare um vetor V com capacidade para 100 strings e solicite ao
usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro 1 N 100,
representando o nmero de strings a serem armazenadas nesse vetor. A seguir, solicite ao usurio
que o mesmo digite as N strings que sero armazenadas em V e mais uma string X a ser buscada.
Todas as strings devem ter no mximo 20 caracteres e devem ser carregadas nas variveis do seu
programa atravs da entrada padro (tela). Armazenados todos os elementos no vetor, percorra os
mesmos a m de descobrir se a string X pertence ao vetor V criado. Caso pertena, imprima todas
as posies do vetor em que esta string aparece, caso contrrio imprima -1. DICA: a utilizao das
funes declaradas na biblioteca string.h estudadas, podem facilitar muito o seu trabalho.
16. Implemente um programa que declare um vetor V com capacidade para 100 strings e solicite ao
usurio atravs da sada padro (tela) que o mesmo digite um nmero inteiro 1 N 100,
representando o nmero de strings a serem armazenadas nesse vetor. A seguir, solicite ao usurio
que o mesmo digite as N strings que sero armazenadas em V . Todas as strings devem ter no
mximo 20 caracteres. Esses valores devem ser carregados nas variveis do seu programa atravs
da entrada padro (tela). Armazenados todos os elementos, faa uma busca linear no vetor a m
de encontrar a menor e a maior string do vetor, considerando a ordem lexicogrca. Encontradas
essas duas strings, imprima o resultado da concatenao entre as trs strings seguintes: a menor
string encontrada, a string _ (underline) e a maior string encontrada; e o nmero de caracteres da
string resultante da concatenao separados por espao. DICA: a utilizao das funes declaradas
na biblioteca string.h estudadas, podem facilitar muito o seu trabalho
Entrada:
6
mineiro bahia atletico cruzeiro corinthians gremio
Sada:
atletico_mineiro 16
Bons estudos! ;-)

You might also like