Łączenie dwóch tablic w jedną
Ostatnio zmodyfikowano 2016-01-04 19:47
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. #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; 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"; } 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"; } 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; 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; }
|
|
DejaVu |
» 2016-01-03 18:27:18 Zrób jedną pętlę w której będziesz zapisywał pod indeksy: tab3[ i * 2 ] = tab1[ i ]; tab3[ i * 2 + 1 ] = tab2[ i ];
|
|
Razner |
» 2016-01-03 18:31:57 Strasznie poplątany ten kod. Tablica 3 powinna być 2 razy większa od pozostałych tablic |
|
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ć? tab3[ i * 2 ] = tab1[ i ]; tab3[ i * 2 + 1 ] = tab2[ i ];
Jak piszę coś takiego, to nic nie działa. for( i = 0; i < ele_tab_1; i++ ) { tab_3[ i * 2 ] = tab_1[ i ]; tab_3[ i * 2 + 1 ] = tab_2[ i ]; }
|
|
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 :) |
|
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. |
|
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 :) |
|
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 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 ]; } } } }
|
|
« 1 » 2 |