Ajuda em ciclo while!

4 respostas
S

Boas pessoal!

Tenho de fazer um metodo que so posso usar um ciclo while e o que se pretende é:

o metodo pretende retornar um custo, calculado atraves de um preço e de um contador (ex: cost = price*contador)

so que este preço que começa como 1.50? vai diminuindo 0.10? à medida que o contador chega a 5 isto é:

1 - 5 --> 1.5?
6 - 10 --> 1.4?
11 - 15 --> 1.30? e assim sucessivamente.

Sabendo que tenho o contador, o preço e quero retornar o custo, qual será o ciclo while que tenho de fazer para que o preço vá mudando assim?

4 Respostas

MarkKnopfler

Não vou resolver o seu exercício de faculdade, mas vou te dar uma diretriz.

  1. Saia do PC, tome um ar e depois pegue papel e lápis. Isso mesmo.
  2. Coloque o seu ciclo while em pseudocódigo assim:

(o que vem antes do while)

while ( condição )
{

...

}

(o que vem depois)

  1. Como vc preencheria as lacunas?
    Só uma dica para começar: “antes do while --> tenho que inicializar o contador, o que mais?”

Coragem!! Agora é hora de quebrar a cabeça. Assim que se aprende a programar.

S

eu tenho algo deste estilo:

int aux = 1;
double aux2 = price;

while (aux <= getCrossings()) {

        if ((aux % 5 == 0)) {
            aux2 -= SAVE;
            aux++;
        }

        aux++;
    }

    return (aux2 * getCrossings());

onde:

getCrossings é o metodo que retorna o contador, SAVE é a constante de 0.10?. Ele funciona mas há um problema, quando chega a 5 transforma o valor para 1.40 para todos os casos, em vez de fazer por exemplo: 1.55 + 1.4 faz 1.45 + 1.4, e se chegar a 10 faz com que se torne 1.3 para todos os casos e assim sucessivamente … a minha duvida é como alterar o preço e utilizalo apenas naqueles intervalos

S

PS:

sei que tenho um montao de erros, mas também ja estive mais longe do resultado que quero obter, mas há algum detalhe que nao estou a conseguir descobrir …

regis_hideki

Silva211:
eu tenho algo deste estilo:

int aux = 1;
double aux2 = price;

while (aux <= getCrossings()) {

        if ((aux % 5 == 0)) {
            aux2 -= SAVE;
            aux++;
        }

        aux++;
    }

    return (aux2 * getCrossings());

onde:

getCrossings é o metodo que retorna o contador, SAVE é a constante de 0.10?. Ele funciona mas há um problema, quando chega a 5 transforma o valor para 1.40 para todos os casos, em vez de fazer por exemplo: 1.55 + 1.4 faz 1.45 + 1.4, e se chegar a 10 faz com que se torne 1.3 para todos os casos e assim sucessivamente … a minha duvida é como alterar o preço e utilizalo apenas naqueles intervalos

Primeiramente, arruma uns nomes melhores pra essas variáveis… aux e aux2 não dá :slight_smile:

Segundo: quando entra no if, o aux é incrementado duas vezes, é isso mesmo que você quer?

Criado 18 de novembro de 2012
Ultima resposta 19 de nov. de 2012
Respostas 4
Participantes 3