Ir ao conteúdo

Armazenando N valores


gstvdesign

Posts recomendados

Postado

Boa Tarde, Este é meu primeiro post e gostaria de uma ajuda para resolver o seguinte programa.

Cofrinhos da Vó Vitória

Vó Vitória mantém, desde o nascimento dos netos Joãozinho e Zezinho, um ritual que faz a alegria

dos meninos. Ela guarda todas as moedas recebidas como troco em dois pequenos cofrinhos,

um para cada neto. Quando um dos cofrinhos fica cheio, ela chama os dois netos para um alegre

almoço, ao final do qual entrega aos garotos as moedas guardadas nos cofrinhos de cada um.

Ela sempre foi muito zelosa quanto à distribuição igualitária do troco arrecadado. Quando, por

força do valor das moedas, ela não consegue depositar a mesma quantia nos dois cofrinhos, ela

memoriza a diferença de forma a compensá-la no próximo depósito.

1. Tarefa

Vó Vitória está ficando velha e tem medo que deslizes de memória a façam cometer injustiças

com os netos, deixando de compensar as diferenças entre os cofrinhos. Sua tarefa é ajudar Vó

Vitória, escrevendo um programa de computador que indique as diferenças entre os depósitos, de

forma que ela não tenha que preocupar-se em memorizá-las.

2. Entrada

A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém

um número inteiro N, que indica o número de depósitos nos cofrinhos. As N linhas seguintes

descrevem cada uma um depósito nos cofrinhos; o depósito é indicado por dois valores inteiros J

e Z, separados por um espaço em branco, representando respectivamente os valores, em centavos,

depositados nos cofres de Joãozinho e Zezinho. O final da entrada é indicado por N = 0.

Exemplo de Entrada

3

20 25

10 5

10 10

4

0 5

12 0

0 20

17 1

0

3. Saída

Para cada conjunto de teste da entrada seu programa deve produzir um conjunto de linhas na

saída. A primeira linha deve conter um identificador do conjunto de teste, no formato “Teste n”,

onde n é numerado seqüencialmente a partir de 1. A seguir seu programa deve escrever uma linha

para cada depósito do conjunto de testes. Cada linha deve conter um inteiro que representa a diferença

(em centavos) entre o valor depositado nos cofrinhos do Joãozinho e do Zezinho. Deixe

uma linha em branco ao final de cada conjunto de teste. A grafia mostrada no

abaixo, deve ser seguida rigorosamente.

Exemplo de Saída

Teste 1

-5

0

0

Teste 2

-5

7

-13

3

(esta saída corresponde ao exemplo de entrada acima)

4. Restrições

0 £ N £ 100 (N = 0 apenas para indicar o fim da entrada)

0 £ J £ 100 (valor de cada depósito no cofre de Joãozinho)

0 £ Z £ 100 (valor de cada depósito no cofre de Zezinho)

Bom minha duvida referente a este problema é de como armazenar os valores de cada conta para que depois eu possa imprimi-los todos juntos. Lembrando que a quantidade de valores irá varias de 1 a 100.

Agradeço

Postado

Seria na linguagem c++,

Mas eu não sei como armazenar estou pesquisando sobre vetores para ver se consigo fazer alguma coisa.

Eu ainda não tenho um código pronto e não quero que façam o código apenas quero saber um método de resolução em c++.

Postado

Pra armazenar valores inteiros em um vetor:


int vetor[100];
int i = 0;

for( i = 0; i < 100; i++ )
vetor[i] = i;

O exemplo acima, vai armazenar o valor de "i" em cada posição do vetor, para os 100 elementos (0 a 99).

Postado

Bom eu consegui fazer, só mudei um pouco o que você falou.

porém se a quantidade de depositos passa de 9 ele da erro no programa.

Alguem saberia o porque?

Segue o código

#include <iostream>

#include <cstdlib>

using namespace std;

int main(){

int qdep=0, i, ntes = 0, cj, cz, difv[qdep];

for (ntes=1; ; ntes++) {

cout << "Digite a quantidade de depositos: ";

cin >> qdep;

if (qdep == 0) {

system("PAUSE");

return (0);

}

while (qdep<0 || qdep>100) {

cout << "Valor invalido, digite um valor entre 0 e 100: ";

cin >> qdep;

}

cout << endl;

difv[0] = 0;

for (i=1; i<=qdep; i++) {

cout << "Digite o deposito numero " << i << ": ";

cin >> cj; cin >> cz;

while (cj<0 || cj>100) {

cout << "Valor invalido, digite um valor entra 0 e 100 para o deposito do Joaozinho: ";

cin >> cj;

}

while (cz<0 || cz>100) {

cout << "Valor invalido, digite um valor entra 0 e 100 para o deposito do Zezinho: ";

cin >> cz;

}

difv = (cj - cz) + (difv[i-1]);

}

cout << endl << "Teste " << ntes << endl;

for (i=1; i<=qdep; i++) {

cout << difv << endl;

}

cout << endl;

}

}

Postado

gstvdesign,

O primeiro elemento do vetor ocupa a posição 0 e o último a posição (NUM_ELEMENTOS - 1). Você está fazendo i=1; i<=qdep, quando deveria ser i=0; i<qdep.

Acerte esse detalhe primeiro...

[]'s

NW

Postado

LNW,

Eu usei i=1 para que ele possa executar esta conta

difv = (cj - cz) + (difv[i-1]);

Pois ai ele soma o vetor numero 0 que no caso atribui antes o valor de 0, se eu coloco da fora que você mencionou acaba dando algum bug que o resultado da uns valores absurdos.

E referente ao problema que eu tava tendo eu troquei o valor do vetor invés de qdep que era uma variável por um valor inteiro 100 que seria o valor máximo para qdep.

Obrigado pela ajuda, agora está funcionando normalmente

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!