|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Kwiatek
pijak
Dołączył: 08 Gru 2005
Posty: 215
Przeczytał: 0 tematów
Skąd: Podkarpacie
|
Wysłany: Śro 17:02, 07 Cze 2006 Temat postu: Problemik z C++ |
|
|
Wprowadzam z klawiatury wartość dla zmiennej x. Jak napisać warunek, zeby x nie mogło być np. ułamkiem, albo literka? Konkretniej to 0<=x<=100, i na to napisałam pętelkę, ale gdy wprowadzę do tej zmiennej wartośc np. "a" to pętla wykonuje mi się w nieskończoność. Podobnie jest jak wpisze np 1,2.
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Spectro
Mistrz grilla
Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów
Skąd: Kurdwanów
|
Wysłany: Śro 18:10, 07 Cze 2006 Temat postu: |
|
|
W tym momencie przychodzi mi do głowy wczytywanie znak po znaku i sprawdzenie dla każdego z nich, czy jego wartość zrzutowana na inta mieści się w przedziale [int('0'), int('9')]. Później pozamieniać to co się wczytało na inta. Jeżeli się wczytały 3 znaki, no to tylko trzeba sprawdzić, czy były to 1, 0 i 0.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
exeman
Mistrz grilla
Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów
Skąd: znienacka
|
Wysłany: Śro 19:03, 07 Cze 2006 Temat postu: |
|
|
ja to widze inaczej, jesli dobrze rozumiem problem
Dobre jesli nie akceptujemy zera. czyli np. dla przedzialu (0, 100]
Jezeli chcemy akceptowac zero, trza dorobic sprawdzanie, czy w przypadku wystapienia bledu oby napewno liczba nie jest zerem.
Kod: |
char bufor[16];
int i;
scanf("%s", &bufor);
bufor[16 - 1] = 0;
if (!(i = atoi(bufor)) || (i < 1) || (i > 100)){
// Error
} else /* i ma liczbe */
|
Tu taka byle jaka proba zrobienia, zeby dzialalo z zerem, byle jaka, bo malo liberalna. Popluje sie, gdy na poczatku bedziemy mieli spacje, lub jak podamy -0, co teoretycznie powinno (a nie zostanie) byc traktowane jak zero.
Kod: |
char bufor[16];
int i;
scanf("%s", &bufor);
bufor[16 - 1] = 0;
if (!(i = atoi(bufor)) || (i < 1) || (i > 100)){
if (strlen(bufor) == 1) && (bufor[0] = '0')){
// Error.
}
};
/* jesli nie error, to i ma liczbe */
|
Nie testowalem, ale powinno dzialac.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
SZCZUR
żul
Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów
|
Wysłany: Śro 19:07, 07 Cze 2006 Temat postu: |
|
|
troche ten problem jest cos zle opisany.
dlaczego nie moze byc:
int x;
cin >> x;
if( x<0 || x>100 )
....error;
taki kod gwarantuje ze ta liczba jest z przedzialu 0..100 :)
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Robson
zielony żul
Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów
Skąd: Z Lasu :]
|
Wysłany: Śro 19:22, 07 Cze 2006 Temat postu: |
|
|
Nie rozwiazuje literek
Wersja Exemana jest chyba najlepszą odpowiedzią...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
SZCZUR
żul
Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów
|
Wysłany: Śro 19:40, 07 Cze 2006 Temat postu: |
|
|
sory rzeczywiście.
sprawdzilem tylko pod VC co bylo moim błędem:)
pod VC zmienna x przyjmuje wartość -13454545 gdy wczytamy litarke i dlatego dzialalo.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Kwiatek
pijak
Dołączył: 08 Gru 2005
Posty: 215
Przeczytał: 0 tematów
Skąd: Podkarpacie
|
Wysłany: Czw 20:02, 15 Cze 2006 Temat postu: |
|
|
Ok a teraz inny problemik. Dlaczego coś takiego:
void WydajProdukt (short int kod)
się nie kompiluje, a jak wstawię przecinek:
void WydajProdukt (short, int kod)
To się juz kompiluje???????????????? Piszę w Dev-cpp.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Rogal
Zjeb z kaszanką
Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów
Skąd: koło podbiegunowe
|
Wysłany: Czw 20:26, 15 Cze 2006 Temat postu: |
|
|
Jak na mój gust to powinno się kompilować, może masz jakieś rozbieżności poiędzy definicją a deklaracją metody (tj. pomiędzy tym co masz napisane w ciele klasy a tym co później piszesz poza ciałem). Jeśli nie to pamiętaj że sam zapis void WydajProdukt (short kod) wystarczy i powinien siękompilować sądząc z tego co piszesz.
edited: poza tym jeśli to nie jest jakiś kluczowy fragment kodu decydujący o złożoności pamięciowej (a na taki nie wygląda) to nie warto użytwać typu short więc wywal po prostu tego shorta będzie ok :wink:
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Czw 20:33, 15 Cze 2006 Temat postu: |
|
|
U mnie void dzialaj( short int tryb ) się kompiluje, więc może rzeczywiście masz taki błąd, jak Rogal mówi.
|
|
Powrót do góry |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|