Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FelipeRj

Exercício - Multiplo de 5

Recommended Posts

Boa Noite Pessoal

Comecei na faculdade a estudar C++. Resolvi então, praticar em casa para nao ficar totalmente boiando nas aulas hehe porém estou com dificuldade em um exercício e não consigo pensar em uma solução para ele, eu sei que pode ser bem simples mas não me vem nenhuma idéia na cabeça.

 

 

A questão é:

 

Faça uma função que determina em uma lista de n números o maior múltiplo de 5.

 

 

Quem puder me ajudar ficarei grato.

 

 

Obrigado

 

 

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Divida o problema em dois:

 

1. Maior número em um array

2. Divisibilidade

 

 

Para encontrar o maior número de um array, basta uma pesquisa no Todo Poderoso Google

 

 

Ser divisível significa que o resto da divisão é zero. Ou seja, X é divisível por 5 se X % 5 == 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... teu problema não era com haskell?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É com Java também:

http://forum.imasters.com.br/index.php?/topic/389801-exercicio/

 

Vou trancar aquele tópico.

 

Não abra vários tópicos com a mesma dúvida. Algorítmo é algorítmo, não importa a linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma opção é fazer um loop percorrendo toda a lista verificando se o número é múltiplo de 5. Se for você armazena o valor numa variável. Para cada número múltiplo de 5 você verifica se ele é maior que o número armazenado na variável. Se for você substitui. Ao final do loop você terá o resultado.

 

Se quiser você pode fazer como o Beraldo sugeriu: dividindo o problema em duas partes. Apesar de ser uma boa prática de programação, creio que não se aplica a este caso devido à simplicidade do problema. E se for pensar em performance é melhor fazer tudo de uma vez.

 

Não lembro C então vai Portugol.

// corpo do método
var maior : inteiro
maior <- 0
para indice = 1 ate tamanhoLista faca
inicio
   se lista[indice] mod 5 == 0 entao
   inicio
      se maior < lista[indice] entao
         maior <- lista[indice]
   fim se
fim para

É mais ou menos por aí. A idéia é esta. Descubra o resto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de definir maior como zero são os números negativos.

E também é necessário pensar no caso da lista não ter nenhum múltiplo de 5.

 

#include <stdio.h>

int main() {
int maior_idx = -1;
int first = 1;

int lista[] = {-34,-56,12,-9,-19,39,59,98,2,76,-183,49,389,17,187,572,342,-83,-456};

for(int i = 0; i < sizeof(lista)/sizeof(int); i++) {
if (! (lista[i]%5) ) {
	if (first) {
	maior_idx = i;
	first = !first;
	} else {
	if (lista[i] > lista[maior_idx])
	maior_idx = i;
	}
}
}
if (maior_idx == -1)
puts("Não há nenhum multiplo de 5 na lista.");
else
printf("Maior: %d\n",lista[maior_idx]);
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas não fique restrito à sintaxe do C. Mexa nos headers próprios do C++:

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;

bool multFive(int i) {
return (i%5 == 0);
}

int main() {

bool first = true;
bool has = false;
int lista[] = {-34,-56,12,-5,9,-19,39,59,98,2,76,45,-183,49,389,1755,187,572,90,342,-83,-456};

vector<int> varr(lista, lista + sizeof(lista)/sizeof(int));
vector<int>::iterator it = varr.begin();
vector<int>::iterator maior_idx;

for(; it < varr.end(); advance(it,1)) {
it = find_if(it, varr.end(), multFive);
if (it < varr.end()) {
	if (first) {
	maior_idx = it;
	first = !first;
	has = !has;
	} else {
	if (*it > *maior_idx)
	maior_idx = it;
	}
	}
}

if (has)
cout << *maior_idx;
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.