Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
#1

Поменять начало и конец - C++

21.01.2014, 19:43. Просмотров 709. Ответов 21
Метки нет (Все метки)

дан массив из m+n элементов. начало массива это a[0]..a[m], конец массива это a[m+1]..a[m+n]. написать функцию, котороая меняет начало и конец местами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять начало и конец (C++):

Змейка. Начало и конец. - C++
Решил написать Змейку с нуля. Не хотелось бы никуда подглядывать и копировать чужие идеи - хочется создать свое "колесо" =) Решил все это...

начало и конец подпоследовательности - C++
Дано натуральные число n и целые числа а1, а2 ... аn. Для последовательности а1, а2 ... аn рассмотреть подпоследовательности членов, что...

Введите начало и конец отрезка - C++
Здравствуйте! Возникла проблема! В int program мне нужно проверить начало и конец отрезка на то, что они неотрицательные и не являются...

Добавление числа в начало и конец - C++
Дано число n Добавить по единице вначале и в конце записи числа n. как добавить единицу в конце - знаю, а как вначале? подскажите,...

начало и конец цикла в коде. - C++
Вот программа по определению магического квадрата из матрицы, заданной в txt файле. #include "stdafx.h" #include <iostream> #include...

Четные в начало массива, нечетные - в конец - C++
четные в начало массива выводит, а вот нечетные не хочет.. пишет вместо них какие-то тысячные числа, которых в исходном массиве нет....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ev_Hyper
Заблокирован
21.01.2014, 20:20 #2
Выбор m как происходит?
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 20:32  [ТС] #3
Ev_Hyper, m и n самому вводить
Ev_Hyper
Заблокирован
21.01.2014, 20:35 #4
Элементы массива задаются программно или пользователи их вводит?

Правильно ли я вас понял, есть массив

>>m?
3
>>n?
6

2 3 4 0 9 7 6 3 -2 3

В итоге:
9 7 6 3 -2 3 2 3 4 0
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 20:42  [ТС] #5
Ev_Hyper, массив задается программно
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Правильно ли я вас понял, есть массив
>>m?
3
>>n?
6
2 3 4 0 9 7 6 3 -2 3
В итоге:
9 7 6 3 -2 3 2 3 4 0
да
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
21.01.2014, 20:48 #6
Цитата Сообщение от ffynjy Посмотреть сообщение
дан массив из m+n элементов. начало массива это a[0]..a[m], конец массива это a[m+1]..a[m+n].
ты старательно описал массив m+n+1
посмотри тему про циклический сдвиг массива, это как раз твой вариант
Функция сдвига массива
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
21.01.2014, 20:49 #7
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
#include <iostream>
 
void reverse(int *a, const int size)
{
    for (int i=0; i < size/2; i++)
    {
        int tmp = a[i];
        a[i] = a[size - 1 - i];
        a[size - 1 - i] = tmp;
    }
}
 
int main()
{
    int m, n;
    std::cin >> m >> n;
    int* a = new int[m*n];
    std::cout << "Before:\n";
    for (int i=0; i < m*n; i++)
    {
        a[i] = i+1;
        std::cout << a[i] << " ";
    }
 
    swap(a, m*n);
    std::cout << "\nAfter:\n";
    for (int i=0; i < m*n; i++)
        std::cout << a[i] << " ";
 
    delete[] a;
    std::cout << std::endl;
}
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
21.01.2014, 20:53 #8
Цитата Сообщение от MrGluck Посмотреть сообщение
swap
я бы назвал reverse
все таки разворачиваешь массив а не переставляешь элементы
MrGluck
21.01.2014, 20:55
  #9

Не по теме:

Переименовал, изначально от функции другого хотел (то, что фактически внутри цикла описано), потом заленился и написал лишь одну функцию.

ValeryS
21.01.2014, 21:04
  #10

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Переименовал,
ага
Цитата Сообщение от MrGluck Посмотреть сообщение
void reverse(int *a, const int size)
Цитата Сообщение от MrGluck Посмотреть сообщение
swap(a, m*n);
напиши заново
я так понял редактировать уже не можешь

ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 21:14  [ТС] #11
Цитата Сообщение от MrGluck Посмотреть сообщение
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
#include <iostream>
 
void reverse(int *a, const int size)
{
    for (int i=0; i < size/2; i++)
    {
        int tmp = a[i];
        a[i] = a[size - 1 - i];
        a[size - 1 - i] = tmp;
    }
}
 
int main()
{
    int m, n;
    std::cin >> m >> n;
    int* a = new int[m*n];
    std::cout << "Before:\n";
    for (int i=0; i < m*n; i++)
    {
        a[i] = i+1;
        std::cout << a[i] << " ";
    }
 
    swap(a, m*n);
    std::cout << "\nAfter:\n";
    for (int i=0; i < m*n; i++)
        std::cout << a[i] << " ";
 
    delete[] a;
    std::cout << std::endl;
}
Твоя программа не меняет конец с началом местами,а просто переворачивает массив
(то есть 1,2,3,4 заменяется 4,3,2,1)
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
21.01.2014, 21:25 #12
Цитата Сообщение от ffynjy Посмотреть сообщение
Твоя программа не меняет конец с началом местами,а просто переворачивает массив
(то есть 1,2,3,4 заменяется 4,3,2,1)
так выражайтесь четче - поменять конечный элемент с начальным.
И пусть тогда мой код будет для вас примером, ибо меняя местами все элементы в массиве, поменять лишь два из них - частный случай и делается гораздо легче.
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 21:39  [ТС] #13
MrGluck, например m=3 и n=2 массив получается 1,2,3,4,5 и далее надо поменять элементы до m c элементами от m+1 до n, то есть должно получится 4,5,1,2,3
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
21.01.2014, 21:48 #14
Цитата Сообщение от ffynjy Посмотреть сообщение
например m=3 и n=2 массив получается 1,2,3,4,5 и далее надо поменять элементы до m c элементами от m+1 до n, то есть должно получится 4,5,1,2,3
это и есть циклический сдвиг
ссылку смотрел которую я в 6 посте скинул?
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 23:11  [ТС] #15
ValeryS,
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
38
#include "stdafx.h"
#include <iostream>
using namespace std;
 
void swap(int *a, const int size, int m)
{
int k = 0;
while (k <= m)
{
for (int i = 0; i < size; i++)
{
int tmp = a[i];
a[i] = a[size - 1 ];
a[size - 1] = tmp;
}
k++;
}
}
 
int main()
{
int m, n;
cin » m » n;
int* a = new int[m+n];
cout « "Before:\n";
for (int i = 0; i < m+n; i++)
{
a[i] = i + 1;
cout « a[i] « " ";
}
 
swap(a, m+n,m);
cout « "\nAfter:\n";
for (int i = 0; i < m+n; i++)
cout « a[i] « " ";
 
delete[] a;
cout « endl;
программа вроде работает, может попроще как-то можно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2014, 23:11
Привет! Вот еще темы с ответами:

Вставить символы в начало и конец строки - C++
Дана строка символов. Сформируйте новую строку, начинающуюся с символа а (вводится с клавиатуры) и заканчивающуюся символом b (вводится с...

Перенос букв в начало строки, а цифр в конец C++ - C++
Подскажите пожалуйста как осуществить данное преобразование на языке C++ Дана строка с цифрами и буквами, необходимо осуществить...

Не используя дополнительных массивов переставить начало и конец массива - C++
Помогите решыть задачу: Дан масив целых чисел x....x рассматриваемый как соединение двух его отрезков : начала x....x длины m и конца...

Каков набор кода означающий начало и конец файла - C++
Хм... есть парочка вопросов, правда не знаю в данную тематику или нет надо сие писать но т.к. это важно для моего познания СИ, создаю тему...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.01.2014, 23:11
Ответ Создать тему
Опции темы

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