#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
bool igualMenor( float a, float b, float epsilon) {
if ( fabs ( a- b) < epsilon) return true ;
return a- b < 0 ;
}
bool igualMaior( float a, float b, float epsilon) {
if ( fabs ( a- b) < epsilon) return true ;
return a- b > 0 ;
}
class cVarFloat
{
private :
float fValue;
float fValueSet;
float fMax;
float fMin;
char ItemText[ 100 ] ;
public :
float GetMax( )
{
return this- > fMax;
}
float GetValue( )
{
return this- > fValue;
}
char * GetItemText( void )
{
return this- > ItemText;
}
void SetValue( float fValue)
{
this- > fValue = fValue;
}
/*
É nessa função que eu estou tendo o problema
*/
void DecValue( void )
{
if ( igualMenor( this- > fValue, this- > fMin, 0.0001 ) )
this- > fValue = this- > fMax;
else
this- > fValue - = this- > fValueSet;
}
void IncValue( void )
{
if ( igualMaior( this- > fValue, this- > fMax, 0.0001 ) )
this- > fValue = fMin;
else
this- > fValue + = fValueSet;
}
cVarFloat( const char * ItemText, float fMin, float fMax, float fValueSet, float fInitValue)
{
this- > fMin = fMin;
this- > fMax = fMax;
this- > fValueSet = fValueSet;
this- > fValue = fInitValue;
strcpy ( this- > ItemText, ItemText) ;
}
} ;
int main( )
{
// Primeiro argumento = Texto da classe
// Segundo argumento = Valor mínimo
// Terceiro argumento = Valor máximo
// Quarto argumento = Valor na qual vai aumentar/diminuir o valor da variável
// Quinto argumento = Valor inicial da variável
cVarFloat Teste( "Testando um float" , 0.0f , 0.5f , 0.1f , 0.5f ) ;
cout << fixed;
int opcao = 1 ;
while ( opcao ! = 3 )
{
cin >> opcao;
if ( opcao == 2 )
{
Teste.IncValue ( ) ;
cout << "Item texto: " << Teste.GetItemText ( ) << "\n Valor maximo do item: " << Teste.GetMax ( ) << "\n Valor atual: " << Teste.GetValue ( ) << endl << endl;
}
if ( opcao == 1 )
{
Teste.DecValue ( ) ; // problema nessa função
cout << "Item texto: " << Teste.GetItemText ( ) << "\n Valor maximo do item: " << Teste.GetMax ( ) << "\n Valor atual: " << Teste.GetValue ( ) << endl << endl;
}
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPG1hdGguaD4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBpZ3VhbE1lbm9yKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGVwc2lsb24pewogICAgaWYgKGZhYnMoYS1iKSA8IGVwc2lsb24pIHJldHVybiB0cnVlOwoKICAgIHJldHVybiBhLWIgPCAwOwp9Cgpib29sIGlndWFsTWFpb3IoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgZXBzaWxvbil7CiAgICBpZiAoZmFicyhhLWIpIDwgZXBzaWxvbikgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGEtYiA+IDA7Cn0KCmNsYXNzIGNWYXJGbG9hdAp7CnByaXZhdGU6CiAgICAgICBmbG9hdCAgICAgICAgICAgIGZWYWx1ZTsKICAgICAgIGZsb2F0ICAgICAgICAgICAgZlZhbHVlU2V0OwogICAgICAgZmxvYXQgICAgICAgICAgICBmTWF4OwogICAgICAgZmxvYXQgICAgICAgICAgICBmTWluOwogICAgICAgY2hhciAgICAgICAgICAgICBJdGVtVGV4dFsxMDBdOwpwdWJsaWM6CiAgICAgICBmbG9hdCAgICAgICAgICAgIEdldE1heCgpCiAgICAgICB7CiAgICAgICAgICAgcmV0dXJuIHRoaXMtPmZNYXg7CiAgICAgICB9CgogICAgICAgZmxvYXQgICAgICAgICAgICBHZXRWYWx1ZSgpCiAgICAgICB7CiAgICAgICAgICAgcmV0dXJuIHRoaXMtPmZWYWx1ZTsKICAgICAgIH0KCiAgICAgICBjaGFyKiAgICAgICAgICAgIEdldEl0ZW1UZXh0KHZvaWQpCiAgICAgICB7CiAgICAgICAgICAgcmV0dXJuIHRoaXMtPkl0ZW1UZXh0OwogICAgICAgfQoKICAgICAgIHZvaWQgICAgICAgICBTZXRWYWx1ZShmbG9hdCBmVmFsdWUpCiAgICAgICB7CiAgICAgICAgICAgdGhpcy0+ZlZhbHVlID0gZlZhbHVlOwogICAgICAgfQoKICAgICAgIC8qCiAgICAgICAgICAgw4kgbmVzc2EgZnVuw6fDo28gcXVlIGV1IGVzdG91IHRlbmRvIG8gcHJvYmxlbWEKICAgICAgICovCiAgICAgICB2b2lkICAgICAgICAgRGVjVmFsdWUodm9pZCkKICAgICAgIHsKICAgICAgICAgICBpZiAoaWd1YWxNZW5vcih0aGlzLT5mVmFsdWUsIHRoaXMtPmZNaW4sIDAuMDAwMSkpCiAgICAgICAgICAgICAgIHRoaXMtPmZWYWx1ZSA9IHRoaXMtPmZNYXg7CiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICB0aGlzLT5mVmFsdWUgLT0gdGhpcy0+ZlZhbHVlU2V0OwogICAgICAgfQoKICAgICAgIHZvaWQgICAgICAgICBJbmNWYWx1ZSh2b2lkKQogICAgICAgewogICAgICAgICAgIGlmIChpZ3VhbE1haW9yKHRoaXMtPmZWYWx1ZSwgdGhpcy0+Zk1heCwgMC4wMDAxKSkKICAgICAgICAgICAgICAgdGhpcy0+ZlZhbHVlID0gZk1pbjsKICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIHRoaXMtPmZWYWx1ZSArPSBmVmFsdWVTZXQ7CiAgICAgICB9CgogICAgICAgY1ZhckZsb2F0KGNvbnN0IGNoYXIqIEl0ZW1UZXh0LCBmbG9hdCBmTWluLCBmbG9hdCBmTWF4LCBmbG9hdCBmVmFsdWVTZXQsIGZsb2F0IGZJbml0VmFsdWUpCiAgICAgICB7CiAgICAgICAgICAgdGhpcy0+Zk1pbiA9IGZNaW47CiAgICAgICAgICAgdGhpcy0+Zk1heCA9IGZNYXg7CiAgICAgICAgICAgdGhpcy0+ZlZhbHVlU2V0ID0gZlZhbHVlU2V0OwogICAgICAgICAgIHRoaXMtPmZWYWx1ZSA9IGZJbml0VmFsdWU7CiAgICAgICAgICAgc3RyY3B5KHRoaXMtPkl0ZW1UZXh0LCBJdGVtVGV4dCk7CiAgICAgICB9CiAgIH07CgppbnQgbWFpbigpCnsKICAgIC8vIFByaW1laXJvIGFyZ3VtZW50byA9IFRleHRvIGRhIGNsYXNzZQogICAgLy8gU2VndW5kbyBhcmd1bWVudG8gPSBWYWxvciBtw61uaW1vCiAgICAvLyBUZXJjZWlybyBhcmd1bWVudG8gPSBWYWxvciBtw6F4aW1vCiAgICAvLyBRdWFydG8gYXJndW1lbnRvID0gVmFsb3IgbmEgcXVhbCB2YWkgYXVtZW50YXIvZGltaW51aXIgbyB2YWxvciBkYSB2YXJpw6F2ZWwKICAgIC8vIFF1aW50byBhcmd1bWVudG8gPSBWYWxvciBpbmljaWFsIGRhIHZhcmnDoXZlbAoKICAgIGNWYXJGbG9hdCBUZXN0ZSgiVGVzdGFuZG8gdW0gZmxvYXQiLCAwLjBmLCAwLjVmLCAwLjFmLCAwLjVmKTsKCgljb3V0PDxmaXhlZDsKCglpbnQgb3BjYW8gPSAxOwoKICAgIHdoaWxlIChvcGNhbyAhPSAzKQogICAgewogICAgICAgIGNpbj4+b3BjYW87CiAgICAgICAgCiAgICAgICAgaWYgKG9wY2FvID09IDIpCiAgICAgICAgewogICAgICAgICAgICBUZXN0ZS5JbmNWYWx1ZSgpOwogICAgICAgICAgICBjb3V0IDw8ICJJdGVtIHRleHRvOiAiIDw8IFRlc3RlLkdldEl0ZW1UZXh0KCkgPDwgIlxuVmFsb3IgbWF4aW1vIGRvIGl0ZW06ICIgPDwgVGVzdGUuR2V0TWF4KCkgPDwgIlxuVmFsb3IgYXR1YWw6ICIgPDwgVGVzdGUuR2V0VmFsdWUoKSA8PCBlbmRsIDw8IGVuZGw7CiAgICAgICAgfQoKICAgICAgICBpZiAob3BjYW8gPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIFRlc3RlLkRlY1ZhbHVlKCk7ICAgLy8gcHJvYmxlbWEgbmVzc2EgZnVuw6fDo28KICAgICAgICAgICAgY291dCA8PCAiSXRlbSB0ZXh0bzogIiA8PCBUZXN0ZS5HZXRJdGVtVGV4dCgpIDw8ICJcblZhbG9yIG1heGltbyBkbyBpdGVtOiAiIDw8IFRlc3RlLkdldE1heCgpIDw8ICJcblZhbG9yIGF0dWFsOiAiIDw8IFRlc3RlLkdldFZhbHVlKCkgPDwgZW5kbCA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==