Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.04.2020
Сообщений: 8
1

Реверс массива

12.04.2020, 21:59. Показов 967. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста
Задание:
Расположить элементы массива a в обратном порядке. Инициализация эле-ментов массива: a[10]={0, 1,2,3,4,5,6,7,8,9}.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2020, 21:59
Ответы с готовыми решениями:

Реверс массива
Написать программу, которая выводит содержимое массива на оборот. Пример: массив 23 11 6...

Реверс массива в диапазоне от K до M
Реверс массива – это перестановка элементов в обратном порядке: меняются местами первый и последний...

Реверс одномерного массива
задача в следующем: Описать функцию Invert( ), меняющую порядок следования элементов массива A из...

Произвести реверс положительных элементов массива
Дан массив целых чисел, состоящий из N элементов (N=10). Произвести реверс положительных элементов...

13
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17579 / 10330 / 2822
Регистрация: 21.10.2017
Сообщений: 22,397
14.04.2020, 22:41 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
#include <stdio.h>
 
#define SIZE 10
 
void show(int *arr, int size);
 
int main(void) {
    int a[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, temp;
    show(a, SIZE);
    for (int i = 0, j = SIZE - 1; i < SIZE / 2; ++i, --j) {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
    putchar('\n');
    show(a, SIZE);
}
 
void show(int *arr, int size){
    for (int i = 0; i < size; ++i) {
        printf("%d ", *arr++);
    }
}
1
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,225
15.04.2020, 04:45 3
iSmokeJC, у вас уже есть две переменные-счетчика в цикле реверса, не за чем делать дополнительное вычисление SIZE/2, оно актуально, когда у вас одна переменная.

пример с 2 переменными:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#define SIZE 10
#define swap(a, b) {int t=a; a=b; b=t;}
void show (int *arr, int size);
 
int main (void) {
    int a[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    show(a, SIZE);
    for (int i = 0, k = SIZE-1; i < k; ++i, --k)
        swap(a[i], a[k]);
    show(a, SIZE);
    return 0;
}
// --------------------------------------------
void show (int *arr, int size) {
    for (int i = 0; i < size; ++i)
        printf("%4d", arr[i]);
    putchar('\n');
}
// --------------------------------------------
с одной:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#define SIZE 10
#define swap(a, b) {int t=a; a=b; b=t;}
void show (int *arr, int size);
 
int main (void) {
    int a[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    show(a, SIZE);
    for (int i = 0; i < SIZE>>1; ++i)
        swap(a[i], a[SIZE-1-i]);
    show(a, SIZE);
    return 0;
}
// --------------------------------------------
void show (int *arr, int size) {
    for (int i = 0; i < size; ++i)
        printf("%4d", arr[i]);
    putchar('\n');
}
// --------------------------------------------
2
2 / 2 / 0
Регистрация: 19.04.2020
Сообщений: 24
23.04.2020, 10:15 4
Легко и просто

C
1
2
3
4
int i, j, b[SIZE];
 
for (i  = 0, j = SIZE - 1; i < SIZE, j >= 0; i++, j--)
  a[i] = b[j];
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17579 / 10330 / 2822
Регистрация: 21.10.2017
Сообщений: 22,397
23.04.2020, 10:27 5
Цитата Сообщение от Prog
Легко и просто
Ты целиком функцию приведи
0
2 / 2 / 0
Регистрация: 19.04.2020
Сообщений: 24
23.04.2020, 10:37 6
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ты целиком функцию приведи
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ты целиком функцию приведи
А зачем? Это цикл, априори переворачивающий массив и записывающий перевёрнутый массив в новый массив, это позволяет затем работать с этим массивом
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17579 / 10330 / 2822
Регистрация: 21.10.2017
Сообщений: 22,397
23.04.2020, 11:51 7
Цитата Сообщение от Prog
в новый массив
Ну да, зачем изгаляться и экономить.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
23.04.2020, 11:59 8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void revArr(int *arr,int b,int e)
{
    int t;
    if ((e-b)<=1) return;
    t=arr[b]; arr[b]=arr[e]; arr[e]=t;
    revArr(arr,b+1,e-1);
}
 
int main()
{
    int x[]={0,1,2,3,4,5,6,7,8,9};
    int i;
    for(i=0;i<10; i++) printf("%d ",x[i]); printf("\n");
    revArr(x,0,9);
    for(i=0;i<10; i++) printf("%d ",x[i]); printf("\n");
    return 0;
}
1
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17579 / 10330 / 2822
Регистрация: 21.10.2017
Сообщений: 22,397
23.04.2020, 12:06 9
Вот! Надо 10К раз развернуть массив - не создавать же 10К новых.
Catstail,
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
23.04.2020, 12:19 10
iSmokeJC, так я и не создаю...
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17579 / 10330 / 2822
Регистрация: 21.10.2017
Сообщений: 22,397
23.04.2020, 12:22 11
Catstail, так я про то и говорю. Это к ответу Prog
1
2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740
23.04.2020, 22:25 12
Цитата Сообщение от Boms Посмотреть сообщение
Задание:
Расположить элементы массива a в обратном порядке. Инициализация эле-ментов массива: a[10]={0, 1,2,3,4,5,6,7,8,9}.
Какой вопрос - такой ответ...
C
1
2
3
4
5
6
7
int main()
{
    int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, i = a[9]; 
 
    while( i >= 0 )
        printf( "%d ", a[i] = i-- );
}
0
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,358
23.04.2020, 22:42 13
Catstail, перефразирую немного, а то рекурсия чуток глаз режет

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
#include <stdio.h>
 
void revArr(int *arr,int size)
{
    if(size<=1)return;
    
    int t=0;
    int* b=arr;
    int* e=arr+size-1;
    for( ;b<e; b++,e--)
    {
        t=*b; *b=*e; *e=t;
    }
}
 
int main()
{
    int x[]={0,1,2,3,4,5,6,7,8,9};
    const int size=sizeof(x)/sizeof(*x);
    
    int i;
    for(i=0;i<size; i++) printf("%d ",x[i]); printf("\n");
    
    revArr(x,size);
    
    for(i=0;i<size; i++) printf("%d ",x[i]); printf("\n");
    return 0;
}
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
24.04.2020, 07:08 14
Цитата Сообщение от Алексей1153 Посмотреть сообщение
рекурсия чуток глаз режет
- не замечал...
0
24.04.2020, 07:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2020, 07:08
Помогаю со студенческими работами здесь

Реверс строки
Помогите исправить! Программа должна перевернуть строку (Hello world --&gt; dlrow olleH), но как-то не...

Реверс строки
#include &lt;stdio.h&gt; #define MAXLINE 1000 int getline(char line, int lim); void reverse(char from,...

Рекурсивный реверс последнего слова в строке
перевернуть последнее слово в строке ,рекурсивно

Произвести реверс бит десятичного числа вводимого с клавиатуры при использовании поразрядных операций
Решите пожалуйста. в долгу не останусь, экзамен горит Произвести реверс бит десятичного числа...

Дан массив А. Образовать реверс массива А в массиве В. Вывести оба массива и индексы элементов на экран в виде трех столбцов.
Дан массив А. Образовать реверс массива А в массиве В. Вывести оба массива и индексы элементов на...

Реверс массива
Нужно сделать реверс чисел в массиве, написал код, но выдаёт при вводе 1 2 3 4 5 6 7 8 9 9 не...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru