Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/64: Рейтинг темы: голосов - 64, средняя оценка - 4.94
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2

Развернуть массив, не используя дополнительные массивы и переменные

21.03.2011, 14:04. Показов 12016. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Насколько я понял из условия, может быть только 1 цикловая переменная и 1 массив...
Довольно долго думал над этим вопросом, так ничего дельного и не придумал..
Взято из ЕГЭ, С часть.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2011, 14:04
Ответы с готовыми решениями:

Поменять местами значения целых переменных А и В, не используя дополнительные переменные
Задача 9. Поменять местами значения целых пере¬менных А и В, не используя дополнительные переменные. Задача 39. Во введенной строке...

Машина Тьюринга. Развернуть бинарное слово задом наперед, используя дополнительные построения на ленте при решении
Машина Тьюринга. Развернуть бинарное слово задом наперед, используя дополнительные построения на ленте при решении.

Поменять местами значения целых переменных х и у, не используя дополнительные переменные
Поменять местами значения целых переменных х и у, не используя дополнительные переменные. Сделать в Windows Form Application помогите...

10
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
21.03.2011, 14:11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main (void)
{
    const int SIZE=10;
    int MAS[SIZE]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
    std::cout << "Before: ";
    std::copy (MAS, MAS+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    std::reverse (MAS, MAS+SIZE);
 
    std::cout << "After: ";
    std::copy (MAS, MAS+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    return 0;
}
Ну это так, шутки ради)
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.03.2011, 14:20
Для одномерного массива (вектора):
C++
1
2
3
4
5
for(i=0;i<N/2;i++)
       {      temp=A[i];
             A[i]=A[N-1-i];
             A[N-1-i]=temp;
       }
Для двумерного, если разворачиваем по горизонтали (сверху вниз):
C++
1
2
3
4
5
6
for(i=0;i<N/2;i++)
           for(j=0;j<N;j++)
       {      temp[j]=A[i][j];
             A[i][j]=A[N-1-i][j];
             A[N-1-i][j]=temp[j];
       }
Для двумерного с разворотом по вертикали:
C++
1
2
3
4
5
6
for(j=0;j<N/2;j++)
           for(i=0;i<N;i++)
       {      temp[i]=A[i][j];
             A[i][j]=A[i][N-1-j];
             A[i][N-1-j]=temp[i];
       }
2
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
21.03.2011, 14:21
IrineK, доп. переменные использовать нельзя, у тебя же temp.
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.03.2011, 14:24
diagon - Насколько я понял из условия...
Интересно было бы ознакомиться с условием. Может, понимание углубится и расширится?
1
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
21.03.2011, 14:25
Лучший ответ Сообщение было отмечено как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void _reverse(int *first, int len)
{
  len--;
  for(int i = 0; i < len / 2 + 1; ++i){
    first[i] = first[i] ^ first[len - i];
    first[len - i] = first[i] ^ first[len - i];
    first[i] = first[i] ^ first[len - i];
  }
}
 
int main(void){
  int arr[4] = {4, 3, 2, 1};
  _reverse(arr, 4);
  for(int i = 0; i < 4; ++i)
    printf("%d ", arr[i]);
  return 0;
}
Без доп. памяти.
3
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
21.03.2011, 14:26
Цитата Сообщение от IrineK Посмотреть сообщение
temp=A[i];
использование дополнительной переменной temp
может это как старая шутка поменять две переменных
C++
1
2
3
a^=b;
b^=a;
a^=b;
можно сложением/вычитанием
развернуть массив это что?
развернуть можно цикл
может перевернуть??
2
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
21.03.2011, 14:33
ValeryS, ты прав.
Я и забыл про обмен переменных без использоваться третьей.

Ну тут уже тогда тривиально решается)
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.03.2011, 14:39  [ТС]
Цитата Сообщение от IrineK Посмотреть сообщение
Интересно было бы ознакомиться с условием. Может, понимание углубится и расширится?
Под рукой задания нет, дословно:Напишите на русском языке или любом языке программирования алгоритм разворота(либо переворота, с терминологией проблемка)массива без использования дополнительных переменных и массивов.
Цитата Сообщение от neske Посмотреть сообщение
ValeryS, ты прав.
Я и забыл про обмен переменных без использоваться третьей.

Ну тут уже тогда тривиально решается)
Слабо представляю, как это можно применить в данном случае... Цикловая переменная то одна.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
21.03.2011, 14:47
Вот:

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
#include <iostream>
#include <iterator>
 
int main (void)
{
    const int SIZE=10;
    int MAS[SIZE]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
    std::cout << "Before: ";
    std::copy (MAS, MAS+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
 
    for (int i=0; i<SIZE/2; i++)
    {
        MAS[i]=MAS[i]+MAS[SIZE-i-1];
        MAS[SIZE-i-1]=MAS[i]-MAS[SIZE-i-1];
        MAS[i]-=MAS[SIZE-i-1];
    }
 
 
    std::cout << "After: ";
    std::copy (MAS, MAS+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    return 0;
}
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
21.03.2011, 14:47
в качестве a b используй элементы массива
asics, тебе уже написал
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.03.2011, 14:47
Помогаю со студенческими работами здесь

Поменять местами значения целых переменных х и у, не используя дополнительные переменные
Ребят, срочно нужна помощь. Нужно сделать программу в windows forms. Нужно использовать 2 textbox и 1 button. Чтобы при нажатии на button...

Поменять местами значения целых переменных x и y, не используя дополнительные переменные
Поменять местами значения целых переменных x и y, не используя дополнительные переменные.

Не используя дополнительные переменные, поменять местами значения переменных - множеств А и В
помогите пожалуйста. Вот задание. Не используя дополнительные переменные, поменять местами значения переменных - множеств А и В.

Дана действительная квадратная матрица порядка 2n. Не используя дополнительные массивы, получить новую матрицу
Дана действительная квадратная матрица порядка 2n. Не используя дополнительные массивы, получить новую матрицу, переставляя ее блоками...

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru