• Nenhum resultado encontrado

d = h 2 +2rh, (x 1 x 2 ) 2 +(y 1 y 2 ) 2 º

N/A
N/A
Protected

Academic year: 2021

Share "d = h 2 +2rh, (x 1 x 2 ) 2 +(y 1 y 2 ) 2 º"

Copied!
21
0
0

Texto

(1)

Prof. João B. Oliveira

1 Exer í ios sequen iais

1.0 Es reva, ompileeexe uteoprograma bomdia. . Anote os omandosusadospara

ompi-lareexe utar. Emseguidaintroduza pequenoserros emseuprograma (umde ada vez!)

e veja as mensagens quesão dadas nopro esso de ompilação.

1.1 Es reva um programa que apenas imprime duas variáveis

a

e

b

, sem dar valores a elas. Vejao que a onte e.

1.2 Es reva um programa que ria alguns inteiros e oats e depois imprima os valores que

estão neles, ou que vo ê olo ou neles. Para o printf(), des ubra que fazem as opções

%d, %7d, %07d,%f, %12.8f, %2.2f, %e, %E.

1.3 Des ubra oque faz o operadorsizeof().

1.4 Des ubra quantos bits são usados no seu ompilador preferido para armazenar os tipos

short int, int, long int elong long int. Use afunção sizeof() para isso.

1.5 Es reva um programa que de lara duas variáveis inteiras

a

e

b

, dando valores a elas. Depois faça om que o programa troque os valores das variáveis, passando o valorde

a

para

b

e vi e-versa.

1.6 Es reva um programa que faz onversão de temperaturas de Fahrenheit para Celsius,

segundo a fórmula onhe ida:

C =

5

9

∗ (F − 32)

Depois de pronto, use seu programa para des obrir em que temperatura as duas es alas

oin idem. Usepapel,lápiseumpou odeálgebradoprimárioe onrmeoresultado om

seu programa. Analise um pou o antes de programar e pense nisso: sevo ê programar a

fórmula de onversão (na maioria das linguagens de programação)exatamente omo ela

foi dada a ima,o resultado da onversão será sempre zero. Expliqueo motivoe orrija.

1.7 Es reva um programa que re ebe as dimensões (em metros) de um terreno retangular

e em seguida as dimensões de uma asa (também em metros e retangular) sobre este

terreno. Em seguida al ule e apresente a área livredo terreno, em metros quadrados e

emper entagem.

1.8 Altereseuprogramadoexer í io1.7parafun ionar omuma asaredondaemumterreno

redondo.

1.9 Es revaumprogramaparaum aixadeban o,quere ebeumvalorinteiro

R

edetermina onúmero de notas de 100, 50,10,5 e1 reaisne essário para pagar aquantia

R

. Faça de formaque onúmerode notas usadoseja o menorpossível.

1.10 Altere seu programa anteriorpara que eletrabalhe om notas de 11, 5e 1 reais e a he a

formade dar tro ode 15reais.

1.11 Es reva um programa que re ebe um horário (horas, minutos, segundos) e determina

(2)

1.12 Sevo ê estiveraumaaltura

h

(emmetros)sobreoníveldomar,sua distân ia

d

(também emmetros) até ohorizonteé dada aproximadamente pelafórmula

d =

h

2

+ 2rh,

onde

r

é o raio da Terra ( er a de 6378150 metros) 1

. Es reva um programa que re ebe

uma altura

h

e determina a que distân ia está o horizonte. Para matar a uriosidade, aquiestão as alturas de alguns lo ais interessantes:

Lo al Altura

Torre de Pisa(topo) 55m

Taj Mahal (topo da úpula) 65m

Foguete Saturno 5 110 m

Torre Eiel (plataforma3) 276 m

Pãode Açú ar 394 m

World Trade Center (torre 1) 417 m

Cristo Redentor 704 m

Mont Blan 4810 m

K2 8611 m

Monte Everest 8830 m

Avião 30 a30.000 m

1.13 Es reva um programa que re ebe dois pontos no plano,

P

1

= (x

1

, y

1

)

e

P

2

= (x

2

, y

2

)

e al ula:

(a) A distân iaentre eles, dada por

d(P

1

, P

2

) =

q

(x

1

− x

2

)

2

+ (y

1

− y

2

)

2

.

(b) A in linação da reta

y = ax + b

que une estes dois pontos, dada por

a = (y

2

y

1

)/(x

2

− x

1

)

. Faça uma análise de seu programa e verique que existem ertos valores quefazem om queele apresenteum erro. Identique oerro.

1.14 Adapte seu programa do exer í io 1.13 para re eber as oordenadas dos entros de dois

ír ulos, junto om seus raios. Em seguida seu programa deve determinar se os dois

ír ulos seinterse tam ounão. Depoisadapte seu programa para não pre isar usar uma

raiz quadrada.

1.15 Vo ê resolveu dar uma força para a NASA, que deseja al ular o peso das pessoas em

diferentes planetasdosistemasolar. (Issovaiter importantes onsequen iasnaexpansão

dahumanidadepelosplanetas: osgordinhosvãopreferirplanetasondebaixemdepeso,os

magrinhosvãoquerero ontrário). Es revaumprogramaquere ebeopesodeumapessoa

(em Newtons) e al ula o novo peso nos orpos elestes, de a ordo om as onversões

gravita ionaisde adaplaneta(estas onstantesestãonormalizadasemrelaçãoà onstante

daTerra),dadas abaixo:

1

Atenção: esta fórmula é uma aproximação apenas, baseada em geometria simplese sem levarem onta

umasérie defatoresatmosféri os. Tambémper ebaquesevo ê usarasunidadesemmetrososnúmerosserão

(3)

Mer úrio 0.3649337410 Vênus 0.9041794087 Marte 0.3812436289 Lua 0.1651376146 Terra 1 Júpiter 2.6513761467 Saturno 1.1386340468 Urano 1.0693170234 Netuno 1.3506625891 Plutão 0.2252803261

Depois de fazer as onversões, imprima o quanto as pessoas pesariam se estivessem na

Terra.

2 Exer í ios om de isão

2.0 Es reva um programinhaque re ebe os oe ientes

a

,

b

e

c

de um polinmiode segundo grau

ax

2

+ bx + c

e determina quando este polinmioé iguala zero. Tome uidado para al ulartudo orretamentee avise ousuário sehouverem situaçõesde erro.

2.1 Es reva um programa que re ebe três valores e imprime estes três valores em ordem

res ente. Depois faça o mesmo para quatro valores, e veja omo  a mais ompli ado.

Oque vo ê espera para in o valores?

2.2 Vo ê pode abrir uma aderneta de poupança depositando o valor

a

no primeiro mês e o valor

b

nos meses seguintes. Supondo que a taxa de juros que vo ê re ebe pelo seu dinheiro é

j

( om

j > 1

, esperamos...) es reva um programa que listaquanto dinheiro vo êterá na ontaa adamês. A heovalor orretode

j

,depoissuponha que

a = b

efaça as ontaspra ver quantovo ê pode olo arna sua poupança todomês. Depois des ubra

quando vo ê terá um milhão.

2.3 Faça um programinhaque re ebe um ano everi a seeste ano era bissexto, imprimindo

uma mensagem. As regras (pou o onhe idas) para um ano ser bissexto são:

(a) Eledeve ser divisívelporquatro.

(b) Se for um ano terminado em00, deve ser tambémdivisívelpor 400.

2.4 Es reva um programa que re ebe as quatro notas daavaliação de um aluno (três provas

e uma nota dos trabalhos) eapresenta os seguintes resultados:

(a) A médiado aluno (supondo pesos iguais).

(b) Se a últimanota era zero, o programa assumeque esta nota ainda não existe, e diz

aoaluno qualnota ele deve tirar para ter média sete.

2.5 Na ompetiçãode mergulho olímpi a as notas de um atleta são dadas assim: oitojuízes

dão notas entre 0 e 10. Em seguida a nota mais baixa e a mais alta são des artadas e a

nota nal do atleta é dada pela média das seis notas restantes. Faça um programa que

re ebe as oitonotas orrespondentes aum atletae apresentaa sua nota nal.

2.6 Na ginásti a olímpi a as notas de uma equipe são dadas assim: seis atletas fazem seus

exer í ios e re ebem suas notas entre 0 e 10. Em seguida a nota geral da equipe é dada

pelamédia das quatro maioresnotas re ebidas. Façaum programaque re ebe seis notas

(4)

vo ê  ou en arregado de fazer a onversão de datas entre as duas ivilizações. Por

oin idên iaoanodostermopilitastemamesmaduraçãodoanoterrestre,mas édividido

de maneiradiferente: amenorunidade de tempoéoblip,quedura 3segundos terrestres.

Quarenta blips fazem um tak, que é a próxima unidade. Quinze taks fazem um salek, e

30saleks fazem um mazel. Oito mazel fazemum brat,e73brat ompletamoano inteiro.

Com estas informações, resolva:

Es reva um programa que re ebe uma data terrestre no formato dia mes hora min seg e imprimea data noformato termopilita: brat mazel salek tak blip.

Faça um segundo programa que faz a onversão ontrária, do ano termopilitapara oano terrestre.

Aproveite e onstrua uma tabelade onversões das unidades de tempotermopilitas, dizendo o quanto ada uma delas vale nas unidades terrestres.

2.8 Em outubro de 1793 a re ém instituída Repúbli a Fran esa olo ou em vigor um novo

alendário, que foi usado até 1806. Neste alendário o ano era dividido em 12 meses

de exatamente 30 dias ada um, seguidos de 5 dias sem mês (eram seis dias em anos

bissextos). Osnomes destes12 meses eram:

(1)Vendémiaire (vindima) (5)Pluvise ( huvoso) (9)Prairial (pastagem)

(2)Brumaire (nevoeiro) (6)Ventse (ventoso) (10) Messidor ( olheita)

(3)Frimaire(geada) (7)Germinal(semeadura) (11) Thermidor ( alor)

(4)Nivse (nevado) (8)Floréal (ores ên ia) (12) Fru tidor(frutuoso)

Alémdisso, adamêseradivididoemtrêsdé adasde 10dias ada,eodé imodiaera um

diadedes anso(issonãodeixouo alendáriomaisquerido,poisno alendárioantigoodia

dedes ansoa onte iaa adasetedias). Osdiaseram hamadosdePrimeiroatéDé imoe

eramdivididosem10horasde 100minutos, adaumadivididaem100segundos(nenhum

desses tinhaamesmaduração das unidades quetemoshoje). Os in o/seis dias semmês

que ompletavam o ano eram hamados de Dia da Virtude, do Gênio, do Trabalho, da

Razão, daRe ompensa e daRevolução eeram sempre feriados.

Sabendotudoisso,es revaumalgoritmoquefaza onversãodedatasentreos alendários.

3 Exer í ios om repetição

3.0 Refaça o programa do exer í io 2.2 usando repetições e veja omo a sua vida vai  ar

muito mais fá il.

3.1 Es revaum programaquelêuma sériedenúmeros,imprimindoamédiadosnúmerosque

já entraram. O programa ini ia perguntando quantos números serão digitados mas não

pode armazenar osvalores que vão hegando. Por exemplo:

Número Média

2 2

5 3.5

7 4.666

2 4

3.2 Es revaumprogramaquedeterminaomaiordivisor omumdedoisnúmeros

a

e

b

,usando o algoritmode Eu lides, que naversão abaixo deixa ovalordomaior divisor omum em

(5)

tmp = a;

a = b;

b = tmp % b;

3.3 Es reva um programinha que re ebe um valorinteiro

n

e diz se este valoré um número primo. Se não for, oprograma apresenta uma listados númerosque dividem

n

.

3.4 Ummétodosimplesdemultipli ardoisnúmerosinteiros

a

e

b

éusadonointeriordaRússia até hoje. Adaptando-o para aEra daInformáti a, oalgoritmopode ser oseguinte:

(a) Cria-seum a umulador

x

, ini ializado om zero. (b) Se

a

é ímpar,soma-se

b

em

x

.

( ) Multipli a-se

b

por 2.

(d) Divide-se

a

por 2e trun a-se, se ne essário.

(e) Repete-seos passos anteriores(ex eto o primeiro,obviamente) até que

a

seja zero. Ao nal deste algoritmo,

x

armazenará ovalorde

a ∗ b

. Suas tarefas são:

Programar oalgoritmoe onmar que elefun iona.

Expli ar porque elefun iona.

3.5 Es reva um programinha que re ebe os oe ientes de um polinmio

ax

5

+ bx

4

+ cx

3

+

dx

2

+ ex + f

e usao métododabisse ção (https://pt.wikipedia.org/wik i/M ©tod o_ da_bisse § £o) para determinarquando este polinmioé igual azero.

3.6 Es reva um algoritmo para re eber dois inteiros

n

e

b

e es reve o valor de

n

onvertido para a base

b

. Noteque

b

deve ser maior doque 1 (embora existam também onversões para bases negativas).

3.7 Es reva um programa que a haas soluçõesinteiras da equação

3X + 2Y − 7Z = 5

para valores de

X

,

Y

e

Z

entre zero e 100. Prepare-se, pois são algumas dúzias de soluções...

3.8 A Lapnia vai estabele er um sistema om apenas três tipos de moedinhas de entavos

lapões e o rei ja de idiu que não vai haver uma moeda de um entavo. Os ministros

dizemque om essade isãoalgunsvalorespodem serimpossíveisde forne er omo tro o,

evo ê deve es rever um algoritmoque re ebetrês valorespropostospara asmoedinhase

des obre quaisosvalores entre 1e100 entavosquenão podemser onstruídos om elas.

Forneça osresultados para os seguintes asos de teste:

Moedas de 2, 3 e5 entavos.

Moedas de 3, 4 e7 entavos.

Moedas de 2, 4 e7 entavos.

Moedas de 3, 7 e11 entavos.

Moedas de 2, 4 e31 entavos.

Moedas de 5, 7 e17 entavos.

Moedas de 5, 13e 17 entavos.

Moedas de 6, 9 e19 entavos.

(6)

Moedas de 7, 9 e19 entavos.

3.9 Um método para ál ulo de raizes quadradas de um número

N

já era onhe ido pelos babilniosem... bom, há muito tempo atrás. (Este método tambémé onhe ido omo

métododeHeron,um matemáti ogregoqueodes reveu 20sé ulosdepoisdosbabilnios,

perto do ano 50 DC.) Começando de um valor ini ial

k

(geralmente valendo um) os babilniosgeravamum novo valorde

k

de a ordo om a regra:

k =

k + N/k

2

.

À medidaque o pro esso é repetido, os novos valores de

k

se aproximam ada vez mais daraizde

N

. Es revaumprograma quere ebeovalorde

N

eimprimeosprimeirosdoze valores obtidos om esta fórmula, testando-os para verse eles realmentese aproximam.

3.10 Vo ê tem um pêndulo de omprimento

L

onde está pendurado um peso qualquer. O pênduloestá os ilando om um ângulo

θ(t)

eumavelo idadeangular

ω(t)

esabemosque asfunções seguem asaproximaçõesabaixo:

θ(t + ∆t) ≈ θ(t) + ∆t ∗ ω(t)

ω(t + ∆t) ≈ ω(t) − ∆t ∗ (g/L ∗ sin θ(t))

onde

g

é a onstante gravita ional. Es reva um programa que re ebe os valores de

θ(0)

e

ω(0)

, um valorpara

∆t

e depois al ulaas posições

x

e

y

dopêndulo a ada instante, até um tempo determinado.

3.11 Vo ê tem

N

0

átomos de uma substân ia radioativa,mas sabe que um átomosofre de ai-mento a ada

τ

unidades de tempo, em média. Sabendo disso, a físi a determina que o número de átomos

N(t)

aolongo dotemposegue a expressão

N(t) = N

0

∗ e

t/τ

.

Sabendo disso, es reva um programa que re ebe os valores de

N

0

e

τ

e depois al ula a quantidade de átomos a ada instante, até um tempo determinado. Aproveite e

al- ule tudo outra vez usando a aproximação abaixo para omparar os dois onjuntos de

resultados:

N(t + ∆t) ≈ N(t) − τN(t)∆t.

3.12 Seus olegasdaBiologia riaramumaba tériaque omelixo, onsumindo er ademetade

de seu peso em lixo todos os dias. (Para fa ilitar, vamos supor que uma ba téria pesa

er a de

10

−11

gramas). Seus olegas tem apenas in o dessas ba térias, mas elas se

dividem em duas todos os dias. A partir daí, es reva um programa que imprime uma

tabela a partir do primeiro dia, quando existem apenas in o ba térias, até dois meses

depois (vo ê terá de usar inteiros longos ou números de ponto utuante para isso). A

tabela deve listar o número do dia, quantas ba térias existem até o momento e quanto

lixo elas omeram naquele dia. Depois de fazer isso, adapte seu programa para estas

situações:

(a) Suponha que as ba térias vivem apenas in o dias. Neste aso, as ba térias que

morremdevem ser des ontadas do total.

(b) Faça seu programa seadaptar àsunidades de peso: de a ordo om a quantidadede

lixo onsumidaasunidades devemser es ritasemmi rogramas(

10

−6

g),miligramas

(

10

−3

g), gramas, quilogramas ou toneladas, usando a maior unidade onde o peso

seja maior do que um. Por exemplo, se for pre iso imprimir 0.0037 gramas, vo ê

(7)

3.13 Um dos métodos que determina raizes úbi as de

N

éo métodode Joãozinho, bastante semelhanteao de Heron. Ini iando om

k = 1

, ométodosegue a regra

k =

2k + N/k

2

3

.

Es revaumprogramaque al ularaizes úbi as omestealgoritmo. Adapteseuprograma

para que ele onrme os resultados!

3.14 Refaça o programa do exer í io 4.5, adaptando-o para fun ionar om datas em anos

diferentes e in luindo anos bissextos om a informação do exer í io 2.3. Use-o para

determinar háquantosdias vo ê nas eu. Teste osprogramas dos seus olegas e onrme

que todos dão os mesmosvalores.

3.15 Com aregra quevo ê pode per eber apartir das equações abaixo, es reva um programa

que al ulao valorde

S

n

para qualquer valorde

n

maior doque zero:

S

1

= 1

S

2

= 2 + 3

S

3

= 4 + 5 + 6

S

4

= 7 + 8 + 9 + 10

S

5

= 11 + 12 + 13 + 14 + 15

3.16 Uma fábri a de panelas pode ortar de 4 maneiras diferentes as hapas de aço usadas

para fazerpanelas grandes e pequenas, e essas maneirassão ilustradas aseguir:

1

2

3

4

Cada orte permite a produção de um número diferente de panelas, e o usto de ortar

a hapa 1 é de R$ 12,o usto de ortar a hapa 2 é de R$15, o usto de ortar a hapa

3 é de R$ 9 e o usto de ortar a hapa 4 é de R$ 18. Neste aso, es reva um algoritmo

queen ontraamaneiramais baratade produzirpelo menos220panelaspequenase145

panelas grandes.

3.17 Vo ê semprepode desenhar umpolígonoregulardentrode um ír uloseeletivertrês ou

mais lados, omo nagura abaixo:

(8)

Supondoqueos ír ulostemraioum,es reva umprogramaquere ebeum número

n ≥ 3

e fazas seguintes operações:

(a) Determinao omprimento de um lado do polígonode

n

lados.

(b) Determina o perímetro do polígono. Qual o valor do perímetro à medida que

n

res e?

( ) Determine a área interna do polígono. Pode ser útil saber a área de um triângulo

onde são onhe idos oslados

a

,

b

e

c

(por oin idên ia, esta fórmulafoi des oberta pelo mesmo Heron do exer í io 3.9...). Se

s = (a + b + c)/2

, então a área é dada por

A =

q

s ∗ (s − a) ∗ (s − b) ∗ (s − c).

(d) Determinea área externa dopolígono.

(e) Determinequantaslinhasseriamproduzidassetodososvérti es( antos)dopolígono

fossem ligados om os outros vérti es. Por exemplo, para os polígonos da gura

teríamos0,2 e 5retas.

4 Funções

4.0 Es reva uma função que re ebe um inteiro

n

e retorna

n/2

. Depois es reva uma função que re ebe um inteiro

n

e retorna

3n + 1

.

4.1 Es reva uma nova função que usa as funções es ritas em 4.0. A nova função re ebe

um número

n

e se ele for ímpar retorna

3n + 1

, se for par retorna

n/2

. Es reva um programinhaque re ebe um inteiro e usa esta função repetidas vezes até que o resultado

seja 1,imprimindo osnúmerosobtidos.

4.2 Adapte o programa do exer í io anterior para des obrir qual número entre 1 e 1000000

produz a sequen iamais longa até hegarem 1.

4.3 Es reva uma função que re ebe um inteiro

n

e devolve o fatorial de

n

. Use a função fatorial para es rever a função omb(n,k), que retorna o número de ombinações de

n

elementos, tomados

k

a

k

.

4.4 Es reva ummétodoquere ebeuma dataedizquantosdias jásepassaram desdeoiní io

doano.

4.5 Es revaum programaquere ebeduasdatasdomesmoano(ou seja,re ebeapenasmeses

e dias) e al ula quantos dias existem de diferença entre as duas datas. Para fa ilitar,

onsidere que oano não ébissexto.

4.6 Es reva uma função quere ebe inteiros

m

e

n

e determina o maior divisor omum de

m

e

n

. Sugestão: use o algoritmode Eu lides para isso.

4.7 Es reva um método pow(int x, int n) que re ebe x e n e al ula

x

n

. Seu método

tambémdeve fun ionar orretamentequando

n = 0

ou

n = 1

.

4.8 Es reva uma função numdiv(int n) que re ebe um inteiro

n

e retorna o número de divisores de

n

. Depois es reva uma função ehprimo(int n)que veri a se

n

é primo e imprimeuma mensagem natela dizendose éou não é.

4.9 Es reva uma função que vai es olher faixas aleatoriamente do seu player de MP3. Vo ê

quer es olher um número de faixa entre 1 e

n

e não quer que seja um número igual aos dois últimos números sorteados.

(9)

4.10 Es reva uma função que determina raizes quadradas, usando ométododoproblema 3.9.

Esta função re ebe um número

x

e retorna(evidentemente)

x

.

4.11 Es reva uma função que al ula ovalor(aproximado) de

cos(x)

, dado pelaaproximação abaixo:

cos(x) ≈ 1 −

x

2

2!

+

x

4

4!

x

6

6!

+ · · ·

Façaasoma omtrês termos,ees revaumprograminhaquere ebevaloresde

x

e al ula seu osseno, al ulandotambémafunção ossenodisponívelnasualinguagempreferidae

apresentandoadiferençaentre osresultadosobtidos. Sevo ê a har oerro grandedemais,

re al ule om mais termos e ompare outra vez. Vo ê pode a har bastante útiles rever

funções separadas para al ularpotên ias epara al ularfatoriais.

4.12 Ninguém sabe quem props a onje tura dos primos gêmeos, mas ela sugere que existe

um número innitode pares de números primosnaforma

k

,

k + 2

. Porexemplo, 17e19 são primos gêmeos, assim omo 227 e 229 e muitos (innitos?) outros pares. Usando o

onhe imento do exer í io 3.3, es reva um programa que a ha pares de números primos

gêmeos.

4.13 Es reva um método soma(int i, int j) que re ebe i e j e retorna a soma de todos

os números de i até j, mas faz isso dividindo o tre ho em duas partes e depois

soma ada parte separadamente.

4.14 Es reva um método re ursivo fatorial(int n) que al ula o fatorial de n e produz

exatamente asaída abaixo parao aso n=5:

Fatorial de 5 Fatorial de 4 Fatorial de 3 Fatorial de 2 Fatorial de 1 Fatorial de 0 Retorna 1 Retorna 1 Retorna 2 Retorna 6 Retorna 24 Retorna 120

Di a: dividaoproblemaemduaspartes: imprimirasmensagensnaordem ertaedepois

olo ar espaçosem bran oantes das mensagens.

4.15 Useseu onhe imentoadquiridonosexer í iosanterioresparaimprimirasprimeirasdoze

linhas do triângulode Pas al omo mostrado abaixo. Faça isso usando funções e não se

importe om otempo gasto.

1 1

1 2

1

1 3

3

1

1 4

6

4 1

1 5 10 10 5 1

4.16 Es reva um método re ursivo numerodeuns(int n) que re ebe um número n e retorna

(10)

4.17 Es revaumafunçãoquere ebeuminteiro

n

ea adavezquefor hamadaretornaumvalor inteiro entre 0e

n − 1.

(Nãoé difí ilinventar umafunção assim, masé ex ep ionalmente difí il fazer uma boa função onde os números não quem se repetindo de formaóbvia.)

Se vo ê quiser mais detalhes, sugere-se uma olhadanas páginas

(a) http://ar hive.n sa.uiu .e du/A pps/ CMP/ RNG/ www-rng .htm l

(b) http://www.npa .syr.edu/pr oje ts/r ando m

( ) http://www.physi s. arleto n. a / ou rses /75. 502/ slid es/j ava/ Rand omAp plet /

RandomApplet.html

4.18 A onje tura de Goldba hfoi apresentada porChristian Goldba h emuma arta a

Leo-nhard Euler noano de 1742, ediz:

Todo número par maior do que dois pode ser representado pela soma de dois

números primos.

Apesar de até hoje nãoter sido provada, a onje tura fun ionoupara todos os asos que

foram experimentados. Adapte o programa feito no exer í io 3.3, fazendo uma função

que re ebe um número

n

e retorna zero ou um para indi ar se

n

é primo. Em seguida, use estafunção emum programamaior,que re ebeum númeropar

m

etenta omprovar a onje tura para

m

.

4.19 Es reva um programa que re ebe um número

x < 1

e apresenta uma soma de frações que aproxima

x

. Por exemplo, se re ebermos

x = 0.543

uma soma de frações que pode aproximar

x

seria

x ≈ 1/2 + 1/24 + 1/750 = 0.5429999999999

Seu programa deveter algumtipode ontrole para ograu de aproximação desejadopelo

usuário.

5 Vetores/listas

5.0 Es reva um programa que re ebe 10 números inteiros, guarda-os em um vetor e depois

es reve estes númerosna ordem inversa daentrada.

5.1 Es reva um programa que re ebe 10 números inteiros, guarda-os em um vetor e depois

al ulaa média eo desvio padrão dos números dados.

5.2 Es reva um programa que re ebe uma palavra om o máximo de 20 ara teres e tro aa

posição de duplas de ara teres: aramelo vai ser transformado ema aremol.

5.3 Es reva um programa que re ebe uma linha de texto e a odi a, tro ando ada letra

pela letra seguinte no alfabeto. (No aso de apare er um z, onverta-o para a). Tome

uidado para onverter letras maiús ulas em outras letras maiús ulas e minús ulas em

minús ulas.

5.4 Ainda usandoum vetor om seu nome omo amostrade dados,es reva um programinha

quevarre ovetor eremoveasvogais. Imprimaseu novonomeneste formato ondensado,

e veja se dá para entender. Note que remover signi a retirar ompletamente, e não

quer dizer que vo ê pode substituí-las por espaçosem bran o,por exemplo.

5.5 Es reva o programa que de odi a ostextos odi ados pelo programa feitoem5.3.

5.6 Es revaumalgoritmoquere ebeumvetorde50elementose al ulaamédiadoselementos

(11)

mas impedindoque valores repetidos entrem novetor.

5.8 Es reva um algoritmo que re ebe um vetor de 20 elementos e a ha o maior e o menor

elementos dovetor, mas passando no vetor uma vez só.

5.9 Façaumafunçãoquere ebeuminteiro

n

e riaumvetor

V

,en hendoovetor ominteiros entre zero e

n.

Para geraros inteiros, use afunção que vo ê desenvolveu em4.17. Altere oalgoritmofeitoparaoexer í io5.6para al ularamédiados númerosnovetor edepois

a har o valorno vetor que está mais próximo damédia.

5.10 Es reva um algoritmo que re ebe dois vetores

A

e

B

e en ontra o maior elemento que está ontido nos dois vetores, ouimprimeuma mensagem senãohouver umelemento em

omum.

5.11 Es reva um algoritmoque re ebe um vetor

A

ontendo números positivos e negativos e imprimeos últimos4 números positivos novetor.

5.12 Crie um programa que preen he um vetor

V

om trintainteiros om valores entre zero e inquentausandoafunçãodoexer í io5.9. Emseguida,implementeduasoutrasfunções

em seu programa:

(a) Umafunção que examinao vetor e imprimeoselementosrepetidos;

(b) Umafunção que examinao vetor e imprimeoselementosque não serepetem.

Experimente seu programa,imprimindoovetor originale omparando om osresultados

das duas funções. Verique se está tudo ok.

5.13 Es revaum programaquere ebenúmerosinteirosearmazena-osnovetor

A

. Emseguida distribua os elementos de

A

entre outros dois vetores,

B

e

C,

olo ando os elementos paresem

B

eosímparesem

C

. Depoisimprima

A

,

B

e

C

everiquequeestá tudo erto. 5.14 Se vo ê a ha que o odi ador do exer í io 5.3 é muito primitivo, pode fazer um mais

avançado: em vez de substituir ada ara ter pelo ara ter queestá naposição seguinte,

faça um algoritmo que se adapta: a primeira letra é tro ada pela seguinte no alfabeto,

masasegunda étro adapelaletraqueestáduasposiçõesdepois,ater eirapelaletratrês

posições depois, e assim por diante. Desta forma, a mensagem so orro é odi ada

para tqfswxv.

5.15 Es revaoprogramaquede odi amensagens riadaspeloprograma feitoem5.14. Tente

não arran ar muitos abelos.

5.16 Es reva umprograma quere ebeuma stringde ara tereseseparaaspalavrasdastring,

imprimindo-asumaauma. Depoisadapteseuprogramaparaimprimirafrase, omas

pa-lavrasnaordem ertamases ritasde tráspara afrente: Vida longae prosperidade

se transformaemadiV agnol e edadirepsorp.

5.17 Es reva um programa que imprime as primeiras linhas do triângulo de Pas al. Cal ule

e imprima as primeiras quinze linhas uma depois da outra, mas para fazer isso vo ê só

deve usar um úni ovetor de vinte inteiros. Desta vez não use funçõese tenteser o mais

veloz possível.

5.18 Es reva um algoritmoquere ebe um vetor S de 100 ara teresque representauma linha

detexto ontendopalavrasseparadasporespaçosembran o,eimprimeaspalavrasdessa

(12)

5.19 Es reva um algoritmoque re ebe um vetor

A

de valores inteiros ereorganiza

A

de forma que os valores pares estejam nas posições ini iais de

A

, e os valores ímpares sejam olo- ados nonal. Vo ê não deve usar outrosvetores para ajudarna tarefa!

5.20 Faça um algoritmo que re ebe um vetor ordenado (ordem res ente) e reorganiza seus

elementospara que osmaioresestejam no iní ioe m dovetor, eosmenores estejam no

entro.

5.21 De aor do om uma pqsieusa de uma uinrvesriddae ignlsea, não ipomtraemqaul odrem

aslrteas de uma plravaa etãso,a ún ia sioa iprotmatneé quea piremriaeútmlia lrteas

etejasm nolgaur rteo. Orsetopdoeser umattaol bçguanaque v oê pdoeanidalersem

pobrlmea. Itso é poqrue nós não lmeos daa lrtea isladoa,mas aplravaa mooum tdoo.

Para aproveitar este efeito, es reva um algoritmo que re ebe uma linha de texto e faz a

transformação des rita a ima, ou seja, tro a algumas letras de posição dentro de ada

palavra, mas deixa as letras do iní io e do m no lugar erto. Em seguida adapte seu

algoritmopara transformarum texto inteiro, linha porlinha.

5.22 Vo ê está usando vetores para representar onjuntos de valores. Agora vo ê deseja

pro-gramarmétodos para fazer asoperaçõesmais omuns entre onjuntos:

(a) uniãode dois onjuntos

A

e

B

(b) interse ção de dois onjuntos

A

e

B

( ) diferen ade dois onjuntos

A

e

B

Es reva omo seriam os algoritmospara fazerestas operações. Pense que

A

e

B

podem ter tamanhos diferentes.

5.23 Es revaumalgoritmoquere ebe30palavraseemseguidaimprimeaspalavrasfazendo-as

aberemlinhasde 80 ara teres,indo atéa margemdireita. Seualgoritmodevees olher

quepalavras arãoemquelinhaseadi ionarbran osentreaspalavrasparaqueaslinhas

sempreterminem na posição 80.

5.24 Es revaumprogramaquere ebeum vetordenúmerosinteiroseveri asealgumnúmero

que está no vetor é a soma de outros dois números do vetor. Como seu programa se

omporta se um dos elementos do vetor for zero?

5.25 Es reva o algoritmoque re ebe duas palavras

a

e

b

e dáum destes três diagnósti os: (a) aspalavras

a

e

b

são iguais

(b) aspalavras

a

e

b

temo mesmotamanho,mas alguns ara teressão diferentes (dizer quantos)

( ) apalavra

a

in luia palavra

b

(dizer quantasvezes) (d) apalavra

b

in lui apalavra

a

(dizer quantasvezes)

5.26 Es reva um gerador de nomes exóti os. Crie um vetor de sílabas, omo `elp', `tram',

`lat', `rem', `thor', `vax', `loy', `fen', `nax' e quaisquer outras quevo ê a he interessantes

(quanto mais, melhor!). Em seguida gere palavras ao a aso, om tamanhos diferentes

(sorteie o número de sílabas). Es olha as mais interessantes e ompare om as de seus

olegas. Se quiser ser realmente sosti ado, rie vetores para sílabas ini iais, sílabas de

(13)

6.0 Es reva um algoritmo que ontrola a ompra de entradas em um inema. O algoritmo

deve representar a o upação dos assentos da platéia (40 las de 50 assentos ada), onde

ada assento pode estar reservado (mar ado om R), omprado (mar ado om C), ou

livre (mar ado om .). Vo ê deve forne er uma função que pro ura um lugar livre na

platéiae informasua posição,bem omo outrafunção que imprimeum mapadaplatéia,

mar ando os lugares de a ordo om sua situação, imprimindo em seguida os totais de

lugareso upados, reservados evagos.

6.1 Es reva oalgoritmode umafunção quere ebeasinformaçõessobreo inemadaquestão

anterior ea ha dois lugares livrespara um asal.

6.2 Es reva umafunção quere ebeasinformaçõessobre o inemadaquestão anteriorea ha

um blo o retangular de lugares livres para uma turma de es ola. Vo ê pode apresentar

dois algoritmosdiferentes dependendo do omoo pedido pode ser feito:

(a) Assuma quea turma pre isade um blo oretangular de

m × n

lugares.

(b) Assuma que a turma pre isa olo ar

n

alunos em blo o, mas não importam as dimensõesdo blo o.

6.3 Umamatriz

M

256×256

pode ser dividida em4 sub-matrizesquadradas: I II

III IV

Es revaoalgoritmoquetro aoselementosqueestãonassub-matrizesIIeIII.Emseguida,

apliqueoalgoritmore ursivamentepara visitarasquatro sub-matrizes,fazendoamesma

divisãoetro aem adaumadelas. Seualgoritmosódevepararquandoasub-matriztiver

apenas um elemento. Invente uma formade apresentaramatriz aonal dasequen iade

operações (saída grá a, ara teres, et .).

6.4 Faça uma função quere ebeuma matriz

A

5×5

edois inteiros

i

e

j

, tro andoas linhas

i

e

j

damatriz. Imprima oresultado e onrme.

6.5 Faça uma função que re ebe uma matriz

A

10×10

ea transpõe.

6.6 De lareuma matrizde ara teres

M

80×24

. Sobreesta matriz,façaasseguintes operações: (a) Ini ializetodos oselementos om espaçosem bran o.

(b) Usando a função do exer í io 4.17, es olha in o posições quaisquer da matriz e

oloqueum ara ter '.' nestas posições. Estes pontosserão hamados de sementes.

( ) Para asposições

m

ij

que ainda estão em bran o, des ubra qual a sua distân iaaté a semente

S

kl

mais próxima. A fórmula de distân ia a usar pode ser a do exer í io 1.13, mas vo ê também pode usar avariação abaixo (ou outra que vo ê deseje):

d(m

ij

, S

kl

) = max (|i − k| , |j − l|)

(d) Para ada ara ter namatriz, oloqueo número dasementeque está mais próxima

(de'1'a'5',ouuseoutros ara teressedesejar),eimprimaamatriznal. Sedesejar,

tente om outras fórmulas de distân ia, mais sementes ou matrizes maiores. Em

um exemplousando ara teres diferentes dos sugeridos a ima, obtivemos oseguinte

(14)

+\\\\////////O///////// /// ///: :::: ::: :::: :::: ::: :::: ::: :::: .... ... .... .... ... ... ++\\\\\\\////////////// /// ///: :::: ::: :::: :::: ::: :::: ::: :::. .... ... .... .... ... ... +++\\\\\\\\\\////////// /// ///: :::: ::: :::: :::: ::: :::: ::: ::.. .... ... .... .... ... ... ++++\\\\\\\\\\\\\////// /// ///: :::: ::: :::: :::: ::: :::: ::: ::.. .... ... .... .... ... ... +++++\\\\\\\O\\\\\\\\// /// ///: :::: ::: :::: :::O ::: :::: ::: :... .... ... .... .... ... ... +++++++\\\\\\\\\\\\\\\\ \\/ ///: :::: ::: :::: :::: ::: :::: ::: .... .... ... .... .... ... ... ++++++++\\\\\\\\\\\\\\\ \\\ \\:: :::: ::: :::: :::: ::: :::: ::: .... .... ... .... .... ... ... +++++++++\\\\\\\\\\\\\\ \\\ \\:: :::: ::: :::: :::: ::: :::: ::. .... .... ... .... .... ... ... ++++++++++\\\\\\\\\\\\\ \\\ \\:: :::: ::: :::: :::: ::: :::: :.. .... .... ... .... .... ... ... +++++++++++\\\\\\\\\\\\ \\\ \\:: :::: ::: :::: :::: --- ---- -.. .... .... ... .... .... ... ... ++++++++++++\\\\\\\\\\\ \\\ \\:: :::: :-- ---- ---- --- ---- -.. .... .... ... .... .... ... ... ++++++O+++++++\\\\\\\\\ \\\ \\-- ---- --- ---- ---- --- ---- -.. .... .... ... .... .... ... ... +++++++++++++++\\\\\\\\ \\\ \\-- ---- --- ---- ---- --- ---- -.. .... .... ... .... .... ... ... ++++++++++++++++\\\\\\\ \\\ \\-- ---- --- ---- ---- --- ---- -.. .... .... ... .... .... ... ... +++++++++++++++++\\\\\\ \\\ \--- ---- --- ---- ---- O-- ---- -.. .... .... ... .... .... ... ... ++++++++++++++++++\\\\\ \\\ \--- ---- --- ---- ---- --- ---- ... .... O... ... .... .... ... ... +++++++++++++++++++\\\\ \\\ \--- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... +++++++++++++++++++++\\ \\\ \--- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... ++++++++++++++++++++++\ \\\ ---- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... +++++++++++++++++++++++ \\\ ---- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... +++++++++++++++++++++++ +\\ ---- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... +++++++++++++++++++++++ ++- ---- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ... +++++++++++++++++++++++ ++- ---- ---- --- ---- ---- --- ---- ... .... .... ... .... .... ... ...

6.7 Usando a mesma matriz de ara teres do exer í io 6.6, ini ialize-a om bran os e em

seguida passe apenas um elemento

m

ij

de ada oluna

j

para 'O'. O elemento a ser alterado está na linha

i

, dada por uma das fórmulas abaixo (invente outras depois de testar estas):

i(j) = 12 + 11 ∗ sin(j/4)

i(j) = 2 + j ∗ j/300

i(j) = 12 + j ∗ sin(j/6)/9

Tome uidado om problemas de onversão entre inteiros e númerosde ponto utuante!

6.8 Usandoamesmamatrizde ara teres de6.6(oumaior,sedesejar),es revaum programa

queaini ializa om bran ose depois olo a200 elementos'x'queservem omosementes

emposições aleatórias. Emseguidaseu programa apli aas seguintes regrassobre todos

oselementosdamatriz:

(a) Se um elemento tem três vizinhos que são sementes, elevira semente.

(b) Se um elemento tem menos de dois vizinhos que são sementes, elevira bran o.

( ) Se um elemento tem quatro oumais vizinhos que são sementes, elevira bran o.

Aplique estas regras várias vezes sobre toda a matriz, imprimindo a matriz a ada vez

e veri ando omo ela evolui. Tente alterar as regras ou mudar o número de sementes

e reini ie o pro esso. Depois de implementar este programa e ver omo ele fun iona,

a esseosite http://www.math. om/studen ts/w ond ers/ life /lif e.ht ml eexperimente

uma versão maior...

6.9 Des ubra omo fun iona o jogo 2048 (http://gabriele irulli.gi thub .io/ 2048 /) e

programe-o. Depoistente mudar asregras para verse  a mais fá il.

7 Stru ts

7.0 Crie uma stru t hamada fra tion que representa uma fração. Vo ê pode es olher

entre duas alternativas:

(a) Apenas om numerador e denominador.

(15)

sobre ela:

(a) fra tion mult(fra tion a, fra tion b);

(b) fra tion add(fra tion a, fra tion b);

( ) fra tion redu e(fra tion a);

Ofun ionamentodas duas primeirasfunçõesdeve ser evidente. A ter eira função re ebe

umafraçãoeareduzatéquenumeradoredenominadornãotenhamdivisoresem omum.

(Para isso, vo ê deve a har útil ter feito o exer í io 3.2). Depois de programar as três

funções, teste-as e tenha erteza de que elas fun ionam orretamente. Existe alguma

diferençasigni ativaemguardar-seosinalseparadamenteouissonãotemimportân ia?

7.1 Use as frações do problema 7.0 e reprograme o exer í io 3.9, fazendo as ontas om as

frações que vo ê deniu. Com isto vo ê não deve mais a har floats que hegam perto

daraiz de um número,mas deve a har frações quese aproximam... a he fraçõesque se

aproximam de

2

,

3

,

5

e onrme o resultado! Já esteja alerta para o fato de que os numeradores e denominadores res em rapidamente e logoestouram a apa idade de

armazenamentodos númerosinteiros,permitindoapenas quatro ou in o iterações.

7.2 Planeje registrospara armazenar os dados de ligações telefni ase os dados de usuários

de telefones. Depoisfaçaoalgoritmopara listartodasas hamadasfeitasporumusuário

emum mês de uso do telefone. Não esqueça de justi ar quaisquer de isõesimportantes

que vo ê tenha tomadoao planejaros registros.

7.3 Crie um registro que representa os dados de um terreno de forma retangular. Depois

de es olher omo representar o terreno, de lare um vetor de 100 terrenos e apresente

algoritmospara:

(a) Listar osterrenos quesão quadrados.

(b) En ontrar o terrenode maior perímetro.

( ) En ontrar o terrenoque menos seassemelha a um quadrado.

7.4 Crie uma stru t que representaum planetaperten enteà Federação, ontendo:

(a) Nome doplaneta,raio (em km),massa (em kg).

(b) Númerode satélites,número de habitantes.

( ) Quadrante e setor dagaláxia.

7.5 Usando osdados do exer í ioanterior, rie vinteplanetas eapresente algoritmospara:

(a) DeterminaronúmerodehabitantesnoquadranteGamma(o ódigoparaoquadrante

Gammaé 6).

(b) Determinarqual osetor mais populoso dagaláxia.

( ) En ontrar o maior planetade ada quadrante.

7.6 Crie uma stru t que representauma nave daFederação, ontendo:

(a) Nome danave, lasse e tamanho(toneladas).

(b) Númerode tripulantes e de naves auxiliares.

(16)

7.7 Es reva um programa que ria vinte planetas e dezesseis naves. Preen ha os dados das

naves e planetas om o gerador de nomes 5.26 feito anteriormente, e oloque números

ao a aso para os valores adequados. Depois de tudo isso seu programa deve pedir um

quadrante e um setor da galáxia, imprimindo um relatório om os dados dos planetas e

das naves nolo al.

7.8 Coloquedozenavesromulanasemseu programa. Emita um relatóriosenavesromulanas

e naves da Federação estiverem na mesma posição. No relatório, diga quais naves se

en ontraram e qual delas foi destruída. Faça om que sobre apenas uma nave em ada

quadrante e tome uidado poispodem havermais de duas naves.

7.9 Adapte seu programa para pedir o nome de uma nave e de um planeta. Redire ione a

naveparaoplaneta,masnaoesqueçade veri arseanaveeoplanetarealmenteexistem!

Veriquese háromulanos outra vez e deixe outra batalhaa onte er.

7.10 Crie portões espa iais: in lua uma opção na qual é pedido o nome de uma nave. Esta

nave entra em um portão e sai em outro lugar da galáxia. Seu programa deve dizer a

posição antiga e a nova, veri ando os romulanos outra vez. Não esqueça de veri ar se

vo ê aiu nomesmo lugarde onde saiu, istonão pode a onte er!

7.11 Crie uma stru t que representaos dados de um submarino nu lear:

(a) Nome e lasse.

(b) Deslo amento (toneladas)e tripulantes.

( ) Númerode torpedos (entre 10e 16).

(d) Posição (dois inteiros)

Coloque doze submarinos do time A e doze do time B em um tabuleiro de

12 × 12

posições tomando uidado para que não haja dois submarinos na mesma posição. Em

seguida deixe queeles sedestruam emrodadas: ada submarinoque ainda tem munição

atiraumtorpedoqueatingealgumaoutraposiçãodotabuleiro,aniquilandooquehouver

lá (mesmo que seja do mesmo time). Em aso de destruição, um relatório é emitido.

Quando ninguémmais tivertorpedos, emita um relatório om a situaçãonal.

7.12 Altere o jogo doexer í io 7.11 mostrando na tela otabuleiro e onrmando visualmente

o queestá a onte endo.

8 Problemas extras

Algunsdos problemas queestãonestaseçãopodemter soluçõesbastantelentasseusarem

ape-nas laços emais nenhum armazenamento. Muitas vezes existemsoluçõesmuito mais e ientes

seforemusadassequen ias,portantováriosdestesexer í iospodemserfeitosduas vezes,uma

om laços e depois usando-se sequen ias para a eleração.

8.1 Vendo virado

Emuma al uladora,quando olhamos omo visorde abeçapara baixoalgunsnúmerosainda

podem ser lidos (só que om outros valores). Por exemplo, 1995 vira 5661. O quinto número

quepode ser lidode abeça parabaixoé8,eodé imo-quintoé21,quepassa avaler12quando

é vistode abeça para baixo. Vo ê deve responder uma pergunta bási a:

Qualomilionésimonúmeroquepodeser re onhe ido omooutronúmero,quandoévisto de abeça para baixo?

(17)

Vo ê deveresolver um problema simples: para um número inteiro

n

, um sequen iamentode

n

éumasequen ia de números onse utivos

i

,

i + 1

,

i + 2

,...,

i + j

ondeasoma de todos estes números éigual a

n

. Traduzindo temos

n = i + (i + 1) + (i + 2) + (i + 3) + · · · + (i + j).

Depois de saber disso, vo ê pode veri ar por si mesmo que muitos números tem mais de

umsequen iamento. Porexemplo,onúmero15temquatro sequen iamentos(de omprimentos

5, 3,2 e1):

15 = 1 + 2 + 3 + 4 + 5

= 4 + 5 + 6

= 7 + 8

= 15

Agora, om todas estas importantes informações,vo ê deveresolverum problema bastante

simples: des obrir qualo número entre um e um milhão tem mais sequen iamentos.

8.3 Os dez milhões de peda inhos

Vo êdevedeterminarqualnúmeroentre1.000.000e1.500.000podeserrepresentadomaisvezes

omo oproduto de três inteiros positivos maioresdoque um (não ne essariamentediferentes).

Na ontabilização a ordem dos inteiros não é importante. Assim,

a ∗ b ∗ c

equivale a

b ∗ a ∗ c

. Por exemplo, nestas ondições existem 114 triplas de números que quando são multipli ados

resultamem 1.000.000.

8.4 Os números de Frodo

OsnúmerosdeFrodosãodenidosdeformabastantesimples: onúmerodeFrodo

F (n)

para

n >

1

,é omenornúmero positivoque pode ser dividido portodos os valoresde 1 a

n

. Conhe endo esta denição, seu trabalho é determinar um algoritmo para a har os números de Frodo e

apresentar uma tabela destes números até

n = 40

. Vo ê também deve levar em onta que os números res em depressa. Para

n > 22

, será ne essário usar números de 64 bits para representaro resultado orreto.

8.5 Fabri ando números

Seja dado um número

a = 1

. Começando om

a

, outros números podem ser produzidos seguindo-se asduas regras abaixo:

8.0 Multipli ando por2 um número já produzido.

8.1 Dividindo por 3 um número já produzido e des artando a parte fra ionária (ou seja,

fazendo uma divisão inteira).

Por exemplo, seguindo su essivamente estas regras podemoster

10 = 1 × 2 × 2 × 2 × 2 × 2 ÷ 3.

Seu problemaéproduzirtodos osinteirosde 2a100 seguindoapenas asregrasa ima. Para

asaída,todososnúmerosdevemserapresentadosemordem res ente, apresentando-sequantas

(18)

Os resultados possíveis não são úni os, todos os inteiros podem ser obtidos em mais de uma

forma. Por exemplo, 3e 40podem ser obtidos pelomenos nas duas formas abaixo:

3 = 2

5

÷ 3

2

= 2

119

÷ 3

74

40 = 2

64

÷ 3

37

= 2

83

÷ 3

39

,

portantodeve-se dar preferên ia aos valores menores. Algumas regrase onsiderações:

8.2 É permitido usar inteiros espe iais, omo long, BigInt e outras implementações de

in-teiros extra-longos.

8.3 Não é permitido usar float, real e double. Funções omo pow(x,y) também são

inválidas.

8.4 Se um número não pre isaser divididopor3, pode-se apresentar 3^0nasaída.

8.6 Vo ê e as mega orporações!

Os diretores de uma grande orporação resolveram promover uma nova políti a de estímulo

aos fun ionários. Esta políti aresume-se emdar aos fun ionáriosalguns minutos pordia para

respirar, tomar afé, apontar os lápis e olo ar fofo as em dia. Infelizmente, há problemas

para de idir exatamenteos horáriosem queisso deve ser feito. Umdos gerentes dáa seguinte

sugestão: Podemos usar um relógio de três ponteiros (horas, minutos e segundos) e ada vez

queostrêsponteirosformaremumaestrela(formadaportrês pontasa120grausumadaoutra:

),teremosum dessesminutosde on entração! Eles arãoespalhadospelodiaeteremos

minutos de folga!! Claro que o gerente é um idiota que deseja impressionar, mas a diretoria

engoliue sobrou pra vo ê resolver o resto doproblema.

É importantequevo ê onheçaos relógiosdafábri apara saber omoresolvero problema:

O ponteiro dos segundos não se move ontinuamente entre as mar ações, mas dá saltos a adasegundo;

O ponteiro das horas move-se tambémaos saltos entre asmar ações de minutos.

O ponteiro dos minutos tambémse moveemsaltos entre osminutos. Vo ê deveforne er as seguintes informações:

8.5 Ototal de vezes em que estes minutos de des anso a onte em emum dia;

8.6 Umalistagem deles noformato hh:mm:ss.

8.7 Omaior intervaloen ontrado entre dois destes minutos.

Não esqueça de que as estrelas podem ser en ontradas em qualquer posição, podendo estar

rota ionadas, de abeça para baixo, et . Também serão riados os super-minutos, quando a

estrela está exatamente em posição verti al. Nestes asos a folga é de in o minutos. Para

(19)

Depois de ir num aixa automáti o e re eber vinte reais em moedinhas de 10 e 25 entavos,

vo ê se irrita om os ban os que deixam isso a onte er e resolve es rever um programa para

al ularsempre o menornúmero de moedinhaspara forne er uma erta quantia. (Seu plano é

venderoprogramaparaosban osdepois,porumafortuna.). Comesta intenção,seu programa

deve leros dados de entrada abaixo:

8.8 Onúmero

n

de valores de moedas existentes.

8.9 Osvalores

a

1

, a

2

, . . . , a

n

destasmoedasem entavos. Istoéne essárioparaquevo êpossa exportar seu programa para vários países om moedas diferentes apreços exorbitantes.

8.10 A quantia

m

aser forne ida om estas moedas.

Seu programa deve ler estes dados e determinar o menor número de moedas ne essário para

formar

m

, imprimindo este número e quaisas moedas usadas. Porexemplo,se quiséssemos

forne eroitentaesete

enta-vos om as moedas

existen-tes hoje no Brasil, teríamos

a seguinte entrada: 6 1 5 10 25 50 100 87 Se quiséssemos R$1.23 o

ar-quivo onteria a linha 123

ao nal e para 87 entavos

a saída seria

5 moedas

1x50 1x25 1x10 2x1

Emboraesteproblemapossa

pare er simples e

des ompli- ado, sugere-se os seguintes

testes bási os: 3 3 4 4 1 3 2 3 5 7 3 6 11 12 5 9 15 14 11 10 17 11 8.8 As moedinhas

ComoassessordogovernodaLapnia,vo êdeveajudarnareformadosistemamonetáriolo al.

O rei daLapnia deseja estabele er um sistema om apenas três valores para suas moedinhas

de entavoslapões. Aes olhadosvalores paraasmoedasaindavaiser feita,mas numaatitude

auda iosaoreijade idiuquenãovaihaverumamoedadeum entavo. Oministrodasnanças

já disse que om essa de isãoalguns valores podem ser impossíveisde forne er omo tro o, eo

rei hamouvo ê para desempatara questão.

Seu problema édeterminar, re ebendo omo entrada três valores propostos para as

moedi-nhas,quaisosvaloresentre1e100 entavosquenãopodemser onstruídos om estasmoedas.

Faça uma des rição uidadosa de seu algoritmoeforneça os resultados paraos seguintes asos

de teste, já propostos pelo rei:

Moedas de 2, 3e 5 entavos.

Moedas de 3, 4e 7 entavos.

Moedas de 2, 4e 7 entavos.

Moedas de 3, 7e 11 entavos.

Moedas de 2, 4e 31 entavos.

Moedas de 5,7 e17 entavos.

Moedas de 5,13e 17 entavos.

Moedas de 6,9 e19 entavos.

Moedas de 7,9 e19 entavos.

(20)

9.1 O que tem nos dois?

Es reva um algoritmo que re ebe duas sequen ias

A

e

B

representando onjuntos de

m

e

n

elementosrespe tivamentee emseguidadetermina preen he uma sequen ia

C

quedeve onter a interse ção dos onjuntos, ou seja, os elementos que estão em

A

e em

B

. Lembre que onjuntos não tem ordem e não tem repetições de elementos. Faça o algoritmo para duas

situações diferentes:

Se as sequen ias

A

e

B

não tem ordemnenhuma e

C

tambémnão pre isa ser ordenado.

Se as sequen ias

A

e

B

estão ordenados de forma res ente e

C

também pre isa ser ordenado de forma res ente.

Depois analise odesempenho dos dois algoritmos. O segundo deveser bemmais rápido.

9.2 O maior pedaço

Suponhaquevo êtemumasequen iadeinteiros

A = (a

1

, . . . , a

n

)

ontendonúmerospositivose negativos. Es revao algoritmoqueexaminaesta sequen iaea haotre hoque produz omaior

valorquandooselementosdaqueletre hosãosomados. Porexemplo,se

A = (2, −3, 4, 5, −2, 3)

o tre ho de maior soma vai doelemento 4até oelemento 3.

9.3 A sequen ia todordenada

Determine o que faz o algoritmo abaixo ao re eber uma lista om vários elementos,

possivel-menterepetidos:

função mistery(lista sequen ia)

lista less, equal, great;

if (length(sequen ia) == 1) retorna sequen ia;

es olha um elemento XX de sequen ia;

para ada x na sequen ia

se x < XX então append x em less

se x = XX então append x em equal

se x > XX então append x em great

retorna on atena(mistery(less), equal, mistery(great));

Perguntaextra: oque a onte e se tro armos aúltima linha por

retorna on atena(mistery(less), mistery(great)) ?

Já que a mudança a ima não deve ter feito o que vo ê a hou que fazia, então omo se deve

mudar o algoritmopara deixar apenas uma ópia de ada elemento?

9.4 Alfabona i

Seja aseguintedenição da função

F

n

,que serve para produzir strings:

F

n

=

A,

n = 0

B,

n = 1

F

n−1

+ F

n−2,

n ≥ 2,

onde o sinal

+

representa a on atenação de strings. Sabemos que na práti a

n ≤ 30

. Seu problemaédeterminarquantas vezes umastring

S

(que éforne ida omaté 20 ara teres)está

(21)

repetida dentro de uma determinada string

F

n

. Porexemplo, quantas vezes a string

S = AB

está ontida em

F

4

? E em

F

12

?

Para ajudar, aqui estão os

primeirosvalores de

F

n

:

F

0

= A

F

1

= B

F

2

= BA

F

3

= BAB

F

4

= BABBA

F

5

= BABBABAB

Alguns testes:

n

S = ABA

S = ABB

S = B

S = BBB

S = BAB

5 1 1 5 0 3

10 12 21 55 0 33

15 144 232 610 0 377

30 196417 317811 832040 0 514228

9.5 O ordenador

Uma maneira simples de ordenar uma sequen ia

A

que tem

n

elementos é dividi-la em duas sequen iasmenores(

A

1

e

A

2

, om

⌊n/2⌋

e

⌈n/2⌉

elementosrespe tivamente). Depoisdeordenar as duas sequen ias re ursivamente (a he o ritério de parada que deve ser usado!) podemos

unir as duas sequen ias e re ompor a sequen ia maior, retornando-o ao usuário. Es reva um

Referências

Documentos relacionados

O presente trabalho aplicará a simulação computacional em Simulink através do modelamento dinâmico de um dos componentes do chiller de absorção de simples efeito - o

• Se bem que a utilização de porta-pilhas com pilhas AA padrão, alcalinas ou recarregáveis, é suficiente para um uso convencional das suas luvas aquecedo- ras em climas

Nesse contexto, objetivo deste artigo é classificar alternativas de sistemas de janela estáticos e dinâmicos quanto a indicadores de desempenho de iluminação natural

Os riscos para a estabilidade financeira global diminuíram em 2017 face ao ano anterior. De acordo com o FMI, a tendência de redução dos riscos deveu-se essencialmente às

Tem menos dentes que o disco de corte transversal para um corte mais rápido.

Doutor Honoris Causa pela Universidade Federal de Sergipe, Brasil, 2014; Título de Cidadão de Porto Alegre, concedido pela Câmara Municipal de Porto Alegre,

Por meio desta revisão podemos concluir que o método da utilização do HIIT no programa de treinamento de crianças e adolescentes para o tratamento e a prevenção

cocoamidopropil betaina hidrogenada Dados não disponíveis aminas, C12-14 (numeração par)- alquildimetil, N-óxidos Dados não disponíveis alquil poliglucoside Dados não