Консультация № 175700
28.12.2009, 16:12
35.00 руб.
0 5 4
Дан целочисленный массив. Распечатать его в следующем порядке: сначала нулевой элемент, затем последний, затем первый, затем предпоследний и т.д.

Приложение:
помогите пожалуйста реализовать эту задачу в Microsoft Visual C++ 6

Обсуждение

Неизвестный
28.12.2009, 16:28
общий
это ответ
Здравствуйте, Никита Веретенников.
Это можно реализовать, используя следующий цикл:
for (int i=0; i<dlina; i++)
{cout<<massiv[i];
cout<<massiv[dlina-i]
}
т.е. массив 123456 будет выведен так: 162534435261

давно
Профессор
230118
3054
28.12.2009, 16:34
общий
Никита Веретенников:
Значения должны повторяться, как в первом ответе?
Неизвестный
28.12.2009, 16:38
общий
это ответ
Здравствуйте, Никита Веретенников.
код программы с коментариями в приложении

Приложение:
#include <iostream>
#include <ctime>
#include <conio.h>

using namespace std;

int main()
{
int *mas=NULL,n;

// ввод размерности массива (значение должны быть от 0 до 30)
do {
cout<<"N = ";
cin>>n;
}while(n<0 || n>30);

mas=new int[n];

if(!mas) // если ошибка при выделении памяти
{
cout<<"Error!";
_getch();
return 1;
}

srand(time(0));
cout<<"\nIshodniy massiv\n";
for(int i=0;i<n;i++)
{
mas[i]=rand()%100; // инициализация и вывод исходного массива
cout<<mas[i]<<" ";
}

cout<<"\n\nResultat\n";
for(int i=0,j=n-1;i<n/2,j>=n/2;i++,j--) // вывод по условию задания
{
cout<<mas[i]<<" ";
if(j!=n/2-1 && i<n/2 )
cout<<mas[j]<<" ";
}

delete [] mas;
_getch();
}

давно
Академик
320937
2216
28.12.2009, 18:02
общий
это ответ
Здравствуйте, Никита Веретенников. Предлагаю рекурсивный вариант. Ответ в приложении. G++. Протокол работы:
Код:
Массив
16;34;0;5;61;30;26;10;37;15
Результат :16;15;34;37;0;10;5;26;61;30


Приложение:
/*
Вопрос № 175700.C++
Дан целочисленный массив. Распечатать его в следующем порядке:
сначала нулевой элемент, затем последний, затем первый, затем предпоследний и т.д.
*/
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void my_print(const int *v, const int first, const int last);

int main()
{
const int size = 10; // Размер массива
int arr[size]; // Массив целых

srand(time(NULL)); // начальное значение, генерируемое таймером
for (int i=0; i<size; i++)
{
arr[i]=rand()%100; // заполнение массива псевдослучайными числами
}

cout << "Массив" << endl; // эхо-печать
for (int i=0; i<size; i++)
{
cout << arr[i];
if (i<size-1)
cout << ";";
}
cout << endl;

cout << "Результат :";
my_print(arr, 0, size-1);
cout << endl;

return 0;
}

void my_print(const int *v, const int first, const int last)
{ // рекурсивная процедура печати
if(last<0) // нет элеиментов
{
cout << "Пустой массив" << endl;
return;
}
else if (first == last) // только один элемент
cout << v[last] << endl;
else if (first+1==last) // только два элемента
cout << v[first] << ";" << v[last] << endl;
else
{
cout << v[first]<<";";
cout << v[last]<<";";
my_print(v, first+1, last-1);
}
}
Неизвестный
28.12.2009, 18:42
общий
это ответ
Здравствуйте, Никита Веретенников.
Программа. С++. Программа настолько проста, что не комментировал.
Код:
#include <iostream>
#include <locale>

using namespace std;

template<class _Ty,size_t _Dim>
void printArray(_Ty (&arr)[_Dim])
{
for(size_t i=0;i<_Dim;++i)
{
cout<<arr[i&1?_Dim-1-(i>>1):i>>1]<<' ';
}
cout<<endl;
}

int main()
{
locale::global(locale(""));
int arr[10];
const size_t arrSize=sizeof(arr)/sizeof(arr[0]);
cout<<"Массив выводим в нормальном порядке:"<<endl;
for(size_t i=0;i<arrSize;++i)
{
arr[i]=i+1;
cout<<arr[i]<<' ';
}
cout<<endl
<<"Выводим в хитром порядке:):"<<endl;
printArray(arr);
system("PAUSE");
return 0;
}

Вывод программы:
Код:
Массив выводим в нормальном порядке:
1 2 3 4 5 6 7 8 9 10
Выводим в хитром порядке:):
1 10 2 9 3 8 4 7 5 6
Форма ответа