Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
ashta
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
1

Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке

12.04.2013, 20:11. Просмотров 557. Ответов 9
Метки нет (Все метки)

Подскажите, пожалуйста, как сделать перестановку чисел в семерке. Т.е. число в 0 индексом поменять с 6, 1 - с 5ым, 2ое с 4м, 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
# include <iostream>
# include <stdlib.h>
# include <time.h>
using namespace std;
 
void main ()
{
    srand (time(NULL));
 
    const int size=49;
    int arr[size];
    int i, temp;
 
    //генерация чисел массива
    for (i=0; i<size; i++)
        arr[i]=rand()%50;
    cout<<"Massive\n"<<arr[i];
 
    //перестановка элементов
    for (i=0; i<size/7; i++)
        temp=arr[i*7];
    arr[i*7]=arr[i*7-5];
 
    cout<<"\nChanged massive\n:"<<"\n"<<arr[i];
 
    for (i=0; i<size; i++)
        cout<<arr[i];
        
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 20:11
Ответы с готовыми решениями:

Дан массив В[0:n-1] целых чисел и числа x и y , где x<y. на основе элементов массива В сформировать массив D[0:m-1]
Нужен полный текст программы, заранее благодарен

Дан массив целых чисел, в котором есть нулевые элементы. Создать массив из номеров этих элементов
Дан массив целых чисел, в котором есть нулевые элементы. Создать массив из...

Дан двумерный массив целых чисел. Вычислить количество четных чисел среди элементов, встречающихся в массиве ровно 3 раза
Кто может, помогите пожалуйста:)

Дан массив целых чисел. Сделать задание с использованием пользовательских функций
Дан массив целых чисел. Все его элементы: a) увеличить в 2 раза б) умножить...

Дан массив целых чисел, содержащий 20 элементов
Написал прогу, вот только интересно, правильно ли я понял условие, вообщем вот...

9
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
12.04.2013, 20:38 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
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iterator>
 
using namespace std;
 
int random()
{
    return rand() % 90 + 10;
}
 
int main()
{
    setlocale(LC_CTYPE, "");
    srand((time(0)));
    vector<int> vec(49);
    generate(vec.begin(), vec.end(), random);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
    reverse(vec.begin(), vec.begin() + 7);
    reverse(vec.rbegin(), vec.rbegin() + 7);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    return 0;
}
Если нужна функция, реализующая перестановку, то вот она:
C++
1
2
3
4
5
6
7
8
template <class T>
void _reverse(T beg, T en)
{
    while ((beg!=en) && (beg!=--en)) {
        swap(*beg, *en);
        beg++;
    }
}
2
ashta
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 19:49  [ТС] 3
Цитата Сообщение от Olivеr Посмотреть сообщение
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 <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iterator>
 
using namespace std;
 
int random()
{
    return rand() % 90 + 10;
}
 
int main()
{
    setlocale(LC_CTYPE, "");
    srand((time(0)));
    vector<int> vec(49);
    generate(vec.begin(), vec.end(), random);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
    reverse(vec.begin(), vec.begin() + 7);
    reverse(vec.rbegin(), vec.rbegin() + 7);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    return 0;
}
Если нужна функция, реализующая перестановку, то вот она:
C++
1
2
3
4
5
6
7
8
template <class T>
void _reverse(T beg, T en)
{
    while ((beg!=en) && (beg!=--en)) {
        swap(*beg, *en);
        beg++;
    }
}
Спасибо Oliver, но ничего не понятно. Функции и векторы для реализации этой задачи не подойдут. Это далеко вперед. Нужно ее попроще решить.
0
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
14.04.2013, 20:39 4
ashta, а что Вам мешает в том коде заменить вектор на массив? Тем более, функцию перестановки я Вам написал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class T>
void _reverse(T *beg, T *en)
{
    while ((beg!=en) && (beg!=--en)) {
        swap(*beg, *en);
        beg++;
    }
}
 
int main()
{
 
    int arr[7] = {1,2,3,4,5,6,7};
    _reverse(arr, arr+7);
    for (size_t i = 0; i!=7; i++)
        cout << arr[i] << " ";
 
    return 0;
}
1
ashta
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 21:08  [ТС] 5
Цитата Сообщение от Olivеr Посмотреть сообщение
ashta, а что Вам мешает в том коде заменить вектор на массив? Тем более, функцию перестановки я Вам написал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class T>
void _reverse(T *beg, T *en)
{
    while ((beg!=en) && (beg!=--en)) {
        swap(*beg, *en);
        beg++;
    }
}
 
int main()
{
 
    int arr[7] = {1,2,3,4,5,6,7};
    _reverse(arr, arr+7);
    for (size_t i = 0; i!=7; i++)
        cout << arr[i] << " ";
 
    return 0;
}
Да, но происходит сортировка в обратном направлении. А нужно поменять местами числа 0 с 6 элементом, 2 с 5ым и тд. Средний остается на своем месте. + такую же замену в последней семерке сделать.
0
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
14.04.2013, 21:39 6
Цитата Сообщение от ashta Посмотреть сообщение
Да, но происходит сортировка в обратном направлении. А нужно поменять местами числа 0 с 6 элементом, 2 с 5ым и тд. Средний остается на своем месте. + такую же замену в последней семерке сделать.
Какая сортировка?) Функция меняет переставляет значение, как Вы и написали.
Гляньте сами подставив массив:
C++
1
int arr[7] = {55,2,1,6,8,7,-22};
0
ashta
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 22:22  [ТС] 7
Цитата Сообщение от Olivеr Посмотреть сообщение
Какая сортировка?) Функция меняет переставляет значение, как Вы и написали.
Гляньте сами подставив массив:
C++
1
int arr[7] = {55,2,1,6,8,7,-22};

http://screencast.com/t/8DreaQ19akL
0
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
14.04.2013, 22:24 8
ashta, ну вот переставьте элементы 1,2,3,4,5,6,7 как Вы писали выше и выйдет 7,6,5,4,3,2,1
0
ashta
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 22:29  [ТС] 9
Цитата Сообщение от ashta Посмотреть сообщение

)))) все, просто неудачный пример. все работает, спасибо

Добавлено через 2 минуты
Только по условию 49 элементов и нужно сделать перестановку в 1ой и последней семерке. Мне все равно не подойдет Ваше решение.
0
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
14.04.2013, 22:31 10
так используйте же функцию как следует
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class T>
void _reverse(T *beg, T *en)
{
    while ((beg!=en) && (beg!=--en)) {
        swap(*beg, *en);
        beg++;
    }
}
 
int main()
{
    srand(time(0));
 
    int arr[49];
    for (size_t i = 0; i!=49; i++)
        arr[i] = i;
    _reverse(arr, arr+7);
    _reverse(arr+49-7,arr+49);
    for (size_t i = 0; i!=49; i++)
        cout << arr[i] << " ";
 
    return 0;
}
0
14.04.2013, 22:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 22:31

Дан массив целых чисел. Найти сумму четных элементов
Через массив динамический

Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы
Дан массив натуральных чисел А и часло а. Вывести этот массив на экран,...

Дан массив натуральных чисел. Найти сумму элементов, кратных данному K
Дан массив натуральных чисел. Найти сумму элементов, кратных данному K...


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

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

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