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

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

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

Подскажите, пожалуйста, как сделать перестановку чисел в семерке. Т.е. число в 0 индексом поменять с 6, 1 - с 5ым, 2ое с 4м, 3 остается неизменным. Тоже самое в последней семерке.

http://www.cyberforum.ru/cpp-beginners/thread30031.html
Я пытался решить, как-то неправильно выходит:

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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке (C++):

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

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

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

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

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

9
Olivеr
412 / 408 / 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
412 / 408 / 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
412 / 408 / 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
412 / 408 / 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
412 / 408 / 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...

Дан двухмерный массив целых чисел. Определить сумму элементов больших 30
Дан двухмерный массив целых чисел. Определить сумму элементов больших 30

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


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

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

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