Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wypisywanie liczb

Ostatnio zmodyfikowano 2016-08-03 17:52
Autor Wiadomość
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.
P-150416
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.
P-150418
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;
}
P-150419
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.
C/C++
#include <iostream>

using namespace std;

int main()
{
    int liczby[ 100000 ];
    int dlugosc;
    bool check;
    do //zabezpieczenie poprawnego podania długości ciągu liczb
    {
        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++ ) //pętla do wczytywania liczb
    {
        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;
}
P-150420
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!!!
C/C++
#include <iostream>
#include<vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector < int > zuzia; //tablica(kontener) typu int (vector to taka tablica) gdy nie znasz ilości elementów w trakcie kompilacji warto skorzystać
    vector < int > antek;
    bool wybor = false;
    int liczba;
    for( int i = 0; i < n; i++ ) {
        cin >> liczba;
        if( !wybor ) zuzia.push_back( liczba ); //wrzuca do tablicy "zuzia" liczbę
        else
             antek.push_back( liczba ); //wrzuca do tablicy "antek" liczbę
       
        wybor = !wybor; //zmiana stanu zmiennnej wybór na przeciwny - raz wybieramy tablice antek raz zuzia
    }
    for( int liczba: zuzia ) { //wyświetlenie tablicy "zuzia". pętla for w stylu znanym z c++11 for(element:kontener) przebiega cały kontener z automatu
        cout << liczba << " ";
    }
    cout << endl;
    for( int liczba: antek ) {
        cout << liczba << " ";
    }
    cout << endl;
}
P-150421
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.
P-150422
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.
P-150423
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.
P-150424
« 1 » 2
  Strona 1 z 2 Następna strona