Strona 1 z 1

C++ proste wczytywanie scanf

: 31 gru 2009, 15:28
autor: lyrix
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ę!

Odp: C++ proste wczytywanie scanf

: 01 sty 2010, 13:14
autor: mikolajs
Dla obiektu std:cin będzie w obu przypadkach działać tak samo.

Odp: C++ proste wczytywanie scanf

: 03 sty 2010, 06:19
autor: luzakwielki
@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

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.

Odp: C++ proste wczytywanie scanf

: 04 sty 2010, 00:14
autor: lyrix
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).

Odp: C++ proste wczytywanie scanf

: 04 sty 2010, 02:40
autor: luzakwielki
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).
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.