Sie sind auf Seite 1von 20

Caderno de Exercícios

Computação I

Jorge Abreu
2015
Conteúdo

1. Operações Aritméticas e Booleanas .........................................................................................2

2. Condições .................................................................................................................................4

3. Loops ........................................................................................................................................7

4. Métodos .................................................................................................................................12

5. Arrays e Strings.......................................................................................................................17

1
1. Operações Aritméticas e Booleanas

1.
1.1 Indique o valor final de x após a execução do seguinte bloco de código.

static void Main()


{
double x=10;
x = x - (x/100)*10;
x = x + (x/100)*10;
x *= 1;
}
1.2 Indique o valor final de x após a execução do seguinte bloco de código.

static void Main()


{
bool x;
int a = 1;
int b = 2;
int c = 4;
int d = 6;
int e = a*c+1;

x= ((a+b+c+d+e < 3*a+2*b-3*c) && d/c < 1) && false;

}
1.3 Indique o valor final de x após a execução do seguinte bloco de código.

static void Main(string[] args)


{
double x = 5;
x *= 5;
x -= 5;
x = 1+ (100 % ((x * 2) / ((x / 10) + 2)));
}

1.4 Indique o valor final de z após a execução do seguinte bloco de código.

static void Main(string[] args)


{
bool x = false;
bool y = true;

bool z = (( x && y) && ( x || y) ) || (( true && y)


&& (false && x));
}

2. Escreva um programa que dê o resultado da expressão: (𝑎 + 𝑏)2. As variáveis 𝑎 e 𝑏 são


números inteiros diferentes de zero e são definidas pelo utilizador.

3. Escreva um programa que calcule a área de uma circunferência, dado um determinado raio
𝑟 maior que zero e definido pelo utilizador.

2
4. Escreva um programa que calcule a área de um triângulo equilátero de lado 𝑙, sendo este
maior que zero e definido pelo utilizador. A altura do triângulo deve ser calculada através dos
meios mais convenientes, tendo sempre por base os lados do triângulo.

5. Escreva um programa constituído pelos seguintes testes:


1º Parte

 Teste 1 - Verifica se a soma de duas variáveis A e B, definidas pelo utilizador, é maior


que 100.
 Teste 2 – Verifica se o produto entre a soma anterior e 2,5 origina um resultado entre
100 e 1000.
 Teste 3 – Verifica se, retirando 150 unidades ao produto do teste anterior, obtemos
um número menor que 0, ou maior que -50.

2º Parte

 Teste 4 – Através de uma 3ª variável F, definida pelo utilizador, verificar se o quociente


entre F e 2 é igual a 10.

 Teste 5 – Verificar se o quociente do teste anterior é divisível por 2 (resto igual a 0).

 Teste 6 – Verificar o resultado da expressão: (𝑡𝑒𝑠𝑡𝑒1 ∪ 𝑡𝑒𝑠𝑡𝑒2 ) ∩ 𝑡𝑒𝑠𝑡e3.

 Teste 7- Verificar o resultado da expressão: (𝑡𝑒𝑠𝑡𝑒6 ∪ (𝑡𝑒𝑠𝑡𝑒4 ∩ 𝑡𝑒𝑠𝑡𝑒5) ) ∩ 𝑡𝑒𝑠𝑡𝑒2.

O resultado de todos testes deve ser True ou False e todos devem ser escritos pela ordem
apresentada no enunciado.

3
2. Condições

1. Escreva um programa que verifique se um determinado ano é bissexto, ou não. O ano deve
ser um número inteiro, maior que 0 e será definido pelo utilizador. Caso o valor inserido pelo
utilizador seja menor que 0, o programa deve ser finalizado.
Nota: Um ano é bissexto quando é divisível por 400, ou quando é divisível por 4 e não por 100.

2. Escreva um programa que receba 3 números inteiros, A, B e C. Em seguida, utilizando os


números inseridos, o programa deve ser capaz de detetar quantas soluções existem na
equação 𝐹 = 𝐴𝑥 2 + 𝐵𝑥 + 𝐶, através da fórmula resolvente.
Dica: Utilize o Δ da fórmula resolvente para encontrar o nº de soluções.

3. Escreva um programa que receba 3 números inteiros diferentes e que os ordene do menor
para o maior. Caso existam pelo menos dois números iguais o programa deverá apresentar
uma mensagem que constate essa situação e, seguidamente, deverá terminar.
Por fim, faça o mesmo, mas desta vez o programa deverá ordenar os números do maior para o
menor. Resolva o exercício recorrendo única e exclusivamente a if’s, else’s, ou else if’s.

4. Escreva um programa que atribua uma nota, de A até E, consoante a classificação obtida por
um determinado aluno. Existem duas classificações diferentes: a do primeiro teste (class1) e a
do segundo teste (class2). Ambas classificações são números inteiros entre 0 e 100. A lista
seguinte representa os intervalos associados a cada letra:
E = [0;24] B=] 69;89]
D=] 24;49] A=] 89;100]
C=] 49;69]
Para além disso, o programa deve apresentar uma nota final, tendo por base as duas
classificações, sendo que, o primeiro teste vale 40% da nota final e o segundo teste vale 60%
da mesma.
No fim da execução devemos ter um output parecido à seguinte imagem.

5. Escreva um programa que possa devolver uma frase, escolhida pelo utilizador, em pelo
menos 3 idiomas diferentes. A cada idioma deve estar associado um número inteiro (p.e, se o
utilizador inserir “1” o programa devolve a frase em inglês). Caso seja inserido um conjunto de
caracteres que não fazem parte das opções predefinidas pelo programa, deve aparecer uma

4
mensagem de erro e o programa termina. Resolva este exercício recorrendo ao método Switch
lecionado nas aulas.

6. Escreva um programa que receba o valor que três empregados recebem, por hora, numa
determinada empresa. O programa deverá calcular, com base no valor inserido, o pagamento
total que deverá efetuar aos 3 empregados no final do mês, sabendo que todos eles trabalham
8 horas por dia, 5 dias por semana, imaginando que o mês começa numa 2ª feira e que terá 31
dias.

 Se o valor final seja maior ou igual a 10.000€ o programa devolve a mensagem “Temos
que reduzir os salários “.
 Se o valor for menor que 10.000€ e maior ou igual a 5000€ o programa devolve a
mensagem “ Está tudo OK”.
 Se o valor final for menor que 5.000€ o programa devolve a mensagem “ Se calhar
podemos aumentar salários”.

No fim, também deverá aparecer qual o ordenado de um dos empregados ao fim de 30 dias.

7. Escreva um programa que receba 3 valores inteiros inseridos pelo utilizador, que irão
representar as notas que um aluno teve ao longo do 1º semestre na cadeira de Computação I.
Os valores deverão fazer parte do intervalo entre 0 a 20, inclusivo. O programa em causa deverá
ser capaz de calcular a média final do aluno, sabendo que o primeiro teste vale 25%, o segundo
vale 35% e o último vale 40%. No fim, a média final e as seguintes mensagens deverão ser
impressas, consoante a média obtida:

 Média <10 – “ Sorry my friend, não foi desta. No próximo semestre vais conseguir,
acredita em ti! “
 Média entre 10 e 17 – “ Bom trabalho, conseguiste! Esforça-te mais um pouco para
chegares ainda mais longe. “
 Média maior que 17 – “ Excelente trabalho!“

8. Escreva um programa que simule uma compra numa gelataria. Para a resolução deste
problema deve recorrer ao switch case, lecionado em aula. Inicialmente o programa deverá
apresentar um pequeno menu com os vários sabores disponíveis. Deverão existir pelo menos 3
sabores diferentes, onde cada sabor deverá ter um preço único que fará parte do menu inicial.
Se for inserido um valor inválido, deve ser retornada a mensagem “Não temos esse sabor” e o
programa deverá terminar.

Após ter sido inserido um valor válido, deve ser pedido ao utilizador quantos scoops do sabor
escolhido ele deseja (1 Scoop = 1 Bola de gelado). Caso o utilizador escolha mais do que 3 scoops,
o programa deverá retornar a mensagem “Escolheu mais de 3 sabores. Não aceitamos gulosos
nesta gelataria!” e terminar. Caso contrário, o programa deverá apresentar na consola o sabor
escolhido e calcular o total a pagar.

No fim, deve surgir a mensagem a indicar o preço total a pagar e quantos scoops foram pedidos.

Um possível output deste programa poderá ser: (página seguinte)

5
9. Escreva um programa que tenha como objetivo simular a confeção de um Frango Assado no
forno. Para isso, o programa deverá pedir a quantidade de sal (gramas) que o utilizador meteu,
assim como, a temperatura utilizada (graus Celsius) e o tempo (em minutos) que se deixou o
Frango no forno.

Quanto à quantidade de sal, devemos ter em conta as seguintes situações:


 Sal <250 “O frango está insonso”.
 Sal = 250-300g: “O frango está bom de sal”.
 Sal> 300g: “O frango está salgado”.

Quanto à temperatura e ao tempo, vamos ter de relacionar as duas variáveis para


obter resultados diferentes. Para este caso, considere que a temperatura ideal varia
entre 200 e 250 o C e que o tempo necessário varia consoante a temperatura escolhida.
Assim podem surgir as seguintes situações:

Com temperatura abaixo do ideal:

 Tempo <30 min: “O frango está cru”


 Tempo 30-35 min: “O frango está no ponto”
 Tempo> 30 min: “ O frango está queimado! “

Temperatura ideal:

 Tempo <20 min: “O frango está cru”


 Tempo 20-25 min: “O frango está no ponto”
 Tempo> 25 min: “ O frango está queimado! “

Temperatura acima do ideal:

 Tempo <10 min: “O frango está cru”


 Tempo 10-15 min: “O frango está no ponto”
 Tempo> 15 min: “ O frango está queimado! “

Por fim, caso tenhamos uma situação em que tanto a quantidade de sal, como a relação
temperatura e tempo são adequadas, obtemos a mensagem: “O Gordon Ramsay ficou
com inveja! “

6
3. Loops

1.
1.1 Indique o valor final do i após a execução do seguinte bloco de código.

static void Main()


{
int i;
for(i=1;i<=7; i++){
int k = i;
Console.WriteLine("Olá");
k = k + 2;
}
}
1.2 Indique o valor final do i após a execução do seguinte bloco de código.

static void Main()


{
int i=0;
int k=0;
do{
i+=4;
if(i>=4 || i/k > 1)
i*=i;
}while(i<4);
}
1.3 Indique o valor final do i após a execução do seguinte bloco de código.

static void Main(string[] args)


{
int x = 2;
int i = 1;
while (i < 7)
{
i *= x;
x*= i;

x++;
i--;
}
}
1.4 Indique o valor final do x após a execução do seguinte bloco de código.

static void Main(string[] args)


{
int x = 1;

for (int j = 0; j < 6; j = j + 2) {

x *= x + j;
}
}

7
2. Escreva um programa que calcule o fatorial de um determinado número inteiro, 𝑛, inserido
pelo utilizador e maior que 0. Enquanto a condição não for verdadeira, ou seja, enquanto 𝑛 for
menor ou igual a 0, o programa não deverá poder avançar.
Nota: 𝑛! = 1 × 2 × 3 × … 𝑛

3. Escreva um programa que receba 𝑛 números inteiros. O programa deve pedir


consecutivamente novos valores, até que o total de números inseridos seja 𝑛. Imediatamente
após ser inserido um novo valor, o programa deve ser capaz de identificar o máximo, o mínimo
e a média dos números inseridos até então.
Ex:

4. Escreva um programa que receba um determinado número inteiro, maior que zero. O
programa deverá ser capaz de dizer se o número em questão é, ou não, primo.
Um número é primo se e só se só for divisível por 1 e por si próprio.

5. Escreva um programa que receba dois números inteiros, 𝑎 e 𝑏, sendo este último maior ou
igual a 0. O objetivo deste programa será calcular uma potência cuja base será 𝑎 e o expoente
𝑏, onde o resultado final será guardado numa terceira variável, 𝑐. Caso o valor de 𝑏 não
verifique as condições, o programa deverá insistir até que ambos os valores sejam válidos.
Para além disso, como se devem ter todos os cenários em mente, caso 𝑏 seja igual a 0, 𝑐 será
igual a 1. Não deve resolver o exercício recorrendo a qualquer tipo de função da classe Math.

8
6. Escreva um programa que simule capacidade que um saco deve ter. Primeiro o utilizador deve
inserir qual a capacidade máxima que o saco aguenta, sendo esta um número do tipo double,
maior que 0. Em seguida, o utilizador deve criar um ciclo onde será introduzido cada vez mais
peso até ser atingida a capacidade máxima. Ao longo de cada fase do ciclo, o programa deve ser
capaz de indicar quando peso existe dentro do saco e quanto é que falta para atingir o seu
máximo.
No entanto, como todos os cenários devem ser tidos em conta, caso o saco tenha, por exemplo,
10kg de capacidade e já esteja a carregar com 9kg, se o utilizador introduzir qualquer número
que faça com que o saco carregue mais do que aquilo que pode (p.e, se o utilizador introduzir
2kg, o saco fica com 11kg, quando a sua capacidade máxima é 10kg), o programa deve rejeitar
o peso indicado pelo utilizador e pedir ao mesmo que introduza um valor válido (neste caso o
máximo valor válido seria 1kg).
No fim, quando o saco não conseguir carregar mais peso, o programa deve emitir uma
mensagem indicando essa situação.
A imagem seguinte sugere como deverá ser o output do programa.

7. Escreve um programa que simule uma compra de um almoço no bar da escola. Primeiro, o
programa deverá pedir ao utilizador quanto dinheiro é que tem na carteira e só poderá avançar
quando o valor inserido ( 𝑛 ) for maior que zero. Caso 𝑛 for válido, deverá aparecer o “Menu do
dia” só se esse mesmo valor for maior que o custo do item de menor valor (p.e. se o item de
menor valor custar 0,5€ e o utilizador tenha mais dinheiro que isso, o programa apresenta o
menu e continua, mas se não for esse o caso, deverá ser emitida uma mensagem a dizer “Isso
não para comprar nada.” e o programa deverá terminar).

O “Menu do dia” deverá ter pelo menos 4 produtos e ter um preço associado a cada produto.
Se a escolha do produto não for válida, deverá aparecer a imagem “Não temos isso”. Caso
contrário, se o valor for válida, terá que ser determinada a quantidade do produto escolhido).
Em seguida deverão ser feitas as seguintes verificações:
 Se o valor total a pagar for maior que o valor que o utilizador tem, deverá ser emitida uma
mensagem a constatar esse facto e o utilizador não deverá perder dinheiro;
 Se o valor total for igual ao valor do utilizador, o programa deverá dizer "Já não tens mais
dinheiro.”
 Se o valor total for menor que o valor do utilizador, deverá aparecer a quantidade que ainda
falta até o dinheiro acabar e ser perguntado se o utilizador quer comprar mais alguma coisa.
Se o utilizador inserir o caracter ‘y’, o programa mostra de novo o “Menu do dia” e repete

9
o processo. Por outro lado, se for inserido outro caracter qualquer, é emitida uma
mensagem a dizer o total a pagar e o programa acaba.

A seguinte figura representa um possível exemplo de output:

8. Escreve um programa que inicialmente pede um número inteiro positivo, 𝑛, ao utilizador. O


programa deverá pedir input até a condição n> 0 ser satisfeita. Seguidamente, o programa
deverá imprimir na consola o número de dígitos de 𝑛. Após imprimir o número de dígitos de 𝑛,
o programa deverá interrogar o utilizador se ele quer introduzi um novo número. Se o utilizador
inserir o caracter ‘y’, o programa irá repetir as operações anteriores, caso contrário, o programa
deverá terminar.
(Ex: 𝑛 = 12345, então o output será 5)

9. Escreva um programa que imprime a sequência de Hailstone. A regra para a computação do


termo seguinte, dado termo 𝑛, é a seguinte:

 Se 𝑛 for par, divide-se 𝑛 por 2;


 Se 𝑛 for ímpar, multiplica-se 𝑛 por 3 e soma-se uma unidade
 A sequência acaba quando 𝑛 = 1
(Ex: Se 𝑛 = 6, então a sequência deverá ser 6, 3, 10, 5, 16, 8, 4, 2, 1)
O programa deverá pedir ao utilizador um número positivo inteiro, 𝑛 e pedir continuamente um
novo valor, caso a condição 𝑛 > 0 não seja satisfeita.

10
10. Escreva um programa que devolva como output, uma “espécie” de tabuleiro de xadrez,
onde as casas pretas serão representadas por um “#” e as brancas, por um espaço vazio. O
exercício deverá de ser resolvido através de nested-for’s.

Um possível output poderá ser o seguinte:

11
4. Métodos

1. Indique corretamente, em cada um dos casos, o valor do output pedido.


1.1 Qual é o valor retornado pela seguinte função com a=8 e b=10?

public static int fun (int a, int b){


int result=2;
int c=1;
for(int i=0;i<a;i++){
c=result+i;
}
return foo(ref a, ref b) + c;
}

public static int foo (ref int b, ref int a){


a--;
b*=2;
return a;
}
1.2 Qual é o valor da variável i após a execução da seguinte função com a=6?

public static void fun (int a){


int i;
for(i=0;i<a;i++){
foo(ref i);
}
}

public static void foo (ref int k){


k=k+3;
}

1.3 Qual é o valor retornado pela seguinte função fun com a=1, b=2, c=3 ?

public static int fun (int a, int b, int c){


int k=0;
int i;
for(i=0;i<c;i++){
k += foo(ref i, b, c);
b+=2;
}
return k*i;
}

public static int foo (ref int k, int l, int m){


if(l < m)
k = k - 1;
else{
l = m + 1;
k = k + 5;
}
return m%2;
}

12
1.4 Qual é o valor da variável i após a execução da seguinte função a com
z=5?

public static void a (int z){


int i;
int k = 1;
int j = 2;
for(i=0;i<=z;i++){
b(i, j, k);
j++;
k++;
}
}

public static void b (int u, int v, int w){


v = w+1;
w = w+2;
u = c(ref u, ref v);
}

public static int c (ref int a, ref int b){


if(a>b)
return 5*b;
else
return 6*b;
}

2. Escreva um programa que receba 3 números. Em seguida crie duas funções, uma para
calcular a média dos números introduzidos e outra para identificar o máximo. Ambas as
funções são do tipo double e os resultados das mesmas devem ser impressos no método
Main().
Para resolver este exercício, não recorra a nenhuma função da classe Math.

3. Escreva um programa que possui duas funções que sirvam para fazer a conversão de graus
Celsius para Fahrenheit e vice-versa, sendo que nenhum dos métodos retorna valores para o
método Main().
Primeiro, o utilizador deve escolher se quer introduzir uma temperatura em graus Celsius, ou
em Fahrenheit. Em seguida, caso seja introduzida, por exemplo, uma temperatura em graus
Celsius, o programa, deverá chamar o método responsável para fazer a conversão para graus
Fahrenheit. Caso contrário, se a temperatura introduzida for em Fahrenheit, o método a ser
chamado deve ser o que faz a conversão para graus Celsius. Se for introduzido algum caracter
inválido, o programa deve devolver uma mensagem de erro e parar.
Para as conversões serem efetuadas, devem-se ter as seguintes expressões em conta:
𝐶 = 5(𝐹 − 32) / 9
𝐹 = (9𝐶 / 5) + 32
Sendo que, 𝐶 representa a temperatura em graus Celsius e 𝐹 a temperatura em graus
Fahrenheit.

13
4. Escreva um programa que calcule a área de um quadrado, um triângulo, um retângulo ou de
um círculo, através das funções necessárias. Todas as funções criadas devem ter sempre o
nome area() e serem do tipo double, no entanto, os parâmetros aceites por cada uma das
funções devem variar.
Inicialmente, o utilizador deve selecionar qual a área da figura geométrica que quer calcular.
Em seguida, devem ser introduzidos os parâmetros necessários para calcular a área da figura
em questão.
Por fim, a função correspondente à figura geométrica escolhida deve ser chamada e terá de
retornar o valor da respetiva área, que será impresso no método Main().

5. Ao longo do semestre foram feitos 3 testes, dos quais só os 2 testes com nota mais alta
contam para calcular a média final de determinado aluno.
Escreva um programa que receba as notas de um aluno e que recorra a uma função para
calcular a média final desse mesmo aluno. Cada uma das notas introduzidas deve estar num
intervalo [0; 20], sendo que o programa não deverá avançar enquanto as 3 classificações
cumpram esse requisito.
A função da Média Final, deve ser capaz de identificar as duas notas mais altas e calcular a
média do aluno tendo em conta essas mesmas notas. O resultado final deve ser impresso no
método Main().

6. Escreva um programa que receba dois números inteiros maiores que zero e diferentes entre
si. Através desses dois números o programa recorre a duas funções, MDC () e MMC (), para
calcular o Máximo Divisor Comum e o Mínimo Múltiplo Comum, respetivamente.
Para entender melhor os conceitos de MDC e MMC, temos os seguintes casos:
 MDC
O nº 12 é divisível por 1, 2, 3 e 6. Dentro desse conjunto o 6 é maior deles todos.
Por sua vez, o nº 18 é divisível por 1, 2, 3, 6 e 9. Dentro do conjunto de números pelos
quais o 12 e o 18 são divisíveis, 6 é o maior que é comum a ambas as partes. Assim sendo,
6 é o MDC entre 12 e 18.
 MMC
O nº 3 tem como múltiplos o 3, 6, 9, 12, 15, etc..
Por sua vez, o nº 6 tem como múltiplos o 6, 12, 18, 24, etc..
Dentro do conjunto de múltiplos de 3 e de 6, o menor número em comum é o 6. Logo,
podemos dizer que 6 é o MMC entre 3 e 6.

Tendo isto tudo em conta, as funções depois de efetuarem todos os processos, devem
retornam os resultados para o método Main(). Caso não exista MDC ou MMC as funções
devem retornar o valor -1.

14
7. Escreva um programa em Java composto por:

a. Uma função min com três parâmetros a, b e c do tipo int. O método devolve
o valor mínimo entre a, b e c. IMPORTANTE: na definição do método é
proibido utilizar:
a. Instrução if-else;
b. Operador ternário;
c. Instrução switch;

b. Um método main em que o programa pede ao utilizador para introduzir três


números inteiros maiores que 0. O programa irá continuar a solicitar o input
ao utilizador até que as três variáveis sejam maiores do que 0. Depois de
chamar o método min previamente definido, o programa irá descrever na
consola o mínimo entre o valor introduzido pelo utilizador.

8.Escreva um programa que simule o cálculo das operações básicas da matemática, sendo elas,
soma, subtração, divisão e multiplicação. Para tal, o utilizador deverá inserir 3 variáveis: duas
variáveis que irão representar os números que farão parte da operação e uma outra variável
que irá guardar a operação a ser feita, que poderá ter os valores +, -, / ou *. O programa não
deverá prosseguir enquanto a variável operação não tenha pelo menos um dos valores
anteriormente indicados, pedindo continuamente um novo valor até a condição ser satisfeita.

Após as três variáveis serem preenchidas, deverá ser invocada a função Calc (), do tipo double,
que recebe os 3 parâmetros previamente mencionados. A função deverá efetuar uma
operação entre os dois números recebidos e tendo por base o valor da variável operação.

No fim, o resultado deverá ser impresso no método Main ().

Um possível output final poderá ser:

15
9. O algoritmo de Euclides é uma forma de calcular o máximo divisor comum (MDC) de
dois números inteiros, 𝑎 e 𝑏.
Existem diversas versões, sendo que neste exercício é pedido que se programe o
algoritmo de Euclides definido pela diferença. Este algoritmo rege-se pelo seguinte
conjunto de regras:
Enquanto 𝑎 for diferente de 𝑏, então:
 Se 𝑎 for menor que 𝑏, 𝑏 = 𝑏 − 𝑎
 Caso contrário, 𝑎 = 𝑎 − 𝑏
Ex: Se 𝑎 = 8 e 𝑏 = 12, iremos ter:
𝑎 < 𝑏 → 𝑏 = 12 − 8 = 4
𝑎 >𝑏→𝑎 =8−4=4

MDC, entre 8 e 12 é 4
Assim sendo, escreva um programa em Java composto por duas partes:

1. Um método que implemente o algoritmo de Euclides, que deverá devolver o


MDC de 𝑎 e 𝑏.
2. Um programa que chama o método anterior e receba dois números inteiros
maiores que 0. O programa em causa deverá pedir continuamente novos valores,
enquanto os valores inseridos sejam menores ou iguais a 0. Por fim, deverá imprimir
na consola o valor retornado pelo método.

16
5. Arrays e Strings
1. Escreva um programa que receba a idade de 5 alunos e que seja capaz de identificar a idade
máxima, a mínima e média das idades. Todas as idades serão guardadas num array do tipo
integer e terão de ser maiores que 0. No fim, o programa deverá apresentar todos os dados
obtidos.

2. Escreva um programa que ordene os elementos de um array por ordem crescente (e/ou
decrescente, é à escolha). O array deve ser do tipo integer e o utilizador é quem decide o seu
tamanho, sendo que, este nunca poderá ser menor ou igual a 0 e, caso o seja, o programa
deve pedir um novo tamanho ao utilizador. No fim, o output deve idêntico à figura seguinte.

3. Escreva um programa que receba 𝑛 números inteiros, todos guardados num array do tipo
integer. O programa deverá recorrer a uma função Inv(), que irá inverter a ordem dos
elementos anteriormente introduzidos no array, ou seja:

Antes da execução da função Inv (), temos o array: A = {1,2,3,4,5}

Após a execução da função Inv (), temos: A = {5,4,3,2,1}

O tamanho do array deverá ser definido pelo utilizador, terá que ser maior que 0 e enquanto
isso não se verifique, o programa deverá pedir um novo valor.
Por fim, o programa deverá apresentar os resultados finais.

4. Escreva um programa que receba dois arrays distintos, com o mesmo tamanho e que
recebam 𝑛 números inteiros. Em seguida o programa irá recorrer a uma função que terá como
objetivo criar um novo array selecionando o maior elemento em cada posição quando
comparando os dois arrays iniciais, ou seja:

Temos os arrays A e B, onde A = {2,4,0} e B = {1, 5, 3}.

Desta forma, teremos o novo array X = {2,5,3}.

O tamanho do array deverá ser definido pelo utilizador, terá que ser maior que 0 e enquanto
isso não se verifique, o programa deverá pedir um novo valor.
Por fim, o programa deverá apresentar os resultados finais.

17
5. Crie um array de duas dimensões, onde cada linha represente a tabuada de um número
entre 1 até 10. Em seguida, crie uma função que faça a soma de todos os elementos de cada
linha, assim como dos elementos que fazem parte da diagonal que vai desde o primeiro
elemento da 1ª linha, até ao último elemento da última linha. A imagem seguinte representa
um possível output do programa em questão.

A função em causa não deve retornar qualquer tipo de valor para o método Main ().

6. Escreva um programa que receba duas strings. O programa em causa irá recorrer a uma
função, com o nome Comparar(), que irá comparar as letras da primeira string com as letras da
segunda e terá como objetivo verificar quantas vezes cada uma das letras da primeira string se
repete na segunda. No fim, a função irá retornar um array, com o mesmo tamanho que a
primeira string, onde cada elemento será o o número de vezes que cada letra da primeira
string se repete na segunda string. A figura seguinte representa um possível output deste
programa.

Os resultados finais serão apresentados no método Main().

7. Escreva um método que recebe um array de inteiros positivos e devolva true se for
constituído por números consecutivos, ou false em caso contrário.
Num dado conjunto numérico, os seus elementos são consecutivos se a diferença entre o
máximo e o mínimo for igual ao tamanho do conjunto mais uma unidade e se não existirem
elementos repetidos nesse mesmo conjunto.
No main, deverá ser criado um array cujo tamanho é inserido pelo utilizador e os elementos
do mesmo devem compreender valores entre 0 e 1000.
Por fim, na consola deverá ser apresentada uma mensagem a dizer se o array é, ou não,
constituído por elementos consecutivos

18
8. Escreva um método que verifique se um array de números inteiros está ordenado. O
programa deverá devolver -1 se o array estiver ordenado por ordem decrescente, 1 se estiver
por ordem crescente, ou 0 se não estiver ordenado.
No main, deverá ser criado um array cujo tamanho é inserido pelo utilizador e os elementos
do mesmo devem compreender valores entre 0 e 1000.
Por fim, na consola deverá ser apresentada uma mensagem a dizer se o array é, ou não,
constituído por elementos consecutivos

Dica: Um array não está ordenando por ordem crescente se e só se, existirem dois elementos
consecutivos, 𝑖 e 𝑖 + 1, tais que 𝑖 seja maior ou igual a 𝑖 + 1.
Para a ordem decrescente, a situação é semelhante, mas com a condição contrária.

19