C++ proste wczytywanie scanf
-
- Piegowaty Guziec
- Posty: 14
- Rejestracja: 03 lip 2008, 15:11
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
- Kontakt:
C++ proste wczytywanie scanf
Witam!
W różnych zadaniach algorytmicznych pojawia się kwestia wczytywania znaków znajdujących się w różnych wierszach. Mam pytanie, czy jeśli np. mam dane wejściowe w postaci:
3
3 5 6 7
to wczytując je poprzez scanf, muszę jakoś uwzględnić znak [enter] czy po prostu wczytywać po kolei? Mam też pytanie, czy są jakieś inne znaki oprócz spacji, które służą do "rozdzielania danych wejściowych" i czy właśnie takim znakiem jest tez [enter], i czy w konsekwencji tego powyższe dane wejściowe mogłyby wyglądać w ten sposób (i program działałby tak samo):
3 3 5 6 7
pozdrawiam i z góry dziękuję!
W różnych zadaniach algorytmicznych pojawia się kwestia wczytywania znaków znajdujących się w różnych wierszach. Mam pytanie, czy jeśli np. mam dane wejściowe w postaci:
3
3 5 6 7
to wczytując je poprzez scanf, muszę jakoś uwzględnić znak [enter] czy po prostu wczytywać po kolei? Mam też pytanie, czy są jakieś inne znaki oprócz spacji, które służą do "rozdzielania danych wejściowych" i czy właśnie takim znakiem jest tez [enter], i czy w konsekwencji tego powyższe dane wejściowe mogłyby wyglądać w ten sposób (i program działałby tak samo):
3 3 5 6 7
pozdrawiam i z góry dziękuję!
-
- Wytworny Kaczor
- Posty: 352
- Rejestracja: 15 paź 2008, 18:30
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: KDE Plasma
Odp: C++ proste wczytywanie scanf
Dla obiektu std:cin będzie w obu przypadkach działać tak samo.
-
- Wytworny Kaczor
- Posty: 264
- Rejestracja: 19 lis 2008, 11:42
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: KDE Plasma
- Architektura: x86_64
Odp: C++ proste wczytywanie scanf
@lyrix: tak mogłyby tak dane wyglądać (scanf szuka kolejnej kolejnych danych w wejściu i olewa białe znaki jak enter, spacja etc. - jest to tylko wprowadzone, aby ułatwić czytelność danych wejściowych). Dane mogłyby wyglądać równie dobrze
@mikolajs: w zadaniach algorytmicznych więc pewnie w konkursach, a tu przeważnie przez narzut synchronizacji w std:cin program nie przejdzie testów wydajnościowych - można wyłączyć synchronizację, ale i tak lepszym wyborem będzie biblioteka C (scanf/printf), bo nawet przy wyłączeniu synchronizacji wejścia/wyjścia i bibliotece standardowej C++ operacje wejścia/wyjścia odbywają się wolniej.
Kod: Zaznacz cały
3
3
5
6 7
@mikolajs: w zadaniach algorytmicznych więc pewnie w konkursach, a tu przeważnie przez narzut synchronizacji w std:cin program nie przejdzie testów wydajnościowych - można wyłączyć synchronizację, ale i tak lepszym wyborem będzie biblioteka C (scanf/printf), bo nawet przy wyłączeniu synchronizacji wejścia/wyjścia i bibliotece standardowej C++ operacje wejścia/wyjścia odbywają się wolniej.
-
- Piegowaty Guziec
- Posty: 14
- Rejestracja: 03 lip 2008, 15:11
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
- Kontakt:
Odp: C++ proste wczytywanie scanf
Właściwie dlatego założyłem ten wątek, gdyż miałem kiedyś problem z wczytywaniem char, gdzie [enter] podobno odgrywał jakąś rolę. Wszystko jest opisane tutaj:
viewtopic.php?t=116067 (2. "część" postu).
viewtopic.php?t=116067 (2. "część" postu).
-
- Wytworny Kaczor
- Posty: 264
- Rejestracja: 19 lis 2008, 11:42
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: KDE Plasma
- Architektura: x86_64
Odp: C++ proste wczytywanie scanf
char (%c) to inna sprawa bo dla tego typu wszystko co jest na wejściu jest znaczące (spacja nie jest liczbą całkowitą, zmiennoprzecinkową, ciągiem znaków etc... ale znakiem jak najbardziej jest). "%c" wyłapuje wszystko z wejścia - spacje, tab, /r, /n/, etc... ogólnie mówiąc wszystko co jest w tablicy ascii - dla scanf po prostu spacja to znak nr. 32, a nowa linia to znak nr. 10 etc. więc w wypadku znaków wszystko jest istotne.lyrix pisze:Właściwie dlatego założyłem ten wątek, gdyż miałem kiedyś problem z wczytywaniem char, gdzie [enter] podobno odgrywał jakąś rolę. Wszystko jest opisane tutaj:
viewtopic.php?t=116067 (2. "część" postu).
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość