Buscar

Prova de Programação UFG

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UFG - Instituto de Informática Introdução à Programação
19/12/2023 Prof. Hebert Coelho
Prova 2 � 2023/2
1 Descrição
1. O único sistema operacional permitido para prova é o da maratona.
2. A nota máxima considerada nesta prova é de 10 pontos, cada exercício tem seu valor descrito no
início;
3. Para obter nota máxima na prova é necessário fazer 1 exercício sobre cada assunto
(vetor, string, matriz) sendo que 2 destes precisam ter uso de função com passagem
de parâmetro por referência (usando ponteiros);
4. Mesmo não havendo indicação de uso de função na questão, você poderá escolher o
exercício e usar função;
5. Caso seja realizado 2 exercícios sobre um mesmo assunto a nota considerada para o assunto será
a do exercício que obtiver maior pontuação;
6. O valor máximo da prova sem uso de função com passagem de parâmetro por referência é de 7
pontos. Assim, para cada um dos 2 exercícios a ser realizado com uso de função com passagem
de parâmetro que não for resolvido com função haverá um decremento de 1,5 pontos;
7. Não será permitido o uso de celulares durante a prova;
8. Cópias de código ou de partes de código de soluções implicarão em nota ZERO na questão
correspondente para todos os envolvidos;
9. Utilize o sharif como seu backup, não con�e na máquina pois a mesma pode travar, assim submeta
quantas versões quiser para cada código.
Vetores
1. Troca Opostos se Maior (3,0 pontos)
Escreva um programa para ler vários vetores e para cada vetor, trocar dois elementos x e y entre
si se o índice de x for menor que o índice de y e x e y são opostos entre si e x for maior que y.
Dado um vetor com n elementos, o elemento de índice zero é o oposto ao elemento de índice n−1,
o elemento de índice 1 é oposto ao elemento de índice n − 2, e assim, por diante. O programa
deve ter uma função trocaOpostosSeMaior que recebe como entrada um vetor e o seu tamanho
e executa a troca de elementos opostos no vetor recebido como parâmetro, se ela for necessária.
O programa deve conter ainda, uma função troca que troca dois elementos de um vetor entre si.
A função trocaOpostosSeMaior deve chamar a função troca sempre que dois elementos do vetor
precisem ser trocados entre si.
Entrada
A primeira linha da entrada contém o número de casos de teste. Para cada caso de teste há duas
linhas. A primeira linha contém um número inteiro N ≤ 500 que corresponde ao tamanho de
um vetor. A segunda linha contém N inteiros separados entre si por um espaço.
Saída
Para cada caso de teste o programa deve imprimir o vetor processado pela função trocaOpostosSe
Maior. Os elementos devem ser impressos separados entre si por um espaço e deve haver um
caractere de quebra de linha ao �nal.
Exemplo
Entrada
3
7
7 6 5 4 3 2 1
1
2
6
1 2 3 4 5 6
Saída
1 2 3 4 5 6 7
2
1 2 3 4 5 6
2. Elementos Comuns (4,0 pontos)
Escreva um programa que leia várias triplas de vetores de números inteiros e imprima os elementos
que são comuns a cada, tripla se houver elementos comuns entre eles. Considere que em um
mesmo vetor não haja elementos repetidos.
Entrada
A primeira linha na entrada contém um número inteiro C ≥ 1, que corresponde ao número de
casos de teste. Cada caso é formado por seis linhas. A primeira linha contém o número n1
de elementos do primeiro vetor. A segunda linha contém os elementos inteiros que formam o
primeiro vetor, separados entre si por um espaço. A terceira linha contém o número de elementos
n2 do segundo vetor. A quarta linha contém os elementos do segundo vetor, separados entre si
por um espaço. A quinta linha contém o número de elementos n3 do terceiro vetor. A sexta linha
contém os elementos do terceiro vetor, separados entre si por um espaço.
Saída
Para cada caso de teste o programa deve emitir uma linha contendo os elementos comuns aos três
vetores, ordenados em ordem crescente. Se não houver elementos em comum nos três vetores,
uma linha em branco é impressa. Os três vetores têm tamanho máximo igual a 1000. Considere
que os elementos dos vetores são do tipo int.
Exemplo
Entrada
2
1
5
10
1 2 3 4 5 6 7 8 9 10
3
90 5 70
5
50 47 33 10 4
3
4 9 10
8
10 3 8 2 5 4 7 8
Saída
5
4 10
Strings
3. mystrpbrk() (3,5 pontos)
Dada uma string apontada por str1, encontre o primeiro caractere nessa string que seja igual
a qualquer caractere que apareça na string apontada por str2. Os caracteres de terminação
das duas strings não devem ser considerados nesta pesquisa. Deve ser retornado um ponteiro
para char indicando o primeiro caractere da string apontada por str1 que coincide com algum
caractere diferente do caracter de �m de string que ocorre na string apontada por str2. Se
nenhuma coincidência, deve ser retornado o valor de endereço zero. Considere ainda que você não
sabe ou não se lembre de uma função que faça essa operação e que o professor tenha desconectado
o acesso dos alunos a rede externa ao INF!!! Escreva uma função do tipo char * que implemente
a solução para o problema acima. Essa função deve ter o seguinte cabeçalho (header):
char *mystrpbrk(char *str1, char *str2);
Você deve escrever um programa para testar se sua função funciona. O programa deverá ler
pares de cadeias de caracteres na entrada e para cada par, o programa deve chamar a função
passando os endereços da primeira e da segunda strings do par e deve imprimir a parte da primeira
string que inicia com o primeiro caractere da primeira string que coincide com pelo menos algum
caractere da segunda string. Caso a função retorne zero, o programa deve apenas imprimir uma
quebra de linha.
Entrada
A primeira linha da entrada contém um número inteiro n ≥ 0 correspondente ao número de casos
de teste. Em seguida, há n pares de linhas. Cada linha contém uma string. Considere que cada
linha tenha no máximo 1000 caracteres.
Saída
Para cada caso de teste, seu programa deve imprimir a parte da primeira string de um par que
inicia com o primeiro caractere que ocorre em pelo menos um dos caracteres da segunda string.
Exemplo
Entrada
4
Esta frio hoje?
BgkE
Aprendi os numeros de 1 a 10
bckz
Batatinha quando nasce
zqtue
Esparrama pelo chao
asp
Saída
Esta frio hoje?
tatinha quando nasce
sparrama pelo chao
4. Mensagens Cifradas (3,5 pontos)
Uma forma antiga de codi�car uma mensagem é substituir cada letra de uma palavra pela próxima
segunda letra na ordem alfabética. Por exemplo, `A' é substituído por `C', `R' é substituído por
`T', etc. As letras �nais do alfabeto são substituídas também pela segunda próxima do início
do alfabeto (como se organizarmos as letras em ordem alfabética, mas em uma circunferência).
Assim `Y' é substituído por `A' e `Z', por `B'. Podemos adaptar o sistema para deslocar não
apenas por duas letras, mas por qualquer número de letras.
Entrada
A entrada contém vários casos de teste. A primeira linha da entrada contém um número inteiro
n que indica o número de casos de teste. Cada caso de teste é composto por duas linhas. A
primeira linha contém uma sequência de letras a ser codi�cada. Essa sequência contém entre 1
e 50 caracteres (inclusive). Cada caractere é uma letra maiúscula (`A' - `Z'). A segunda linha
contém o número de posições à direita no alfabeto usado para gerar a sequência a ser codi�cada
que aparece na primeira linha e é um valor no intervalo fechado [0,25].
Saída
Dada a sequência original e o número de posições usadas para codi�cá-la, seu programa deve gerar
a sentença cifrada, de acordo com a explicação acima e de acordo com os exemplos seguintes.
Exemplo
Entrada
6
TOPCODER
2
QRSTUVWXYZABCDEFGHIJKLMNOP
10
TOPCODER
0
AXCHMA
25
CAMOBAP
1
HELLOWORLD
4
Saída
VQREQFGT
ABCDEFGHIJKLMNOPQRSTUVWXYZ
TOPCODER
ZWBGLZ
DBNPCBQ
LIPPSASVPH
Matrizes
5. Matriz: Linhas e colunas Nulas (3,5 pontos)
Dada uma matriz Am×n veri�car quais linhas e colunas são nulas. A matriz A abaixo possui as
linhas 3 e 4 nulas. A coluna 2 também é nula.
A =

1 0 2 3
4 0 5 6
0 0 0 0
0 0 0 0

Entrada
Na primeira linha há dois inteiros n e m, 1 < n ≤ 500 e 1 < m ≤ 500, representando a ordem
da matriz. A seguir haverá n linhas com m inteirosem cada linha, separados entre si por um
espaço em branco, representando os elementos da matriz.
Saída
O programa deverá imprimir as linhas e colunas nulas, nessa ordem. Também é necessário
imprimir a soma de todos os elementos da matriz. As informações de linha(s) e coluna(s) nulas
devem estar em linhas separadas. A soma deve ser impressa na última linha. Se não houver
linhas e colunas nulas, apenas a soma deve ser impressa. Ver exemplos.
Exemplo
Entrada 1
4 4
1 0 2 3
4 0 5 6
0 0 0 0
0 0 0 0
Saída 1
LINHA 3
LINHA 4
COLUNA 2
SOMA: 21
Entrada 2
3 5
2 4 1 9 0
1 0 5 7 6
4 8 2 2 1
Saída 2
SOMA: 52
6. Colunas Ordenadas (4,0 pontos)
Faça um programa que, dada uma matriz A de números inteiros, ordene os elementos de cada
coluna de A em ordem decrescente. A matriz A é uma matriz m × n, onde 1 ≤ m ≤ 10 e
1 ≤ n ≤ 50.
Entrada
A entrada contém vários casos de teste. Para cada caso há inicialmente uma linha com dois
números inteiros m e n separados entre si por um espaço. Os dois números obedecem aos
intervalos mostrados acima e correspondem, respectivamente, ao número de linhas e ao número
de colunas de uma matriz. Em seguida, há m linhas na entrada para o caso de teste, cada
uma contendo n valores inteiros separados entre si por um espaço. A entrada termina quando
for encontrada uma linha com m = 0 e n = 0. Nesse caso não há mais linhas na entrada e o
programa deve terminar.
Saída
A saída para cada caso de teste consiste de m linhas, cada uma contendo n números inteiros
separados entre si por um espaço. Os elementos de cada coluna estão ordenados em ordem
decrescente. Após a saída de cada caso de teste deve haver uma linha em branco.
Exemplo
Entrada
3 5
1 2 11 0 13
5 10 6 -99 88
-9 -100 -200 -20 -1
4 2
90 8
-2 -90
-30 -4
3 100
0 0
Saída
5 10 11 0 88
1 2 6 -20 13
-9 -100 -200 -99 -1
90 100
3 8
-2 -4
-30 -90
	Descrição

Mais conteúdos dessa disciplina