C++ векторы
Помогите пожалуйста написать код или хотя-бы примерно сказать с чего нужно начать:')
В этом коде нужно задействовать векторы...
Вот сама задача:
Изначально в стопке A лежат n карт с номерами от 1 до n (верхняя карта номер 1, нижняя карта номер n). Карты помещаются в стопку Б следующим образом:
1) Возьмите верхнюю карту из стопки А и положите ее в стопку Б.
2) Из обеих стопок мы берем первую карту сверху и кладем ее в конец этой стопки.
3) Если в стопке A больше нет карт, тогда тасовка завершена, иначе возвращаемся к шагу номер 1).
Распечатайте порядок (сверху вниз) карточек в стопке Б.
Например:
если мы введём 7 то ответ будет 1,3,5,7,4,2,6
если мы введём 19 то ответ будет 1,3,5,7,9,11,13,15,17,19,4,8,12,16,2,10,18,14,6
Answers & Comments
Відповідь:
Интересная задачка
Пояснення:
#include <iostream>
using namespace std;
void fillA(int *A,int n){
for(int i = 0; i < n; i++){
A[i] = i + 1;
}
}
void fillB(int *A,int *B,int n){
for(int j = 0; j < n; j++){
B[j] = A[j];
for(int i = 0; i < n - 1; i++){
A[i] = A[i + 1];
}
A[n - 1] = A[j];
}
}
void printB(int *B,int n){
for(int i = 0; i < n; i++){
cout << B[i] << " ";
}
}
int main(){
setlocale(LC_ALL, "Rus");
int n;
cout << "Введите кол-во карт в стопке A: ";
cin >> n;
int *A = new int[n];
int *B = new int[n];
fillA(A,n);
fillB(A,B,n);
printB(B,n);
delete[] A;
delete[] B;
return 0;
}