Изначальная задача была такая, ее решение внизу: поменять 1 и последний элемент во "2" массиве местами (с "1" массивом)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int n, i, b;
cout << "введите размерность\n";
cin >> n;
int* arr = new int[n];
cout << "введите числа\n";
for (i = 0; i < n; i++) { cin >> arr[i]; }
cout << "\nвот 1 массив:\n";
for (i = 0; i < n; i++) { cout << arr[i] << ", "; }
b = arr[0];
arr[0] = arr[n - 1];
arr[n - 1] = b;
cout << "\nвот 2 массив: \n";
for (i = 0; i < n; i++) {
cout << arr[i] << ", ";
}
}
!!! Нужно сделать так, чтобы во "2" массиве все было наоборот в сравнении с "1" массивом
пример: 1 2 5 6 7
7 6 5 2 1
Желательно как-то это сделать с помощью подобного способа, если возможно
b = arr[0];
arr[0] = arr[n - 1];
arr[n - 1] = b;
C/C++
C++ Одномерный динамический массив
Для инвертирования (обращения) массива алгоритма лучшего чем у Порыва Мрака нет. Надо только лишнюю операцию индексной арифметики убрать из цикла обращения. У меня тоже с функцией обмена элементов swap, но не своей собственной, а со стандартной, которая меня вполне устраивает:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int n, i, b;
cout << "введите размерность\n";
cin >> n;
int *arr = new int[n];
cout << "введите числа\n";
for (i = 0; i < n; i++)
{
cin >> arr[i];
}
cout << "\nвот 1 массив:\n";
for (i = 0; i < n; i++)
{
cout << arr[i] << ", ";
}
b = n - 1;
for (i = 0; i < n / 2; i++)
swap(arr[i], arr[b - i]);
cout << "\nвот 2 массив: \n";
for (i = 0; i < n; i++)
{
cout << arr[i] << ", ";
}
cout << endl;
cin.get(); cin.get();
}
Или так:
#include <iostream>
using namespace std; int main()
{ setlocale(LC_ALL, "Russian"); int n, i, b;
cout << "введите размерность\n"; cin >> n;
int *arr = new int[n];
cout << "введите числа\n";
for (i = 0; i < n; i++) cin >> arr[i];
cout << "\nвот 1 массив:\n";
for (i = 0; i < n; i++) cout << arr[i] << ", ";
for (i = 0; i < n / 2; i++) { b = arr[i];
arr[i] = arr[n - 1 - i]; arr[n - 1 - i] = b; }
cout << "\nвот 2 массив: \n";
for (i = 0; i < n; i++) cout << arr[i] << ", ";
cout << endl; cin.get(); cin.get(); return 0; }
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int n, i, b;
cout << "введите размерность\n";
cin >> n;
int *arr = new int[n];
cout << "введите числа\n";
for (i = 0; i < n; i++)
{
cin >> arr[i];
}
cout << "\nвот 1 массив:\n";
for (i = 0; i < n; i++)
{
cout << arr[i] << ", ";
}
b = n - 1;
for (i = 0; i < n / 2; i++)
swap(arr[i], arr[b - i]);
cout << "\nвот 2 массив: \n";
for (i = 0; i < n; i++)
{
cout << arr[i] << ", ";
}
cout << endl;
cin.get(); cin.get();
}
Или так:
#include <iostream>
using namespace std; int main()
{ setlocale(LC_ALL, "Russian"); int n, i, b;
cout << "введите размерность\n"; cin >> n;
int *arr = new int[n];
cout << "введите числа\n";
for (i = 0; i < n; i++) cin >> arr[i];
cout << "\nвот 1 массив:\n";
for (i = 0; i < n; i++) cout << arr[i] << ", ";
for (i = 0; i < n / 2; i++) { b = arr[i];
arr[i] = arr[n - 1 - i]; arr[n - 1 - i] = b; }
cout << "\nвот 2 массив: \n";
for (i = 0; i < n; i++) cout << arr[i] << ", ";
cout << endl; cin.get(); cin.get(); return 0; }
Юрий Афанасьев
спасибо, а можно ли чем-то заменить swap?
Юрий Афанасьев
Все-все, еще раз огромное спасибо
О, как!
#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Размер массива: ";
size_t length;
cin >> length;
if (!length) exit(0);
auto box = new int[length];
auto end = box + length;
iota(box, end, 1);
copy(box, end, ostream_iterator<int>(cout, " "));
puts("");
reverse(box, end);
copy(box, end, ostream_iterator<int>(cout, " "));
puts("");
delete[] box;
system("pause > nul");
}
#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Размер массива: ";
size_t length;
cin >> length;
if (!length) exit(0);
auto box = new int[length];
auto end = box + length;
iota(box, end, 1);
copy(box, end, ostream_iterator<int>(cout, " "));
puts("");
reverse(box, end);
copy(box, end, ostream_iterator<int>(cout, " "));
puts("");
delete[] box;
system("pause > nul");
}
#include <iostream>
using namespace std;
void printArray(int *a, int k){
for(int i = 0; i < k; i++)
cout << a[i] << " ";
cout << "\n";
}
void customSwap(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int n;
cout << "Input amount of elements in the array:\n";
cin >> n;
int *arr = new int[n];
cout << "Input elements of the array:\n";
for(int i = 0; i < n; i++)
cin >> arr[i];
cout << "Initial array is:\n";
printArray(arr, n);
for(int i = 0; i < n / 2; i++)
customSwap(arr[i], arr[n - i - 1]);
cout << "Altered array is:\n";
printArray(arr, n);
}
using namespace std;
void printArray(int *a, int k){
for(int i = 0; i < k; i++)
cout << a[i] << " ";
cout << "\n";
}
void customSwap(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int n;
cout << "Input amount of elements in the array:\n";
cin >> n;
int *arr = new int[n];
cout << "Input elements of the array:\n";
for(int i = 0; i < n; i++)
cin >> arr[i];
cout << "Initial array is:\n";
printArray(arr, n);
for(int i = 0; i < n / 2; i++)
customSwap(arr[i], arr[n - i - 1]);
cout << "Altered array is:\n";
printArray(arr, n);
}
Юрий Афанасьев
А почему здесь for(int i = 0; i < n / 2; i++) именно i < n/2 ?
ты уж определись тебе надо 1 элемент с последним в массиве поменять или развернуть его. Это далеко не одно и то же
Юрий Афанасьев
1 с последним это я сделала и написала решение задачи. Нужно "развернуть"
Похожие вопросы
- C++ добавить элемент, который введет пользователь в одномерный динамический массив
- C++ добавить динамический массив в код Чтоб он работал
- C++ одномерный массив
- C++ динамический массив
- Программирование на C++ с использованием динамического массива
- Устройство статических и динамических массивов в оперативной памяти (...)
- Размер динамического массива, передаваемого в функцию в C++.
- Двумерный динамический массив с неизвестны количеством столбиков или строк
- Почему динамический массив напрямую в функцию передать нельзя, а динамический массив указателей можно?
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.