Sprawdzenie poprawności danych
Wprowadzanie danych wymaga ich poprawności dzięki czemu jesteśmy zabezpieczeni przez nieoczekiwanym przerwaniu programu. Jednym najprostszym sposobem ma sprawdzenie danych jest użycie
pętli
do {
cout<<"Podaj a większe lub równe zero=";
cin>>a;
} while(a<0);
Pętla nie pozwoli wprowadzić liczb ujemnych.
Innym sposobem kiedy wprowadzamy do zmiennej ciąg znaków inny niż całkowity po wykonaniu pewnych operacji program ulega przerwaniu bo wprowadzony ciąg traktuje jako liczbą 0. Pomóc może nam wczytanie danej wejściowej do zmiennej łańcuchowej a następnie jej zamiana na typ liczbowy, np.:
strtol() -Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (long).
Argumenty
Argument | Opis |
---|---|
const char * start | Łańcuch znaków, który ma zostać przekonwertowany do postaci liczbowej. |
char ** end | Argument wyjściowy do którego zostanie zapisany adres pierwszego znaku, którego nie udało się przekonwertować. Funkcja zignoruje znaczenie argumentu w przypadku gdy jego wartość zostanie ustawiona na NULL. |
int base | System liczbowy w którym zapisana jest wartość w łańcuchu znaków. Wartość argumentu musi mieścić się w przedziale od 2 do 36. W przypadku gdy wartość niniejszego argumentu wynosi 0 – funkcja wykrywa rodzaj stosowanego systemu liczbowego. Więcej informacji na temat automatycznego wykrywania systemu liczbowego w dalszej części dokumentu. |
#include<iostream>
#include <cstdlib>
using namespace std;
int main()
{
char bin[100];
cout<<"Podaj liczbe w systemie binarnym=";
cin>>bin;
char *wKoniec;
long iBin = strtol( bin, & wKoniec, 2 );
cout<<iBin<<endl;
system("pause");
}
lub
#include<iostream>
#include <cstdlib>
using namespace std;
int main()
{
char hex[100];
cout<<“Podaj liczbe w systemie sesnastkowym=”;
cin>>hex;
char *wKoniec1;
long iDec = strtol( hex, & wKoniec1, 16 );
cout<<iDec<<endl;
}
inne to:
strtoul() – Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (unsigned long).
Argumenty
Argument | Opis |
---|---|
const char * start | Łańcuch znaków, który ma zostać przekonwertowany do postaci liczbowej. |
char ** end | Argument wyjściowy do którego zostanie zapisany adres pierwszego znaku, którego nie udało się przekonwertować. Funkcja zignoruje znaczenie argumentu w przypadku gdy jego wartość zostanie ustawiona na NULL. |
int base | System liczbowy w którym zapisana jest wartość w łańcuchu znaków. Wartość argumentu musi mieścić się w przedziale od 2 do 36. W przypadku gdy wartość niniejszego argumentu wynosi 0 – funkcja wykrywa rodzaj stosowanego systemu liczbowego. Więcej informacji na temat automatycznego wykrywania systemu liczbowego w dalszej części dokumentu. |
strtod() – Konwertuje wartość zapisaną w łańcuchu znaków do postaci liczby zmiennoprzecinkowej (double).