C++ - Pobrema, ajuda!

Autor Mensagem
-Toolbar-
Veterano
# mar/10


Postei no tópico e ninguém deu atenção.. =/

To fazendo uma lista de exercícios (60).

Tem um bem básico aqui mas...

Pqp. Agora fiquei mó confuso em fazer isso aqui.. =/

Foda é que é bem simples mas eu não consigo! ¬¬

"Dado o preço de um produto (valor inteiro), elaborar um programa para verificar qual a menor quantidade de notas necessárias para efetuar o pagamento da compra. Considerar os valores das notas atuais (1, 2, 5, 10, 20, 50 e 100). Utilizar os operadores % (resto) e / (divisão inteira) para a solução deste problema."

=l

quem estiver disposto em ajudar, valeu!

Eric Clapton
Veterano
# mar/10
· votar


-Toolbar-

Se fosse com laranjas eu saberia!!!

Mas passa um mais difícil aee!!

=)

Sam Keat
Veterano
# mar/10
· votar


vixxxx

Simonetti
Veterano
# mar/10
· votar


Cara, se é pra vc aprender, porque não parar para pensar um pouco?

Este aí, aliás, é velho e uma fuçada legal no Google te dá o programa pronto. Só que ao meu ver vale muito mais a pena vc quebrar a cabeça um pouco. Só assim se aprende.

Se vc quiser ser bom no que está pagando para aprender, tente sozinho. Senão, seja só mais um que no primeiro sinal de dificuldade recorre ao Google (isto é roubar!), ao inves de tentar por conta própria, aprender a pensar.

Vale a pena fazer, nem tanto pelo C++, mas pelo algoritmo.

Tripa-Seca
Veterano
# mar/10
· votar


Simonetti

ÇUMEMO!

guschard
Veterano
# mar/10
· votar


-Toolbar-
bom... não manjo C++ mas a lógica eh +- assim

a = *int* Preço/100 "conta qtas notas d 100 precisa... o comando int eh do VB... no C++ eu nao sei como faz pra pegar soh a parte inteira da divisão... se vira ai pra achar... uahauhauhahuauhauh

Preço = Preço%100 "o novo preço passa o que falta pagar, descontada a parte paga com notas de 100

b = *int* Preço/50 "conta qtas notas d 50 precisa
e assim vai até acabar

notas = a+b+c+...

guschard
Veterano
# mar/10
· votar


e essa lógica, aparentemente, eh bem tosca... devem ter jeitos bem melhores de fazer...

ZakkWyldeEMG
Veterano
# mar/10
· votar


#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
unsigned long int GRANA, NOTAS, a, b, c, d, e, f, g;
cout << "\nInforme a grana para o pagamento: ";
cin >> GRANA;
a = GRANA/100;
GRANA = GRANA%100;
b = GRANA/50;
GRANA = GRANA%50;
c = GRANA/20;
GRANA = GRANA%20;
d = GRANA/10;
GRANA = GRANA%10;
e = GRANA/5;
GRANA = GRANA%5;
f = GRANA/2;
GRANA = GRANA%2;
g = GRANA/1;
GRANA = GRANA%1;
NOTAS = a + b + c + d + e + f + g;
cout << "\nNumero de notas: " << NOTAS << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

guschard

testei aqui e funcionou

LeandroP
Moderador
# mar/10
· votar


Tirando a parte da linguagem, é um exercício até gostoso de fazer.

Lembro quando comecei aprender programação (Pascal, em 1989), nós fazíamos usando os comando com palavras em português. Ao invés de usar "If', usávamos o "Se" mesmo. O mesmo com "Then", "Else", "Go To", etc. O que importava era o desenvolvimento das fórmulas, depois a gente passava tudo pra linguagem de programação com os seus respectivos comandos (isso porque tinha um pouco de Basic também).

Como disse o Simonetti, pense mais um pouco.

ZakkWyldeEMG
Veterano
# mar/10
· votar


Agora o guras Toolbar tem que pensar numa fórmula esperta pra deixar a solução mais "elegante"

guschard
Veterano
# mar/10
· votar


Tirando a parte da linguagem, é um exercício até gostoso de fazer.

Lembro quando comecei aprender programação (Pascal, em 1989), nós fazíamos usando os comando com palavras em português. Ao invés de usar "If', usávamos o "Se" mesmo. O mesmo com "Then", "Else", "Go To", etc. O que importava era o desenvolvimento das fórmulas, depois a gente passava tudo pra linguagem de programação com os seus respectivos comandos (isso porque tinha um pouco de Basic também).


exatamente... tbm gosto de criar algoritmos, mesmo que seja apenas a parte lógica... já na parte de programação eu sou bem ruinzinho... uhauhauhauhauhahuahuuhaauhhua

ZakkWyldeEMG
eh, entao... no C++ as variaveis inteiras pegam soh a parte inteira da divisao ou sao arredondadas?? por exemplo, c eu declaro uma variavel inteira, e ela tem o valor d 2.6, ela vai pra 2 ou pra 3???

de qq jeito, realmente o -Toolbar- tem q achar uma forma mais elegante de fazer isso... porque ta bem porco
huahauhahuauhauhhuahuuhauhaua

-Toolbar-
Veterano
# mar/10
· votar


Simonetti
Nem é por isso. É que eu fiquei quebrando a cabeça pra fazer. Quero aprender a fazer assim, no livro não explica. Talvez eu tendo um exemplo eu consiga entender e fazer outros.

O meu propósito é aprender. =/

-Toolbar-
Veterano
# mar/10
· votar


ZakkWyldeEMG
Valeu cara. Mesmo olhando isso ae eu não consigo entender o algoritmo. Vo dar uma olhada com calma depois, e eu vou na monitoria pra ver se alguém me explica se eu não entender.

Mas valeu cara. Brigadão!

ZakkWyldeEMG
Veterano
# mar/10 · Editado por: ZakkWyldeEMG
· votar


guschard
eh, entao... no C++ as variaveis inteiras pegam soh a parte inteira da divisao ou sao arredondadas?? por exemplo, c eu declaro uma variavel inteira, e ela tem o valor d 2.6, ela vai pra 2 ou pra 3???


só a parte inteira

-Toolbar-

A ideia pra entender o algoritmo é a seguinte: existem duas operações no mesmo - divisão e módulo

A divisão pega a parte inteira do resultado e acumula nas variáveis correspondentes a cada nota, ou seja, em "a", "b", "c", "d", "e", "f" e "g"

O módulo pega o resto da divisão de GRANA pela nota correspondente e atribui à própria variável GRANA seu valor para dar continuidade ao processamento das notas de valor mais baixo.

("processamento" é o que está sublinhado)

No final, a variável NOTAS acumula as notas computadas pela divisão e o cout mostra esse resultado.

=)

Black Fire
Gato OT 2011
# mar/10
· votar


O algoritmo diz que você vai tentar dividir pela maior nota possível, vai arredondar o valor e depois vai dividir o resto pela segunda maior nota e assim sucessivamente.

Tipo, o valor é 5060.

Ele vai dividir por 100, o valor vai ser 50 e vai sobrar 60(50 * 100 = 5000 + 60 = 5060), em seguida o programa vai tentar a próxima nota da sequencia, que é 50, 60/50 = 1 e sobra 10, e assim por diante.

ZakkWyldeEMG
Veterano
# mar/10
· votar


Mesmo jeito, porém com vetores:

---------------------------------------------------------------------- --------------

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
unsigned int GRANA, NOTAS;
unsigned int N[7] = {100,50,20,10,5,2,1};
unsigned int M[7] = {0};
unsigned int i;
cout << "\nInforme a grana para o pagamento: ";
cin >> GRANA;
NOTAS = 0;
for (i = 0; i <= 6; i++)
{
M[i] = GRANA/(N[i]);
GRANA = GRANA%(N[i]);
NOTAS = NOTAS + M[i];
}
cout << "\nNumero de notas: " << NOTAS << "\n" << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

russobass
Veterano
# mar/10
· votar


ZakkWyldeEMG

Faz em matriz esparsa ???

Palermo
Veterano
# mar/10
· votar


-Toolbar-
Cara, se você não conseguir resolver este algoritimo sozinho desista da sua faculdade.
Isso ai é básico. Alias, foi 1 dos exercícios usados na prova de seleção aqui da empresa (foi o mais fácil).

Concordo com tudo que o Simonetti falou. Você tem que quebrar a cabeça, não vai adiantar em nada pegar pronto.
Se você não aprender isso agora, desista da faculdade. Tenho vários colegas que não aprenderam e agora tão se lascando na faculdade rodando em tudo.

Acredito que você deve sim pedir ajuda quando precisar, porém peça apenas "O que devo fazer?" e não "Como devo fazer?".

Gan
Veterano
# mar/10
· votar


se for um exercício de análise de algoritmos, deduz o algoritmo por indução forte nas notas disponíveis

_FrEd_
Veterano
# mar/10
· votar


-Toolbar-

int main()
{
unsigned long int GRANA, NOTAS, a, b, c, d, e, f, g;
cout << "\nInforme a grana para o pagamento: ";
cin >> GRANA;
a = GRANA/100;
GRANA = GRANA%100;
b = GRANA/50;
GRANA = GRANA%50;
c = GRANA/20;
GRANA = GRANA%20;
d = GRANA/10;
GRANA = GRANA%10;
e = GRANA/5;
GRANA = GRANA%5;
f = GRANA/2;
GRANA = GRANA%2;
g = GRANA/1;
GRANA = GRANA%1;
NOTAS = a + b + c + d + e + f + g;
cout << "\nNumero de notas: " << NOTAS << endl;
system("PAUSE");
return EXIT_SUCCESS;
}


A lógica é começar com as notas de maior valor até as de menor valor pra conseguir o menor numero de notas possiveis.

Vamos supor que o valor seja 1251 reais.

Começando com as notas de 100, fazemos 1251/100, mas trabalhando com valores inteiros.

Teremos 12x100 = 1200, e passamaos o valor original para o resto da divisao, que sera 51. O valor 12 é armazenado como a, sendo o numero de notas de 100.

Agora com 51 fazemos o mesmo passo para a proxima nota, a de 50 reais. Vamos ter 50x1 = 50 e o resto é 1 real. Armazenamos o 1 como b, sendo o numero de notas de 50 necessarias.

Agora como sobrou 1 real, para as notas de 20, 10 e 5 a divisao dará 0, ou seja, não serão usadas essas notas ate vc chegar na de 1 real.

Depois eh soh retornar a soma de a+b+c... que será a quantidade total de notas que vc vai precisar.

LeD_HaleN
Veterano
# mar/10
· votar


nossa, nesse fórum só tem programador ._.

cao fofo
Veterano
# mar/10
· votar


c++ é coisa de frango
basic e pascal é muito mais true

Simonetti
Veterano
# mar/10
· votar


cao fofo
basic e pascal é muito mais true

Tem coisas muito, mas muito mais true que Basic e Pascal:

Logo e Lisp.

Diz a lenda que Chuck Norris criou um sistema operacional compativel com Windows x64 e capaz de fazer o SQL Server 2008 64-bits rodar com excelente performance.... em um 386! Só que ele fez tudo isto usando LOGO!

izzystradlin
Veterano
# mar/10
· votar


qnota100 := (pvalor - (pvalor % 100))/100;
qnota50 := ((pvalor % 100) - (pvalor % 50)) /50;
qnota10 := ((pvalor % 50) - (pvalor % 10)) /10;
qnota5 := ((pvalor % 10) - (pvalor % 5)) /5;
qnota1 := ((pvalor % 5) - (pvalor % 1)) /1;

Palermo
Veterano
# mar/10
· votar


cao fofo
c++ é coisa de frango
basic e pascal é muito mais true


Volta pra casinha.

izzystradlin
Veterano
# mar/10
· votar


Palermo
ele foi irônico..


os cães nao sabem nem programar..

Palermo
Veterano
# mar/10
· votar


izzystradlin
os cães nao sabem nem programar..

Poisé... Acho que ele só disfarça...

izzystradlin
Veterano
# mar/10
· votar


Palermo

deve tá programando access - mala direta do word...uhaehuae

Koisa
Veterano
# mar/10
· votar


-Toolbar-

Você faz sistemas??
Em que ano você esta??
Qual faculdade??


Abrass..

Koisa
Veterano
# mar/10
· votar


upa

Enviar sua resposta para este assunto
        Tablatura   
Responder tópico na versão original
 

Tópicos relacionados a C++ - Pobrema, ajuda!