[C++] Wczytywanie danych do napotkania dwóch zer
- Haskis
- 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
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
\(\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.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
[C++] Wczytywanie danych do napotkania dwóch zer
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.
- argv
- 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
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.
- Haskis
- 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
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
- miki999
- 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
Jako programistyczna łajza zastanawiam się dlaczego:
nie działa do pojawienia się pierwszej zerowej wartości?
Kod: Zaznacz cały
while(a || b)
- argv
- 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
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}\)
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}\)
- Haskis
- 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
Kliknę za Ciebie ;].
Przy okazji, jaką książkę polecacie. Uczę się z Symfonii. Ale czytam opinie, że jest stara i nie dobra. Polecacie coś?
Przy okazji, jaką książkę polecacie. Uczę się z Symfonii. Ale czytam opinie, że jest stara i nie dobra. Polecacie coś?
-
- 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
Chyba lepiej Szkołę programowania Praty. Swoją drogą niedługo będziemy mieli oficjalnie C++0x, więc wszystkie pozycje troszkę się zdezaktualizują.
[C++] Wczytywanie danych do napotkania dwóch zer
Pewnie tak tylko czy początkujący będzie korzystał z możliwości 0x ?
-
- 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
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.
-
- 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
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ń.