getch() i cin w jednym

0

Cześć.
Chcę wprowadzić do tablicy liczby np: -42, 3, 32;
Potrzebuje takiego sposobu który wprowadzi dane jak cin ale bez przejścia do następnego wiersza.
Próbowałem z getch(), ale problem polega na tym, że tu każdy znak jest liczony oddzielnie.
Może ktoś kojarzy polecenie pozwalające zapisać ciąg znaków bez przejścia do nowej linijki (najlepiej przeciążone jak cin)?
Z góry dzięki za odpowiedzi. dziubo4

0

//q: tutaj parę postów wyleciało, mówiąc w skrócie:

t0m_k-tmp napisał(a)
for(i = 0; i < 20; i++)
    scanf("%d ", &tab[i]);

powyzszy kod wczyta Ci 20 liczb wpisanych w jednej linii i oddzielonych spacjami lub enterem nawet, dziala na Windowsie i na Linuksie, zreszta jakby sie tak nie dalo to wiele zadan algorytmicznych nie mialoby racji bytu, poniewaz w nich trzeba w jednej linii wczytywac liczby.

Tak, wczyta, pod warunkiem, że na końcu naciśniesz enter.

Po prostu zwykle do przetworzenia dla scanf trafia cała linia, dopiero jak się ją zakończy znakiem nowej linii. Zbuforowaną linię/linie można scanfem ciąć niezależnie od jej dokładnej struktury - ' ' pomija wszystkie białe znaki.

0

Widzisz, ja dla przykładu podałem 3 liczby, żebym był bardziej zrozumiały... moje niedociągnięcie. Ale załóżmy, że pracujemy na n liczbach (tablica dynamiczna). Nie wiesz wtedy ile razy wpisać %d w scanfie.

To jakby tak:
Masz pętle for w której masz wpisać liczbę i spację powtarzasz tą pętlę trzy razy i wszystko ma się znaleźć w jednym wierszu:

np:
31 -3 456

0

Świętowit: zadanie, ktorego czesc dalem jasno ma sprecyzowane wejscie i jest wymagane pobranie dwoch liczb w linii bez potwierdzenia tego enterem, aby mozna bylo dalej pobierac te liczby w tej samej linii drugim scanfem i wykorzystac jeszcze jedna z tych pierwszych, wiec to troche przeczy temu, ze nie trafiaja przed nacisnieciem entera do zmiennych, albo i nie przeczy a ja o czyms nie wiem, dlatego pytam.

0

W trybie liniowym po prostu konsola nie ma wejścia na żywo tylko 'magicznie' pojawia się (potencjalnie) spora partia danych po znaku nowej linii. Po prostu masz dodatkowe buforowanie wejścia. W większości wypadków nie ma tak naprawdę różnicy czy działamy znakowo czy liniowo, dobrze napisane scanfy powinny być od tego niezależne.

Jak nie rozumieSZ to już nie wiem jak to przetłumaczyć, może powinieneś wrócić do podstaw.

//q: uważaj na literówki :)

0

dziubo4, Jak na moje to masz 2 wyjścia... Albo 1) zastosować [q:edit] dynamiczne tworzenie, czyli jako 1 liczbę podać ilość liczb, które będą wprowadzane, tak jak Bóg przykazał..
2) Jeśli naprawdę nie wiesz, ile liczb będzie wprowadzonych, proponuję rozwiązanie z while(cin.get(znak)), i składać sobie pokolei liczby z poszczególnych cyfr.. dodajesz sobie pokolei każdy znak do stringa, jak znajdziesz spację, parsujesz string na liczbę, dodajesz do tablicy, czyścisz string ai jedziesz kolejny cykl...

1 użytkowników online, w tym zalogowanych: 0, gości: 1