krolik5a Temat założony przez niniejszego użytkownika |
Wypisywanie liczb » 2016-07-30 22:03:25 Cześć. Proszę o pomoc, mam do napisania program, którego zadaniem jest wczytanie liczb i wypisanie ich na przemian (dokładne polecenie poniżej). Podejrzewam, że powinnam tu zastosować pętlę for i tablicę, ale nie mam pomysłu jak to zrobić, do tego, średnio wiem jak używać tej tablicy, wiem tyle, że służy do przechowywania wielu danych naraz. Proszę o pomoc.
Antek z Zuzią często bawią się w pisanie liczb. Na kartce zapisują na przemian liczby całkowite – raz Zuzia, raz Antek. Napisz program, który wczyta ciąg liczb napisany przez dzieci i wypisze liczby, które kolejno pisało każde z dzieci.
Wejście Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą n (2 ≤ n ≤ 100000), oznaczającą długość ciągu liczb napisanego przez dzieci. Drugi wiersz zawiera n liczb całkowitych z zakresu od 1 do 1000, oddzielonych spacjami, oznaczających kolejne liczby wypisane przez dzieci. Dzieci wypisywały liczby na przemian: pierwszą Zuzia, drugą Antek itd.
Wyjście Twój program powinien wypisać dwa wiersze. W pierwszym wierszu powinien znaleźć się ciąg liczb napisanych przez Zuzię, a w drugim – ciąg liczb napisanych przez Antka. Liczby w wierszach należy rozdzielać spacjami.
|
|
Szymon2727 |
» 2016-07-30 22:12:30 Musiałbyś zrobić dynamiczną tablicę, której indeksem byłaby właśnie liczba liczb, które wypisują dzieci. A potem raz przypisywać indeks do Zuzi, a potem do Antka - oczywiście musiałbyś zamienić podany ciąg liczb w tablicę. Poczytaj trochę o operacjach na stringach i wskaźnikach. |
|
krolik5a Temat założony przez niniejszego użytkownika |
» 2016-07-30 22:20:17 Napisałam coś takiego, ale to na pewno jest źle.
#include <iostream> using namespace std;
int main () { int n; cin >> n; int t[n]; int zuzia = 0; int antek = 0; for ( int i = 0; i < n; i++){ cin >> t; zuzia = t[0]; antek = t[1]; } cout << zuzia << endl; cout << antek << endl; }
|
|
M.Eagle |
» 2016-07-30 22:38:59 Mam nadzięję, że taki programik Cię zadowala. Nie stosowałem tutaj funkcji(chociaż lepiej by program wyglądał) , bo jak nie wiesz dokładnie czym są tablice to o funkcjach lub dynamicznej alokacji tym bardziej nie masz pojęcia. #include <iostream>
using namespace std;
int main() { int liczby[ 100000 ]; int dlugosc; bool check; do { check = true; cout << "Podaj dlugosc ciagu liczb: "; cin >> dlugosc; if( dlugosc < 2 || dlugosc > 100000 ) check = false; cin.clear(); cin.sync(); } while( check == false ); for( int i = 0; i < dlugosc; i++ ) { cout << "Podaj element " << i + 1 << " : "; cin >> liczby[ i ]; } int zuzia[ 100000 ]; int antek[ 100000 ]; int ile_zuzia = 0; int ile_antek = 0; int j = 0; int k = 0; for( int i = 0; i < dlugosc; i++ ) { if( i % 2 == 0 ) { zuzia[ j ] = liczby[ i ]; ile_zuzia++; j++; } else { antek[ k ] = liczby[ i ]; ile_antek++; k++; } } cout << "Liczby wpisane przez Zuzie: " << endl; for( int i = 0; i < ile_zuzia; i++ ) { cout << zuzia[ i ] << " "; } cout << endl; cout << "Liczby wpisane przez Antka: " << endl; for( int i = 0; i < ile_antek; i++ ) { cout << antek[ i ] << " "; } return 0; }
|
|
mateczek |
» 2016-07-30 22:47:11 żadnego sprawdzania długości!!! żadnego cin.clear()!!! i cin.sync()!!!. A już w żadnym razie nie próbować powtórnie wczytywać liczb!!! #include <iostream> #include<vector> using namespace std;
int main() { int n; cin >> n; vector < int > zuzia; vector < int > antek; bool wybor = false; int liczba; for( int i = 0; i < n; i++ ) { cin >> liczba; if( !wybor ) zuzia.push_back( liczba ); else antek.push_back( liczba ); wybor = !wybor; } for( int liczba: zuzia ) { cout << liczba << " "; } cout << endl; for( int liczba: antek ) { cout << liczba << " "; } cout << endl; }
|
|
M.Eagle |
» 2016-07-30 22:50:47 Mógłbyś powiedzieć, co jest nie tak ze sprawdzaniem poprawnego podania liczby(skoro mowa o tym w zadaniu) oraz innych rzeczach o których piszesz? Chciałbym wiedzieć na przyszłość.
Wg. mnie rozpoczynanie zabawy z C++ od 'vectora' nie jest najlepszym sposobem, jeżeli zwykłe tablice dla użytkownika stanowią problem.
|
|
krolik5a Temat założony przez niniejszego użytkownika |
» 2016-07-30 22:51:34 Dzięki mateczek, program tak jak sprawdziłam jest bardzo dobry, tylko mam takie pytanie, czy nie da rady go ułożyć w jakiś prostszy sposób, ponieważ ja dopiero zaczynam przygodę z programowaniem i robię kurs wstępu do programowania, wielu rzeczy z tego co napisałeś po prostu nie wiem. |
|
mateczek |
» 2016-07-30 22:56:09 @M.Eagle wsumie tylko to, że programy testuje automat nie człowiek!!! Nie możesz czyścić strumienia, bo wywalisz wszystkie dane ze strumienia i koniec testu!!! Dodatkowo cin.sync() nie działa na linuxie, na którym być może stoi automatyczny tester. |
|
« 1 » 2 |