Ir ao conteúdo
  • Cadastre-se

comparações em c++


rafael.kbeca

Posts recomendados

Boa tarde galera...

bom estou com um trabalho na facul que pede pramim farzer um programinha em c++ para uma loja, a pessoa digita o valor do produto depois o desconto,

se o desconto tiver {( % ) tipo 5%} o valor q ditou vai ser descontado em porcentagem e se nao tiver o simbolo ( tipo (5)) vai ser descontado em dinheiro... bom a minha duvida seria como fazer a comparaçao se a variavel tem ou nao esse simbolo de porcentagem!!

agradeço dez de ja!!!

Link para o comentário
Compartilhar em outros sites

Eu sei java, mas acredito que a solução seja semelhante. Você pode quebrar a string que o usuário entra e verificar se possui em alguma substring o símbolo %. Se possuir você executa o desconto em porcentagem, se não for você executa o desconto em dinheiro.

Outra opção é acrescentar uma pergunta ao usuário: se ele quer fazer o desconto em porcentagem ou em dinheiro e de acordo com a resposta (S/N) você executa o trecho adequado do código.

Abs

Link para o comentário
Compartilhar em outros sites

Em java, por exemplo, você pode usar o método toCharArray(), que quebra em letras a string que o usuário entrou e armazena cada uma em uma posição de um vetor. Daí basta você pesquisar no vetor, através de um for e dentro do for usar um if para verificar se alguma posição contem '%'.

Nao é uma solução bonita mas acredito que funcione.

Eu não sei a sintaxe de C++, por isso é melhor esperar que outro usuário poste. Talvez ele tenha uma solução melhor.

Abs

Link para o comentário
Compartilhar em outros sites

Você pode pegar o desconto como string, ex: "35%" ou "35"...

daí você pega o tamanho da string, depois lê o caractere que está na posição que equivale ao tamanho dela (ou seja, o último caractere) e vê se ele é igual a "%".

O resto da string você transforma em número (existe um exemplo aqui no forum de como passar strings pra números em c++). Depois é só fazer as contas... se houver um % no final, você faz a porcentagem, senão soma o valor.

Link para o comentário
Compartilhar em outros sites

Aê Rafael, assim como o Don'tpanic e o Giovannifilipe disseram, você terá que pegar o descoto como string, e verificar se o último caractere é '%', caso seja, faça o calculo por porcentagem, caso contrário apenas subtraia o valor do desconto.Lembrando que se o tamanho da string "valor" for 2, o último carctere será "valor[1]"...

Aqui como seria usando "strlen()":


...
int i_Aux;
char str_Desconto[5];
bool b_Porcentagem = 0;
float f_Valor,f_Valor_desconto;
...
i_Aux = (strlen(str_Desconto)-1)
if(str_Desconto[i_Aux] == '%')
{
b_Porcentagem = true;
str_Desconto[i_Aux] = 0;
}
i_Valor_desconto = atof(str_Desconto);
...
if(b_Porcentagem)
{
//Calculo por subtração de porcentagem...
}else{
//calculo por subtração do desconto
}
...

Você pode usar "Strlen()" que retorna quantos caracteres tem a string passada como parametro, e "atof()" que converte string em float/real, ou criar suas próprias funções...

Porém antes de usar "atof()" lembre-se de que se a string ainda conter o '%' irá dar erro, por isso substitua o caractere '%' (se houver) pela terminação nula '\0' (ou 0).

Espero que ajude...

Ahh, e como você esta trabalhando com quantias em dinheiro seria bom deixar visível apenas duas casas após a virgula, isto em C++ é feito assim:


#include<iostream>
#include<iomanip>
int main(void){
std::cout<<std::fixed<<std::setprecision(2);
std::cout<<10.1234;
system("pause >nul");
return 0;
}

Falou.

Link para o comentário
Compartilhar em outros sites

caros amigos estava tentando isso hj !! era pra entregar hj mas nao vai dar tempo,

mas mesmo assim gostaria de saber comofaria..

O meu codigo nao esta dadno erros mas nao esta dando certo.. todos dão desconto em dinheiro com o sem o simbolo!!


#include <cstdlib>
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
float preco,total,i_desconto;
char desconto[10], x[10];
int contador;

cout<<"Insira o valor do produto: ";
cin>>preco;
cout<<"Insira o valo do desconto: ";
cin>>desconto;
contador=strlen(desconto);
i_desconto=atof(x);
if (desconto[0] == '%')
{
strncpy(x,desconto,contador-1);
total=preco-((i_desconto/preco)*100);
}else{
total=preco-i_desconto;
}

cout<<"O preço total com desconto é de "<<total<<endl;

system("PAUSE");
return 0;
}

onde esta o erro ?

Link para o comentário
Compartilhar em outros sites

Cara acredito que agora irá funcionar como esperado:


#include <iostream>
using namespace std;
int main()
{
float preco,total,i_desconto;
char desconto[10],*pstr_desconto;
cout<<"Insira o valor do produto: ";
cin>>preco;
cout<<"Insira o valo do desconto: ";
cin>>desconto;
if (desconto[0] == '%')
{
pstr_desconto = &desconto[1];
i_desconto=atof(pstr_desconto); ;
total=preco-(preco/100)*i_desconto;
}else{
i_desconto=atof(desconto);
total=preco-i_desconto;
}
cout<<"O preço total com desconto é de "<<total<<endl;
system("PAUSE");
return 0;
}

Teu (maior) erro foi ter passado a string com o desconto para a função atof() sem retirar o caractere '%'...

Porém no teu código,é necessário que o caractere '%' seja o primeiro caractere da strring, na minha opnião é mais conveniente que ele seja o utimo...

Exemplo:


#include<iostream>
#include<iomanip>
int main(void){
float val;
int i=0;
char desc[10];
bool e_porcent = false;
std::cout<<std::fixed<<std::setprecision(2);
std::cout<<"valor:\t\t";
std::cin>>val;
std::cout<<"desconto:\t";
std::cin>>desc;
i = strlen(desc)-1;
if(desc[i]=='%')
{
e_porcent = true;
desc[i] = 0;
}
if(e_porcent) std::cout<<"preco:\t\t"<<(val - ((val/100)*atof(desc)));
else std::cout<<"preco:\t\t"<<(val-atof(desc));
system("pause >nul");
return 0;
}

Espero que ajude...

Falou....

Link para o comentário
Compartilhar em outros sites

Ae deu certo sim !!! com a porcentagem em primeiro.

valeu mesmo W_Neto vou estudar as funcoes q você pois ae e q nao conheço, e essa biblioteca também...

nós tinhamos 5 exercicos pra resolver só faltava esse mais o praso era até ontem nao deu tempo .. teve um cara que fez mas ele fez diferente vou estudar todas q nao conheço..

mais uma vez muito obrigadooo!!

abraçu..:D

Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!