[C++] Wczytywanie danych do napotkania dwóch zer

Awatar użytkownika
Haskis
Użytkownik
Użytkownik
Posty: 158
Rejestracja: 12 gru 2009, o 15:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 55 razy
Pomógł: 14 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: Haskis »

Może mi ktoś wytłumaczyć jak zrobić taki trick żeby wczytać dane w postaci
\(\displaystyle{ a_{1} b_{1}}\)
\(\displaystyle{ a_{2} b_{2}}\)
\(\displaystyle{ ...}\)
\(\displaystyle{ a_{n} b_{n}}\)
\(\displaystyle{ 0 0}\)
Czyli wczytujemy dane aż wpiszemy 0 0.
Robię pętle która przerywa się po wprowadzeniu tych zer ale nie wiem w jaki sposób zapisać te dane bo ich ilość znana jest dopiero po wprowadzeniu tychże zer, a ich wczytywanie odbywa się jak sądzę wcześniej. Zaznaczam że dopiero zaczynam się uczyć C++, wszystko co pomocne mile widziane
Ostatnio zmieniony 12 lip 2011, o 11:03 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
abc666

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: abc666 »

Możesz na piechotę dynamicznie alokować pamięć albo skorzystać z jakiegoś kontenera, np. z wektora par. Drugie rozwiązanie jest prostsze do zapisania ale musisz chociaż wiedzieć co to są szablony, ich specjalizację i mieć jakieś pojęcie o STL-u.
Awatar użytkownika
argv
Użytkownik
Użytkownik
Posty: 569
Rejestracja: 27 maja 2009, o 01:27
Płeć: Mężczyzna
Podziękował: 51 razy
Pomógł: 66 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: argv »

Tak jak mówi abc666, ale jeśli jesteś początkujący i potrzebujesz wczytać oraz zgromadzić te dane to proponuje po prostu dwa wektory:

Kod: Zaznacz cały

#include <iostream>#include <vector>using namespace std;int main(){    int a, b;    vector<int> A;    vector<int> B;        cin >> a >> b;    while(a || b) {         A.push_back(a);        B.push_back(b);        cin >> a >> b;    }     // Masz wczytane dane i cos z nimi robisz np. wyswietlasz    for(int i = 0; i < (int) A.size(); i++) {        cout << "(" << A[i] << " " << B[i] << ")" << endl;    }         return 0;} 
Ostatnio zmieniony 11 lip 2011, o 20:48 przez argv, łącznie zmieniany 1 raz.
Awatar użytkownika
Haskis
Użytkownik
Użytkownik
Posty: 158
Rejestracja: 12 gru 2009, o 15:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 55 razy
Pomógł: 14 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: Haskis »

Dobra, widzę że to jeszcze nie dla mnie, muszę ogarnąć teorię najpierw, i utrwalić to co wiem na łatwiejszych programach ;]. Dzięki wielkie za pomoc
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: miki999 »

Jako programistyczna łajza zastanawiam się dlaczego:

Kod: Zaznacz cały

 while(a || b) 
nie działa do pojawienia się pierwszej zerowej wartości?
Awatar użytkownika
argv
Użytkownik
Użytkownik
Posty: 569
Rejestracja: 27 maja 2009, o 01:27
Płeć: Mężczyzna
Podziękował: 51 razy
Pomógł: 66 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: argv »

Eee, Miki nie doceniasz się - obracamy się dopóki jej warunek jest prawdziwy czyli w praktyce \(\displaystyle{ !=0}\).
Ponieważ mamy leniwe wyliczanie, wyrażenie \(\displaystyle{ a \ || \ b}\) będzie liczone tak długo, jak długo nie wiemy jaka jest jego wartość. Jeśli \(\displaystyle{ a=0}\) to wynik zależy od \(\displaystyle{ b}\), więc policzymy też \(\displaystyle{ b}\). Stąd \(\displaystyle{ 0 \ || \ 1}\) da oczywiście \(\displaystyle{ 1}\)
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: miki999 »

Heh, no tak. Gdybym mógł kliknąłbym Ci pomógł
Dzięki.
Awatar użytkownika
Haskis
Użytkownik
Użytkownik
Posty: 158
Rejestracja: 12 gru 2009, o 15:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 55 razy
Pomógł: 14 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: Haskis »

Kliknę za Ciebie ;].
Przy okazji, jaką książkę polecacie. Uczę się z Symfonii. Ale czytam opinie, że jest stara i nie dobra. Polecacie coś?
PMichalak
Użytkownik
Użytkownik
Posty: 125
Rejestracja: 29 paź 2009, o 20:03
Płeć: Mężczyzna
Lokalizacja: Kalisz
Podziękował: 1 raz
Pomógł: 16 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: PMichalak »

Jak już chcesz C++ to może Stroustrup?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: Afish »

Chyba lepiej Szkołę programowania Praty. Swoją drogą niedługo będziemy mieli oficjalnie C++0x, więc wszystkie pozycje troszkę się zdezaktualizują.
abc666

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: abc666 »

Pewnie tak tylko czy początkujący będzie korzystał z możliwości 0x ?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: Afish »

Powinien. Oczywiście nie mam na myśli osoby, która dopiero pisze hello worlda, ale ma już jakieś pojęcie o obiektowości, szablonach itepe.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] Wczytywanie danych do napotkania dwóch zer

Post autor: wawek91 »

Ja polecam 'Thinking in C++'. Stroustrup'a kazał nam czytać prowadzący ćwiczenia i pare razy przeglądnąłem kilka stron, ale jest tak nudna, że nie dało się przez nią przebrnąć, a thinking wg mnie jest o wiele przyjemniej napisany, jest dużo ciekawych (nienudnych) przykładów, no i na końcu każdego rozdziału pare ćwiczeń do rozwiązania w celu przyswojenia wiedzy. Wiadomo - same czytanie książki bez klepania kodu nie ma większego sensu. Co do symfonii, fakt czytałem ją na początku i jest ona napisana świetnie dla osób mających zerowe pojęcie o języku. Thinking to być może już taki wyższy stopień.
ODPOWIEDZ