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

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

Войти
Регистрация
Восстановить пароль
 
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
12.04.2013, 20:11     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #1
Подскажите, пожалуйста, как сделать перестановку чисел в семерке. Т.е. число в 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];
        
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 20:11     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке
Посмотрите здесь:

C++ дан массив целых чисел m и n элементов. Нужно поменять местами m и n, в том же порядке
C++ Дан массив целых чисел. Найти среднее арифметическое, количество отрицательных элементов
Дан массив целых чисел. Сделать задание с использованием пользовательских функций C++
C++ Дан массив целых чисел, содержащий 20 элементов
Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 C++
C++ Дан массив целых чисел. Написать две функции ( количество положительных и отрицательных элементов)
Дан массив натуральных чисел. Найти сумму элементов, кратных данному K C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
12.04.2013, 20:38     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #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++;
    }
}
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 19:49  [ТС]     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #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, но ничего не понятно. Функции и векторы для реализации этой задачи не подойдут. Это далеко вперед. Нужно ее попроще решить.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
14.04.2013, 20:39     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #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;
}
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 21:08  [ТС]     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #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ым и тд. Средний остается на своем месте. + такую же замену в последней семерке сделать.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
14.04.2013, 21:39     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #6
Цитата Сообщение от ashta Посмотреть сообщение
Да, но происходит сортировка в обратном направлении. А нужно поменять местами числа 0 с 6 элементом, 2 с 5ым и тд. Средний остается на своем месте. + такую же замену в последней семерке сделать.
Какая сортировка?) Функция меняет переставляет значение, как Вы и написали.
Гляньте сами подставив массив:
C++
1
int arr[7] = {55,2,1,6,8,7,-22};
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
14.04.2013, 22:22  [ТС]     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #7
Цитата Сообщение от Olivеr Посмотреть сообщение
Какая сортировка?) Функция меняет переставляет значение, как Вы и написали.
Гляньте сами подставив массив:
C++
1
int arr[7] = {55,2,1,6,8,7,-22};

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

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

Добавлено через 2 минуты
Только по условию 49 элементов и нужно сделать перестановку в 1ой и последней семерке. Мне все равно не подойдет Ваше решение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 22:31     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке
Еще ссылки по теме:

C++ Дан массив из N целых чисел. Отсортировать его по убыванию элементов методом пузырька
C++ Дан двухмерный массив целых чисел. Определить сумму элементов больших 30
C++ Дан массив вещественных чисел. Выяснить верно ли, что количество положительных элементов не превышает 5
Дан массив вещественных чисел. Выяснить верно ли, что количество положительных элементов не превышает 5 C++
C++ Дан массив a(n), сформированный датчиком случайных чисел на интервале (-10, 170). Из элементов массива А

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

Или воспользуйтесь поиском по форуму:
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
14.04.2013, 22:31     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке #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;
}
Yandex
Объявления
14.04.2013, 22:31     Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке
Ответ Создать тему
Опции темы

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