hur kollar man om en text är ett decimaltal och säger till att det bara får skrivas in heltal? Det beror på vilken metod du använder. Du bör använda cin, och då räcker det att du skapar en int och skriver till den. (om du skulle använda C och kör med scanf så gäller samma sak där). Det går också att använda modulus (%). Så här: Jag har inte kollat, men skall inte % bara vara definierat för heltalstyper? "Jag har inte kollat, men skall inte % bara vara definierat för heltalstyper?"om decimaltal
\\MickeSv: om decimaltal
Vill du att användaren skall kunna skriva in ett decimaltal och bli tillsagd kan du använda dig av principen:
double HanSkriverIn;
int DetDuHar;
cin >> HanSkriverIn;
//Basic C++-stil:
DetDuHar = int(HanSkriverIn);
//eller C-stil:
DetDuHar = (int)HanSkriverIn;
//eller rekommenderad C++-stil:
DetDuHar = static_cast<int> HanSkriverIn;
while(DetDuHar!=HanSkriverIn)
{
cout << "skriv heltal!\n";
cin >> HanSkriverIn;
//Gör en av de tre ovanstående metoderna
}
/Niklas JanssonSv: om decimaltal
if( num % 1 == 0)
// Har inga decimaler
else
// Har decimaler
Annars kan man också göra så här:
bool FloatHasDecimals( float fOne )
{
char cOne[512];
memset( cOne, 0, sizeof(char) * 512 );
sprintf( fOne, "%d", fOne );
for( int i = 0; i < strlen(cOne; i++ )
{
if( cOne[i] == '.' )
return True;
}
return false;
}
Men det är väl lite väl onödigt.Sv: om decimaltal
Oavsett om så är fallet eller ej så är de olika typecasten rekommenderade över en icke standard-metod.
Man kan även använda
double d;
int i;
cin << d;
i=d;
men det är inte lika lämpligt.
/Niklas JanssonSv: om decimaltal
Jag har inte heller kollat, men det är möjligt att det är så.