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

Łączenie dwóch tablic w jedną

Ostatnio zmodyfikowano 2016-01-04 19:47
Autor Wiadomość
locf
Temat założony przez niniejszego użytkownika
Łączenie dwóch tablic w jedną
» 2016-01-03 18:02:44
Mam zadanie o treści:
"Napisz program, który z dwóch 10-cio elementowych tablic znakowych tworzy trzecią złożoną na zmianę z elementów to jednej, to drugiej tablicy."

Nie umiem jeszcze funkcji, czy innych elementów języka c++, prócz podstaw podstaw.

Moja próba rozwiązania kończy się na tym, że póki co prawidłowo wygenerowane są dwie tablice.
Skopiowanie elementów z tablicy nr 1 i 2 nie działa. Próbowałem if-ów, while(), ale bezskutecznie.
Tablice znakowe zastąpiłem liczbowymi.
C/C++
#include <iostream>

using namespace std;

const int ele_tab_1 = 10;
const int ele_tab_2 = 10;
const int ele_tab_3 = 10;

int main()
{
    float tab_1[ ele_tab_1 ];
    float tab_2[ ele_tab_2 ];
    float tab_3[ ele_tab_3 ];
   
    int i = 0, j, m;
   
    //===TWORZYSZ TABLICE NR 1 ============
    for( i = 0; i < ele_tab_1; i++ )
    {
        tab_1[ i ] = 5 * i + 45;
    }
    cout << "Elementy tablicy nr 1 to: \n";
    for( i = 0; i < ele_tab_1; i++ )
    {
        cout << tab_1[ i ] << " \t";
    }
    //===TWORZYSZ TABLICE NR 2 ============
    for( j = 0; j < ele_tab_2; j++ )
    {
        tab_2[ j ] = 7 * j + 4;
    }
    cout << endl;
    cout << endl;
    cout << "Elementy tablicy nr 2 to: \n";
    for( j = 0; j < ele_tab_2; j++ )
    {
        cout << tab_2[ j ] << " \t";
    }
    //===TWORZYSZ TABLICE NR 3 ============
    for( m = 0; m < ele_tab_3; m++ )
    {
        tab_3[ m ] = 8 * m + 11;
    }
    cout << endl;
    cout << endl;
    cout << "Elementy tablicy nr 3 to: \n";
    for( m = 0; m < ele_tab_3; m++ )
    {
        cout << tab_3[ m ] << " \t";
    }
   
    cout << endl;
    cout << endl;
   
    //======= TABLICA NR 3 PO ZMIANIE ============
   
    for( i = 0; i < ele_tab_1; i++ )
    {
        if( i % 2 == 0 )
        {
            for( m = 0; m < ele_tab_3; m++ )
            {
                if( m % 2 == 0 )
                {
                    tab_3[ m ] = tab_1[ i ];
                }
            }
        }
    }
    for( j = 1; j < ele_tab_2; j++ )
    {
        if( j % 2 != 0 )
        {
            for( m = 1; m < ele_tab_3; m++ )
            {
                if( m % 2 != 0 )
                {
                    tab_3[ m ] = tab_2[ j ];
                }
            }
        }
    }
    cout << endl;
    cout << "Elementy tablicy nr 3 po zmianie to: \n";
    for( m = 0; m < ele_tab_3; m++ )
    {
        cout << tab_3[ m ] << " \t";
    }
    cout << endl;
    return 0;
}
P-142782
DejaVu
» 2016-01-03 18:27:18
Zrób jedną pętlę w której będziesz zapisywał pod indeksy:
C/C++
tab3[ i * 2 ] = tab1[ i ];
tab3[ i * 2 + 1 ] = tab2[ i ];
P-142785
Razner
» 2016-01-03 18:31:57
Strasznie poplątany ten kod. Tablica 3 powinna być 2 razy większa od pozostałych tablic
P-142786
locf
Temat założony przez niniejszego użytkownika
» 2016-01-03 18:39:11
Wiem, że trochę poplątany. Tablica nr 1 ma 10 elementów. Tablica nr 2 ma 10 elementów.
Tablica nr 3 też ma mieć 10 elementów, przy czym element tablicy 3 o indeksie 0 ma być np. z tablicy nr 1. Element tablicy nr 3 o indeksie 1 ma być z tablicy nr 2 itp.

Próbowałem jakoś pokombinować z tymi indeksami. Jeśli indeks tablicy 3 jest parzysty, to do elementu o tym indeksie chciałem przypisać pierwszy element o indeksie parzystym z tablicy nr 1 itp. Dlatego użyłem tyle if-ów, by ustalić, które to są parzyste indeksy, a które nie.

DejaVu, czy mógłbyś wyjaśnić co z tą pętlą zrobić?

C/C++
tab3[ i * 2 ] = tab1[ i ];
tab3[ i * 2 + 1 ] = tab2[ i ];

Jak piszę coś takiego, to nic nie działa.
C/C++
for( i = 0; i < ele_tab_1; i++ )
{
    tab_3[ i * 2 ] = tab_1[ i ];
    tab_3[ i * 2 + 1 ] = tab_2[ i ];
}

P-142789
Razner
» 2016-01-03 18:42:24
To połowa tych tablic przepadnie. Pamiętaj że możesz pętle przeskakiwać o 2 wartości :)
P-142790
locf
Temat założony przez niniejszego użytkownika
» 2016-01-03 18:45:44
Też to przerabiałem, że wpisywałem: i+2.
Ale nie działa.
P-142792
Razner
» 2016-01-03 18:47:26
Podczas przypisywania 2 tablic do tej trzeciej jedna pętle zacznij od 0 drugą od 1. Przeskakując co 2 będą na przemian :)
P-142793
locf
Temat założony przez niniejszego użytkownika
» 2016-01-03 18:52:55
Taki kod w trzeciej tablicy zapisuje mi przedostatni element z tablicy nr 1 oraz ostatni element z tablicy nr 2.

Nie wiem jak inaczej przypisać elementy z jednej tablicy do drugiej z pominięciem indeksów nieparzystych

C/C++
for( i = 1; i < ele_tab_1; i++ )
{
    if( i % 2 == 0 )
    {
        for( m = 0; m < ele_tab_3; m++ )
        {
            if( m % 2 == 0 )
            {
                tab_3[ m ] = tab_1[ i ];
            }
        }
    }
}
for( j = 0; j < ele_tab_2; j++ )
{
    if( j % 2 != 0 )
    {
        for( m = 1; m < ele_tab_3; m++ )
        {
            if( m % 2 != 0 )
            {
                tab_3[ m ] = tab_2[ j ];
            }
        }
    }
}
P-142794
« 1 » 2
  Strona 1 z 2 Następna strona