Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Visar 03:00
 » Shark20 02:57
 » Chavez 02:46
 » yanix 02:26
 » PaKu 02:20
 » metacom 02:18
 » xpx 02:17
 » abes99 01:30
 » luckyluc 01:30
 » Chrisu 01:26
 » PiotrexP 01:18
 » Martens 00:57
 » Wolf 00:44
 » CiAsTeK 00:39
 » bmiluch 00:38
 » Zic 00:36
 » rulezDC 00:36
 » Demo 00:15
 » rarek 00:09
 » buddookan 00:03

 Dzisiaj przeczytano
 41124 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
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 konieczne

AwerS

  1. ad.2 , Arlathan 3/06/05 10:50
    tab[]=NULL;
    o ile pamiętam

    -
    I Rock. Fact.

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

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

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

        1. poprawka , Zajkos 3/06/05 11:31
          oczywiscie funkcja atoi()

  3. 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 ;)

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

  5. 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;
    }

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

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