Sie sind auf Seite 1von 12

/*Exercicios feitos em laboratorio

Autor: Reinaldo Lobo


emailAutor: reynaldlobo@bol.com.br

AULAS DE JAVA - arrays e exercicios

*/

UTILIZA��O DE ARRAYS ( Arranjos)

1. Arrays Unidimensionais

S�o arrays com uma dimens�o, possuem apenas um �ndice para acessar seu conte�do.

S�o declarados da seguinte forma:

Tipo-de-dado nome-do-array[] = new tipo-do-dado[quantidade]

. Tipo-de-dado � pode ser qualquer tipo de vari�vel primitiva ou classe;

. Nome-do-array � um nome qualquer v�lido, da mesma forma que os nomes de


vari�veis;

Exemplos:

. int N[]=new int [100]; - cria um array de nome N que cont�m 100 elementos do
tipo int e seu �ndice varia de 0 a 99.

. String mes[]=new String[12]; - cria um array de nome mes que cont�m 12 elementos
do tipo string e seu �ndice varia de 0 a 11.

Para se atribuir o valor a um elemento do array, basta colocar o �ndice desejado


dentro dos colchetes, como a seguir:

N[0] = 100;
N[52] = 38;
mes[0] = �Janeiro�;
mes[11] = �Dezembro�;

Vejamos um programa que demonstra a utiliza��o de um array para armazenar um


conjunto de argumentos do tipo inteiro, passado pelo usu�rio na linha de execu��o
e calcular a m�dia destes valores.

import java.io.*;
import java.text.DecimalFormat;

class C10EX01 {
public static void main(String args[]) {

float MDG[] = new float[8];


float SOMA = 0, MEDIA;
int I;
DecimalFormat df = new DecimalFormat("0.00");

System.out.println();

for (I = 0; I <= 7; I++) {


System.out.print("Entre media do " + (I + 1) + "o. aluno: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
MDG[I] = Float.parseFloat(br.readLine()); }
catch (Exception e) {
MDG[I] = 0;
}
SOMA += MDG[I];
}

MEDIA = SOMA / 8;

System.out.println();
System.out.println("Media Geral = " + df.format(MEDIA));

}
}

Este novo programa tem por objetivo fazer a leitura de dez elementos de um arranjo
A unidimensional e construir um arranjo B do mesmo tipo observando que: se o valor
do �ndice for par, o valor deve ser multiplicado por 5; e se for �mpar, deve ser
somado com 5.
Ao final mostra os conte�dos dos 2 arranjos.

import java.io.*;
class C10EX02 {
public static void main(String args[]) {

int A[] = new int[10];


int B[] = new int[10];

int I;

// Entrada de dados

System.out.println();
for (I = 0; I <= 9; I++) {
System.out.print("Entre o " + (I + 1) + "o. elemento: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = Integer.parseInt(br.readLine()); }
catch (Exception e) {
A[I] = 0;
}
}

// Processamento par ou impar

for (I = 0; I <= 9; I++)


if (I % 2 == 0)
B[I] = A[I] * 5;
else
B[I] = A[I] + 5;

// Apresentacao dos arranjos

System.out.println();
for (I = 0; I <= 9; I++)
System.out.println("A[" + (I + 1) + "] = " + A[I]);
System.out.println();
for (I = 0; I <= 9; I++)
System.out.println("B[" + (I + 1) + "] = " + B[I]);

}
}

Desenvolver um programa que fa�a a leitura de 5 elementos para um array A


unidimensional e apresente ao final o resultado da soma de todos os elementos que
sejam �mpares.

import java.io.*;

class C10EX03 {
public static void main(String args[]) {

int A[] = new int[5];


int I, SOMA = 0;

// Entrada de dados

System.out.println();
for (I = 0; I <= 4; I++) {
System.out.print("Entre o " + (I + 1) + "o. elemento: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = Integer.parseInt(br.readLine()); }
catch (Exception e) {
A[I] = 0;
}
}

// Processamento par ou impar

for (I = 0; I <= 4; I++)


if (A[I] % 2 != 0)
SOMA += A[I];

// Apresentacao dos arranjos

System.out.println();
System.out.println("Soma = " + SOMA);

}
}
Ordena��o de Arrays

O programa abaixo efetua a leitura de 5 elementos de um array e classifica em


ordem crescente.

import java.io.*;

class C10EX04 {
public static void main(String args[]) {

int A[] = new int[5];


int I, J, X;

// Entrada de dados

System.out.println();
for (I = 0; I <= 4; I++) {
System.out.print("Entre o " + (I + 1) + "o. elemento: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = Integer.parseInt(br.readLine()); }
catch (Exception e) {
A[I] = 0;
}
}

// Processamento ordenacao

for (I = 0; I <= 3; I++)


for (J = I + 1; J <= 4; J++)
if (A[I] > A[J]) {
X = A[I];
A[I] = A[J];
A[J] = X;
}

// Apresentacao dos arranjos

System.out.println();
for (I = 0; I <= 4; I++)
System.out.println((I + 1) + "o. valor = " + A[I]);

}
}

O programa seguinte far� a apresenta��o de 5 nomes no formato de ordena��o


alfab�tica ascendente.

import java.io.*;

class C10EX05 {
public static void main(String args[]) {
String A[] = new String[5], X;
int I, J;

// Entrada de dados

System.out.println();
for (I = 0; I <= 4; I++) {
System.out.print("Entre o " + (I + 1) + "o. nome: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = br.readLine(); }
catch (Exception e) {
A[I] = "";
}
}

// Processamento ordenacao

for (I = 0; I <= 3; I++)


for (J = I + 1; J <= 4; J++)
if (A[I].compareTo(A[J]) > 0) {
// quando se usa dados do tipo string � preciso usar o m�todo compareTo()
X = A[I];
A[I] = A[J];
A[J] = X;
}

// Apresentacao dos arranjos

System.out.println();
for (I = 0; I <= 4; I++)
System.out.println((I + 1) + "o. nome = " + A[I]);

}
}

Pesquisa em Arrays

Existe 2 tipos de pesquisa: seq�encial e bin�ria.

Modelo de pesquisa seq�encial � considere um programa que receber� a entrada de 10


valores inteiros e disponibilizar� para o usu�rio a capacidade de ir pesquisando
os valores armazenados no array.

import java.io.*;

class C10EX06 {
public static void main(String args[]) {

int A[] = new int[10], I, J, PESQ, ACHA;


String RESP;
// Entrada de dados

System.out.println();
for (I = 0; I <= 9; I++) {
System.out.print("Entre o " + (I + 1) + "o. elemento: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = Integer.parseInt(br.readLine()); }
catch (Exception e) {
A[I] = 0;
}
}

// Pesquisa de dados

do {

System.out.println();
System.out.print("Entre o valor a ser pesquisado: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
PESQ = Integer.parseInt(br.readLine()); }
catch (Exception e) {
PESQ = 0;
}

I = 0;
ACHA = 0;
while (I <= 9 & ACHA == 0)
if (PESQ == A[I])
ACHA = 1;
else
I++;

if (ACHA == 1)
System.out.print(PESQ + " localizado na posicao " + (I + 1));
else
System.out.print(PESQ + " nao foi localizado");

System.out.println();
System.out.println();
System.out.println("Continua? [S]im / [N]ao + <Enter>.");
System.out.print("Ou <Enter> para 'Nao': ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
RESP = br.readLine(); }
catch (Exception e) {
RESP = "";
}
RESP = RESP.toUpperCase(); }

while (RESP.compareTo("S") == 0);

}
}
M�todo de Pesquisa Bin�ria

Este m�todo exige que o array esteja previamente ordenado, divide o array em 2
partes e procura saber se a informa��o a ser pesquisada est� na posi��o que marca
o meio da divis�o.
Se estiver, ent�o achou e encerra o processo. Mas caso n�o esteja, o modelo
verifica se o conte�do da busca est� acima ou abaixo da linha que marca a divis�o
da tabela.

Vejamos como exemplo o programa abaixo que usa este m�todo de pesquisa para
localizar um nome em um array de 10 elementos.

import java.io.*;
class C10EX07 {
public static void main(String args[]) {

String A[] = new String[10], X, PESQ, RESP;


int I, J, MEIO, COMECO, FINAL, ACHA;

// Entrada de dados
System.out.println();
for (I = 0; I <= 9; I++) {
System.out.print("Entre o " + (I + 1) + "o. nome: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
A[I] = br.readLine(); }
catch (Exception e) {
A[I] = "";
}
}

// Processamento ordenacao
for (I = 0; I <= 8; I++)
for (J = I + 1; J <= 9; J++)
if (A[I].compareTo(A[J]) > 0) {
X = A[I];
A[I] = A[J];
A[J] = X;
}

// Apresentacao nomes ordenados


System.out.println();
for (I = 0; I <= 9; I++)
System.out.println((I + 1) + "o. nome = " + A[I]);

// Apresentacao por pesquisa binario


do {

System.out.println();
System.out.print("Entre o valor a ser pesquisado: ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
PESQ = br.readLine(); }
catch (Exception e) {
PESQ = "";
}

COMECO = 0;
FINAL = 9;
MEIO = 0;
ACHA = 0;
while (COMECO <= FINAL & ACHA == 0) {
MEIO = (COMECO + FINAL) / 2;
if (PESQ.compareTo(A[MEIO]) == 0)
ACHA = 1;
else
if (PESQ.compareTo(A[MEIO]) < 0)
FINAL = MEIO - 1;
else
COMECO = MEIO + 1;
}

if (ACHA == 1)
System.out.print(PESQ + " esta na posicao " + (MEIO + 1));
else
System.out.print(PESQ + " nao foi localizado");

System.out.println();
System.out.println();
System.out.println("Continua? [S]im / [N]ao + <Enter>.");
System.out.print("Ou <Enter> para 'Nao': ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
RESP = br.readLine(); }
catch (Exception e) {
RESP = "";
}
RESP = RESP.toUpperCase(); }

while (RESP.compareTo("S") == 0);

}
}

ARRAY Bidimensional

Uma estrutura de dados do tipo array pode tamb�m ser composta por mais de uma
coluna. Neste caso, este ser� um array bidimensional, ou seja, uma tabela que pode
ser formada por v�rias linhas e colunas.

Os arrays bidimensionais usa 2 �ndices, um controlando o posicionamento de linha e


outro controlando o posicionamento de coluna. Desta forma, a refer�ncia
TABELA[2,3] faz men��o a um elemento armazenado na linha 2 e coluna 3 do arranjo
TABELA.
Sintaxe:

Tipo ARRANJO[] = new tipo[dimens�o linha] [dimens�o coluna];

. <tipo> - o tipo de dado primitivo ou classe;


. <arranjo> - o nome atribu�do ao arranjo;
. <dimens�o linha> - o tamanho do array em n�mero de linhas;
. <dimens�o coluna> - o tamanho do array em n�mero de colunas;

O programa a seguir efetuar� a entrada de 4 notas escolares de 8 alunos de uma


sala de aula.

import java.io.*;
import java.text.DecimalFormat;

class C10EX08 {
public static void main(String args[]) {

float NOTA[][] = new float[8][4];


byte I, J;
DecimalFormat df = new DecimalFormat("00.00");

for (I = 0; I <= 7; I++) {


System.out.println();
System.out.println();
System.out.println("Aluno ---> " + (I + 1));
System.out.println();
for (J = 0; J <= 3; J++) {
System.out.print((J + 1) + "a. Nota = ");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
NOTA[I][J] = Float.parseFloat(br.readLine()); }
catch (Exception e) {
NOTA[I][J] = 0;
}
}
}

System.out.println();
System.out.println("Aluno Nota1 Nota2 Nota3 Nota4");
System.out.println("-----------------------------");

for (I = 0; I <= 7; I++) {


System.out.print((I + 1) + " --> ");
for (J = 0; J <= 3; J++)
System.out.print(df.format(NOTA[I][J]) + " ");
System.out.println();
}

System.out.println();

}
}
ARRAY de Argumentos

Observe o c�digo de programa: public static void main(String args[]) que estamos
usando em todos os programas desenvolvidos.

No par�metro do m�todo main() observe a defini��o do array String args[] que


permite usar um array de argumentos.

O programa abaixo calcula o fatorial de um valor fornecido como par�metro.

import java.io.*;

class C10EX09 {
public static void main(String args[]) {
int F = 1, I = 1, N;
N = Integer.parseInt(args[0]);
for (I = 1; I <= N; I++)
F *= I;
System.out.println(F);
}
}

O pr�ximo programa tem por finalidade passar com par�metro 4 valores representando
as notas escolares de um aluno para ent�o o programa calcular a m�dia do aluno e
indicar se ele foi aprovado ou reprovado.

import java.io.*;
import java.text.DecimalFormat;

class C10EX10 {
public static void main(String args[]) {
float N1, N2, N3, N4, MD;
DecimalFormat df = new DecimalFormat("0.00");
N1 = Float.parseFloat(args[0]);
N2 = Float.parseFloat(args[1]);
N3 = Float.parseFloat(args[2]);
N4 = Float.parseFloat(args[3]);
MD = (N1 + N2 + N3 + N4) / 4;
if (MD >= 5)
System.out.print("Aluno Aprovado com Media ");
else
System.out.print("Aluno Reprovado com Media ");
System.out.println(df.format(MD));
}
}
Obs: para usar o BlueJ os par�metros dever�o ser passados como
{(�5�,�6�,�7.5�,�8.3�)}

Caso esque�a de fornecer as notas como par�metro, ser� apresentado um erro


conforme:
Exception in thread �main� Java.lang.ArrayIndexOutOfBoundsException: 0
At C10Ex09.main(C10EX09.java:10).

Neste caso podemos tratar esta exce��o com um bloco try / catch. Vejamos o
programa abaixo:

import java.io.*;
import java.text.DecimalFormat;

class C10EX11 {
public static void main(String args[]) {

float N1, N2, N3, N4, MD;


DecimalFormat df = new DecimalFormat("0.00");

try {
N1 = Float.parseFloat(args[0]);
N2 = Float.parseFloat(args[1]);
N3 = Float.parseFloat(args[2]);
N4 = Float.parseFloat(args[3]);

MD = (N1 + N2 + N3 + N4) / 4;

if (MD >= 5)
System.out.print("Aluno Aprovado com Media ");
else
System.out.print("Aluno Reprovado com Media ");
System.out.println(df.format(MD)); }
catch (ArrayIndexOutOfBoundsException aioobe) {
System.out.println();
System.out.println("Forneca: C10EX10 A B C D");
System.out.println("Onde, A B C D sao notas escolares.");
}

}
}

Exerc�cios de Fixa��o:

1. Desenvolva os seguintes programas com elementos de arrays unidimensionais:

a) Ler 8 elementos num�ricos inteiros em um arranjo A do tipo vetor. Construir


um arranjo B de mesma dimens�o com os elementos do arranjo A multiplicados por 3.
Apresentar os elementos do array B.

b) Ler 2 arrays A e B do tipo vetor com 8 elementos num�ricos inteiros.


Construir um arranjo C, sendo cada elemento de C a subtra��o do elemento
correspondente de A em B. Apresentar os elementos do arranjo C.

c) Ler 2 arrays A e B do tipo vetor com 10 elementos num�ricos inteiros cada


uma. Construir um array C, sendo esta a jun��o dos arranjos A e B. Dessa forma, C
deve ter o dobro de elementos A e B. Apresentar os elementos do arranjo C.

d) Ler 2 arrays do tipo vetor. O array A deve possuir 5 elementos pares


inteiros e o array B deve possuir 10 elementos �mpares inteiros. Construir um
array C, sendo esta a jun��o dos 2 outros arrays. Dessa forma, C deve ter a
capacidade de armazenar 15 elementos. Apresentar os elementos do array C. Para
efetivar as entradas dos arrays A e B, eles dever�o ser verificadas quanto da
validade do valor fornecido. Caso o valor fornecido n�o seja compat�vel com o
esperado, o programa deve recusar a entrada e for�ar uma nova entrada, at� que o
valor v�lido seja fornecido.

e) Ler 15 elementos num�ricos inteiros de uma array A do tipo vetor. Construir


um array B do mesmo tipo, observando a seguinte lei de forma��o: todo elemento do
array B deve ser o quadrado do elemento correspondente do array A. Apresentar os
elementos do array B.

2. Desenvolva os seguintes programas com elementos de arrays unidimensionais e


bidimensionais:

a) Ler 2 arrays A e B com valores inteiros cada uma de duas dimens�es com 5
linhas e 3 colunas. Construir um array C de mesma dimens�o, a qual � formada pela
soma dos elementos do array A com os elementos do array B. Apresentar os elementos
do array C.

b) Ler um array A de uma dimens�o com 5 elementos num�ricos inteiros. Construir


um array B de duas dimens�es com 5 linhas e 3 colunas. A primeira coluna do array
B ser� formada pelos elementos do array A somados com 5, a segunda coluna ser�
formada pelo valor do c�lculo da fatorial de cada elemento correspondente do array
A e a terceira coluna dever� ser formada pelos quadrados dos elementos
correspondentes do array A. Apresentar os elementos do array B.

c) Ler 2 arrays A e B de duas dimens�es com 4 linhas e 4 colunas, que dever�o


ser formadas com valores reais. Construir um array C de mesma dimens�o, a qual �
formada pela subtra��o dos elementos do array A com os elementos do array B.
Apresentar ao valores do array C.

d) Ler 16 elementos num�ricos reais para um array A, considerando um array com


4 linhas e 4 colunas. Em seguida apresentar os valores existentes na diagonal
principal do array A.

e) Ler 9 elementos num�ricos reais para um array A, considerando um array com 3


linhas e 3 colunas. Em seguida apresentar os valores existentes na diagonal
principal do array A multiplicados por 2 e os demais elementos multiplicados por
3.

Das könnte Ihnen auch gefallen