Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Vidaldas
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 6
1

Перестановка элементов в одномерном массиве

26.09.2014, 15:52. Просмотров 589. Ответов 11
Метки нет (Все метки)

Доброго времени суток!
Необходимо создать программу, в которой в однородном массиве есть 10 рандомных чисел.
нужно чтобы элементы менялись местами друг с другом 1 с 10, 2 с 9, 3 с 8 и т.д.
например:
Было: 2 4 8 10 12 14 16 18 20 22
Стало: 22 20 18 16 14 12 10 8 4 2.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2014, 15:52
Ответы с готовыми решениями:

Перестановка элементов в массиве
Необходимо поменять местами в массиве найденные min и min2. Помогите пожалуйста #include...

В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму индексов нулевых элементов
В одномерном массиве, состоящем из n вещественных элементов, вычислить: сумму индексов нулевых...

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - произведение отрицательных элементов массива;
В одномерном массиве, состоящем из n вещественных элементов, вычислить: - произведение...

В одномерном массиве, состоящем из вещественных элементов, вычислить: - количество элементов массива, больших С;
7. В одномерном массиве, состоящем из вещественных элементов, вычислить: - количество элементов...

В одномерном массиве, состоящем из N действительных элементов, вычислить: • сумму отрицательных элементов массива; • про
В одномерном массиве, состоящем из N действительных элементов, вычислить: • сумму отрицательных...

11
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
26.09.2014, 16:22 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#define N 10
 
int main()
{
    int mass[N]= {2,4,8,10,12,14,16,18,20,22};
 
    int i,tmp;
 
    for(i=0; i<N; i++)
    {
        printf("%d ",mass[i]);
    }
    printf("\n\n");
 
    for(i=0; i<N/2; i++)
    {
        tmp=mass[i];
        mass[i]=mass[N-i-1];
        mass[N-i-1]=tmp;
    }
 
    for(i=0; i<N; i++)
    {
        printf("%d ",mass[i]);
    }
 
    return 0;
}
0
Catstail
Модератор
25532 / 13131 / 2466
Регистрация: 12.02.2012
Сообщений: 21,493
26.09.2014, 16:33 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
 
using namespace std;
 
void ReverseArr(int *a, int b, int e)
{
     int tmp;
     if ((e-b) <= 1) 
        return;
     else
     {
         tmp=*(a+b);
         *(a+b)=*(a+e);
         *(a+e)=tmp;
         ReverseArr(a,b+1,e-1);
     }   
}
 
int main(int argc, char *argv[])
{
    int A[]={2, 4, 8, 10, 12, 14, 16, 18, 20, 22};
    int i,n=sizeof(A)/sizeof(int);
    
    printf("Initial array:         ");
    for (i=0; i<n; i++) printf("%d ",A[i]);
    
    ReverseArr(A,0,n-1);
    
    printf("\nArray after reverse:   ");
    for (i=0; i<n; i++) printf("%d ",A[i]);
    
    printf("\n");
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Vidaldas
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 6
26.09.2014, 16:49  [ТС] 4
спасибо но я работаю на нетбинс впервые, и не могу до конца понять написанное
0
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
26.09.2014, 17:04 5
Vidaldas, что конкретно не понятно?
0
Vidaldas
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 6
26.09.2014, 17:06  [ТС] 6
for(i=0; i<N/2; i++)
вот это вот
почему тут N\2?
0
Catstail
Модератор
25532 / 13131 / 2466
Регистрация: 12.02.2012
Сообщений: 21,493
26.09.2014, 17:07 7
А при чем здесь среда (NetBeans)? С, он и в Африке C...
0
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
26.09.2014, 17:12 8
Vidaldas, N/2 потому что надо сделать именно столько перестановок.
0<=>9
1<=>8
2<=>7
3<=>6
4<=>5
Если N будет нечетным, то элемент в середине массива останется на своем месте.
0
Vidaldas
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 6
26.09.2014, 17:22  [ТС] 9
понятно, вот еще вопрос будет ли ошибкой написать вот так:
for(i=0;i<5;i++)
for(j=9;j>4;J--)?
0
kasan
Чорумфанин
343 / 343 / 320
Регистрация: 06.03.2014
Сообщений: 899
26.09.2014, 17:40 10
Можно написать по-разному. Зачем Вы хотите использовать еще один цикл по j?
Чтоб поменять местами два элемента нужно знать их индексы, индексация начитается с 0.
C
1
2
3
4
5
6
for(i=0; i<5; i++)  // для конкретной задачи можно писать i<5
    {
        tmp=mass[i];   // запоминаем значение во вспомогательную переменную
        mass[i]=mass[10-i-1]; // присваиваем значение одного элемента другому
        mass[10-i-1]=tmp; // присваиваем значение из вспомогательной переменной, замена закончена
    }
Пример
при i=0
в tmp записываем значение mass[0]
в mass[0] записываем значение mass[10-i-1], тут индекс зависит от i. при первом проходе будет mass[10-0-1], mass[9]
потом в mass[9] записываем то что у нас в tmp.

при i=1
в tmp записываем значение mass[1]
в mass[1] записываем значение mass[10-i-1], тут индекс зависит от i. при первом проходе будет mass[10-1-1], mass[8]
потом в mass[8] записываем то что у нас в tmp.

и так до i=4 включительно
0
Catstail
Модератор
25532 / 13131 / 2466
Регистрация: 12.02.2012
Сообщений: 21,493
26.09.2014, 18:12 11
Цитата Сообщение от kasan Посмотреть сообщение
Можно написать по-разному. Зачем Вы хотите использовать еще один цикл по j?
- там и одного много
0
Vtulhu
425 / 379 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
27.09.2014, 11:23 12
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
 
#define N 10
 
void
swap(int* const a, int* const b)
{
    int t = *a;
    *a = *b;
    *b = t;
}
 
void
reverse(int* arr, const unsigned int siz)
{
    int* last = arr + siz - 1;
    while( arr < last ) {
        swap(arr++, last--);
    }
}
 
int
main(void)
{
    int mass[N] = {
        2, 4, 8, 10, 12, 14, 16, 18, 20, 22
    };
 
    reverse(mass, N);
 
    unsigned int i;
    for( i = 0; i < N; ++i ) {
        printf("%d ", mass[i]);
    }
 
    return 0;
}
0
27.09.2014, 11:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2014, 11:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В одномерном массиве, состоящем из n элементов, вычислить произведение элементов массива, расположенных между вторым и третьим равным 0
напишите пожалуйста

В одномерном массиве , состоящем из n целых элементов
В одномерном массиве , состоящем из n целых элементов , вычислить : 1. минимальный по модулю...

Количество одинаковых элементов в одномерном массиве
Помогите написать программу, определяющую, сколько раз встречается данный элемент в одномерном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.