Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Problemik z C++

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie
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

PostWysł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 profil autora
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

PostWysł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 profil autora
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

PostWysł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 profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
SZCZUR
żul



Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów


PostWysł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 profil autora
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 :]

PostWysłany: Śro 19:22, 07 Cze 2006    Temat postu:

Nie rozwiazuje literek

Wersja Exemana jest chyba najlepszą odpowiedzią...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
SZCZUR
żul



Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów


PostWysł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 profil autora
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

PostWysł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 profil autora
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

PostWysł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 profil autora
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 :]

PostWysł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
Zobacz profil autora
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

PostWysłany: Czw 20:34, 15 Cze 2006    Temat postu:

W sumie może być i int, ale daje mi to do myślenia...
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
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
Regulamin