[c++]Sprawdzenie czy wpisana została liczba
-
- Piegowaty Guziec
- Posty: 2
- Rejestracja: 21 paź 2007, 21:13
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Brak
[c++]Sprawdzenie czy wpisana została liczba
Witam
Jako, że chodzę na mat-inf do LO, dostaliśmy zadania z informatyki. Uczymy się TP, jednak ja w niego zwątpiłem i staram się zastępować go przez cpp. Uczę się z Symfonii C++ Jurka Grębosza,co nie zmienia faktu, że jestem początkujący. Jednak ostatnio nie mam czasu zbytnio na to.
Jak sprawdzić czy wpisana wartość jest liczbą, nie chodzi mi tu o jej wypisanie, tylko, o to aby program, przy użyciu instrukcji if przechodził do odpowiedniej części kodu, lub wywalał, że wpisaliśmy literę. Ułożyć instrukcję umiem, tylko nie umiem ułożyć warunku na sprawdzenie.
Jako, że chodzę na mat-inf do LO, dostaliśmy zadania z informatyki. Uczymy się TP, jednak ja w niego zwątpiłem i staram się zastępować go przez cpp. Uczę się z Symfonii C++ Jurka Grębosza,co nie zmienia faktu, że jestem początkujący. Jednak ostatnio nie mam czasu zbytnio na to.
Jak sprawdzić czy wpisana wartość jest liczbą, nie chodzi mi tu o jej wypisanie, tylko, o to aby program, przy użyciu instrukcji if przechodził do odpowiedniej części kodu, lub wywalał, że wpisaliśmy literę. Ułożyć instrukcję umiem, tylko nie umiem ułożyć warunku na sprawdzenie.
Odp: [c++]Sprawdzenie czy wpisana została liczba
Ja sie na cpp nie znam, ale mozesz skorzystac z wyrazen regularnych. Liczba to bedzie cos takiego [\\d]+ (ale nie jestem pewien co do notacji cpp). Druga opcja to zalozenie, ze zostala wprowadzona liczba i dalsze wykonywanie dzialan. Jesli po drodze okaze sie, ze wprowadzona zmienna nie byla liczba, wystarczy przechwycic rzucony wyjatek i odpowiedno go obsluzyc. To tak w ogolnym zarysie
Kodu nie podrzuce bo cpp to nie moja dzialka.
EDIT:
Wlasnie! Zapomnialem o funkcji isDigit(). Tu masz dokladnie to o co pytasz.

EDIT:
Wlasnie! Zapomnialem o funkcji isDigit(). Tu masz dokladnie to o co pytasz.
-
- Zakręcona Traszka
- Posty: 585
- Rejestracja: 20 kwie 2008, 04:21
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
Odp: [c++]Sprawdzenie czy wpisana została liczba
Zainteresuj się funkcją std::isdigit()
PS. nie korzystaj z gotowców i nie proś o gotowe rozwiązania bo się nie nauczysz niczego
PS. nie korzystaj z gotowców i nie proś o gotowe rozwiązania bo się nie nauczysz niczego

- Szmitas
- Zakręcona Traszka
- Posty: 572
- Rejestracja: 28 lis 2006, 17:38
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: Unity
- Architektura: x86
- Lokalizacja: Luboń
- Kontakt:
Odp: [c++]Sprawdzenie czy wpisana została liczba
A coś takiego nie może być?
Kod: Zaznacz cały
int a;
if(cin>>a) instrukcje;
else instrukcje;
www.ubuntu-pomoc.org - tutaj znajdziesz rozwiązanie każdego Twojego problemu.
Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [c++]Sprawdzenie czy wpisana została liczba
Jedziesz cały string i sprawdzasz każdy znak z osobna czy nie jest cyfrą. Jeśli nie jest to zwracasz false i do widzenia.
EDIT:
Oj, gafa w kodzie była.
Kod: Zaznacz cały
#include <iostream>
#include <cstring>
using namespace std;
bool isint(string s)
{
for (unsigned int i = 0; i < s.length(); i++)
if (!isdigit(s[i]))
return false;
return true;
}
int main(int argc, char** argv)
{
string s = "12345678";
cout << s << "\t";
isint(s) ? cout << "Liczba\n" : cout << "Nie liczba\n";
s = "1234a5678";
cout << s << "\t";
isint(s) ? cout << "Liczba\n" : cout << "Nie liczba\n";
return 0;
}
Oj, gafa w kodzie była.

-
- Zakręcona Traszka
- Posty: 585
- Rejestracja: 20 kwie 2008, 04:21
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
Odp: [c++]Sprawdzenie czy wpisana została liczba
@Szmitas: Twoje rozwiązanie też jest dobre - wychodzi tutaj moje wychowanie na C, że o tym nie pamiętałem. Osobiście jednak akurat taki zapis mi się nie podoba - zwyczajnie dlatego, że nie wiem za bardzo jak to działa
. Wolałbym skorzystać z cin.fail().

- el.pescado
- Zakręcona Traszka
- Posty: 734
- Rejestracja: 26 maja 2005, 11:43
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: [c++]Sprawdzenie czy wpisana została liczba
Można też ręcznie napisać funkcję sparawdzającą - jest to dobre ćwiczenie. Trzeba pamiętać, że kolejne cyfry w zestawie znaków ASCII mają kolejne kody, oraz że kody znaków można ze sobą porównywać (są uporządkowane):
Albo krócej, biorąc pod uwagę, że można zwrócić warunku jako wartość logiczną:
Można też użyć instrukcji switch etc...
Kod: Zaznacz cały
int isdigit(char c) {
if (c >= '0' && c <= '9')
return 1;
else
return 0;
}
Kod: Zaznacz cały
int isdigit(char c) {
return (c >= '0' && c <= '9');
}
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości