C++ proste wczytywanie scanf

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
lyrix
Piegowaty Guziec
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

Post 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ę!
mikolajs
Wytworny Kaczor
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

Post autor: mikolajs »

Dla obiektu std:cin będzie w obu przypadkach działać tak samo.
luzakwielki
Wytworny Kaczor
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

Post 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.
lyrix
Piegowaty Guziec
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

Post 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).
luzakwielki
Wytworny Kaczor
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

Post 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.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość