TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Pytane z c++ , AwerS 3/06/05 10:36 Hej mam takei 2 male pytana z c++ bylbym wdzieczny za pomoc
1) jak sprawdzicz czy podawana liczba w cin jest liczba a nie jakims znakiem
2) jak zwolnic tablie na koniec programu bo to podobno konieczneAwerS - ad.2 , Arlathan 3/06/05 10:50
tab[]=NULL;
o ile pamiętam-
I Rock. Fact. - Już odpowiadam: , rzymo 3/06/05 11:06
Ad 1.
W bibliotece 'ctype.h' jest funkcja o prototypie:
int isdigit(int c)
zwraca ona wartość różną od zera, jeśli parametr c zawiera kod cyfry
najprostszy kod:
char ch;
cout << "podaj liczbe: "; cin >> ch;
if (isdigit(ch))
cout << "podałeś liczbę";
else
cout << "nie podałeś liczby";
Ad 2.
Jeśli nie tworzysz tablicy dynamicznie poprzez new lub malloc) to nie ma sensu i nie ma możliwości zwolnienia tablicy.... ITX ... - Nie do końca... , pachura 3/06/05 11:17
...bo w Twoim źródle odczytujesz tylko pojedynczy znak, więc jeśli chcesz odczytać całą liczbę to musiałbyś ją potem posklejać z cyfr...- można użyć , Zajkos 3/06/05 11:30
np. funkcji itoa() ale jest problem bo jesli ciag nei jest liczbą to funkcja zwraca 0, wiec trudno bedzie stwierdzic czy ktoś wpisał zero albo nieliczbę.
A tablica sie zwalnia przez wyjście z bloku w którym została zadeklarowana albo przy tablicy utworzonej dynamicznie przez new zwalnia się ją przez operator "delete []" , nie samo delete bo to zwolni tylko pierwszy element tablicy- poprawka , Zajkos 3/06/05 11:31
oczywiscie funkcja atoi()
- 1.) cin.fail() 2.) nie trzeba , pachura 3/06/05 11:08
1.)
int x;
cin >> x;
if (cin.fail())
{
// obsługa błędu
}
2.)
Zwalniać trzeba tylko wskaźniki zaallokowane operatorem new - przez "delete wskaźnik".
Zwykłych tablic, np.
int x[5] = {1, 2, 3, 4, 5};
...się nie zwalnia.
A jeśli ktoś używa archaicznych procedur typu malloc() to niech przestanie ;) - Wszystko fajnie ale , AwerS 3/06/05 12:31
no wlasnie jest jedno ale ja nie moge kozystac z funkcji gotowych tylko asm musze tak owa uzyc :(AwerS - na 100% nie zadziała , Zajkos 3/06/05 15:15
ale może podsunie Ci to ideę:
bool SprawdzCzyLiczba (char *t)
{
bool czyliczba=false;
if (t) czyliczba=true;
while (t)
{
if ((char)t[0]<'1' || (char)t[0]>'0') czyliczba=false;
t++;
}
return czyliczba;
}- Ale po co to piszesz? , pachura 3/06/05 15:50
Może to i zadziała, ale rozwiązanie z cin.fail() które podałem parę postów wyżej jest porządne, eleganckie i działa dobrze, nie wymaga też żadnego czytania stringów i konwertowania ich do liczb. A to co Ty napisałeś to straszliwe rzeźbienie...- e tam , Zajkos 3/06/05 16:08
napisałem bo chciał żeby napisać. Nie masz coi się ciskać.
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|