1 Востаннє редагувалося User 298 (25.02.2013 13:50:15)

Тема: Переставляння елементів масиву у зворотньому порядку*

#include <vcl.h>
    #include <iostream.h>

 #include<conio.h>
int main ()
{


    int a[9],i,b[5];
           int j = 0,temp = 0;
    for (i = 0; i < 9; i++)
    {
     cin>>a[i];

    }
           for (i = 0; i < 9; i++)
    {
     cout << a[i] << " ";
       }


    for (i = 0; i < 9; i++)
    {
        if ( i%2 == 0)
        {
            b[j] = a[i];

            j++;
        }
        }
           cout << "\n";

         for (j = 0; j < 5; j++)
    {
    cout << b[j] << " ";
    }
    cout << "\n";


     getch ();
    return 0;
}

Переставить элементы массива в обратном порядке, т.е первый на место последнего, второй на место предпоследенего и т.д.

поясніть  як  працює  перестановка

2 Востаннє редагувалося Пам'ять не може бути READ (18.02.2013 18:30:58)

Re: Переставляння елементів масиву у зворотньому порядку*

Юзайте array_reverse

3

Re: Переставляння елементів масиву у зворотньому порядку*

reywwe95 написав:

поясніть  як  працює  перестановка

Тут простіше реалізувати задачу інакшим чином, ніж вкурити логіку цього коду.

З.І: вам потрібна чиста С чи С++?

4

Re: Переставляння елементів масиву у зворотньому порядку*

Hanter написав:

Юзайте array_reverse

А для проектів на роботі варто згадати також алгоритм reverse.

5

Re: Переставляння елементів масиву у зворотньому порядку*

мені    без з різнисі навіть  С++  краще array_reverse     що  це    таке   я  реалізував  так

#include <vcl.h>
    #include <iostream.h>

 #include<conio.h>
int main ()
{


    int a[9],i,b[5];
           int j = 0,temp = 0;
    for (i = 0; i < 9; i++)
    {
     cin>>a[i];

    }
           for (i = 0; i < 9; i++)
    {
     cout << a[i] << " ";
       }


    for (i = 0; i < 9; i++)
    {
        if ( i%2 == 0)
        {
            b[j] = a[i];

            j++;
        }
        }
           cout << "\n";

         for (j = 0; j < 5; j++)
    {
    cout << b[j] << " ";
    }
    cout << "\n";
            for (int j=5-1;j>=0;j-- )
        {

                cout<<b[j]<<endl;

        }


     getch ();
    return 0;
}

6

Re: Переставляння елементів масиву у зворотньому порядку*

але   програма  працює  не   розумію  принципа    реверсу ???

7

Re: Переставляння елементів масиву у зворотньому порядку*

reywwe95 написав:

але   програма  працює  не   розумію  принципа    реверсу ???

Задача у вас не вирішена: створюється інший масив, а не модифікується первісний.

array_reverse - це функція за посиланням, що кинув Hanter.

Я трошки пізніше підкину варіант свопа масиву без використання додаткових масивів. Тоді по коду вам стане зрозумілим і принцип реверсу.

8

Re: Переставляння елементів масиву у зворотньому порядку*

const int size = 10;
int arr[size] = {0};
/* input array in any way */

int temp = 0;

for(int i=0; i < size/2; i++)
{
    temp = arr[i];
    arr[i] = arr[size-i-1];
    arr[size-1-i] = temp;
}

/* That's all :) */

А ваш код, reywwe95, мене дещо в ступор поставив. Ви або хибно сформулювали нам умову задачі, або код не відповідає їй, бо у результаті маємо пів-масива зрізом через один, а не реверсивний масив.  :)

З.І: перейменуйте тему та умову задачі українською мовою.