Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 40
1

Изменить порядок элементов в двух массивах на противоположный с использованием функции

15.03.2018, 03:58. Просмотров 890. Ответов 5
Метки нет (Все метки)

Как сделать функцию для двух массивов сразу? Так же выбивает предупреждение "Stack around the variable 'n' was corrupted", якобы выхожу за границы массива.В чем ошибка ?

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
39
40
41
42
#include <iostream>
#include <ctime>
 
using namespace std;
 
int f1(int k, int m[5], int n[10])
{
    int p;
    for (k = 1; k <= 5; k++)
    {
        p = m[5];
        m[5] = m[5 - k - 1];
        m[5 - k - 1] = p;
    }
    return p;
}
 
int main()
{
    srand(time(NULL));
    int i;
    int m[5], n[10];
    setlocale(LC_ALL, "Russian");
    cout << "Массив m[5]: ";
    for (i = 1; i <= 5; i++)
    {
        m[5] = 0 + rand() % 10;
        cout << m[5] << " ";
    }
    cout << endl;
    cout << "Массив n[10]: ";
    for (i = 1; i <= 10; i++)
    {
        n[10] = 0 + rand() % 10;
        cout << n[10] << " ";
    }
    cout << endl;
    m[5] = f1(5, &m[5], &n[10]);
    cout << m[5] << " ";
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2018, 03:58
Ответы с готовыми решениями:

Изменить порядок элементов массива на противоположный
В с++ есть команда, которая изменяет порядок элементов массива на противоположные?

Изменить порядок элементов массива X[8] Y[4] на противоположный
Есть код ,но тут для одного массива,а как для двух сделать? #include &quot;stdafx.h&quot; #include...

Изменить порядок следования элементов массива на противоположный
Измените порядок следования элементов массива на противоположный.

В каждой строке матрицы изменить порядок элементов на противоположный
Дана матрица C размером 56. Составить программу, осуществляющую перестановку элементов в каждой...

5
5246 / 3565 / 2114
Регистрация: 18.12.2017
Сообщений: 11,333
15.03.2018, 04:32 2
Лучший ответ Сообщение было отмечено elsum как решение

Решение

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
39
40
41
42
43
44
45
46
#include <iostream>
using namespace std;
 
int Revers (int *Z, size_t n)
{
    int temp=0;
    for (size_t i = 0; i < n/2; i++)
    {    
    temp=Z[i];
    Z[i]=Z[n-1-i];
    Z[n-1-i]=temp;
    }
    return *Z;
}
 
int main()
{    
    int m[5], n[10];
        
    for (size_t i = 0; i < 5; i++)
    {
    m[i] = rand() % 10; 
    cout <<m[i]<<" ";       
    }
    cout <<endl;
    
    for (size_t i = 0; i < 10; i++)
    {
    n[i] = rand() % 10; 
    cout <<n[i]<<" ";       
    }    
    cout <<endl;
    
    Revers (m, 5);
    for (size_t i = 0; i < 5; i++)    
    cout <<m[i]<<" ";
    cout <<endl;
    
    Revers (n, 10);   
    for (size_t i = 0; i < 10; i++)    
    cout <<n[i]<<" ";   
    cout <<endl;
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 40
15.03.2018, 21:01  [ТС] 3
Спасибо. Можете объяснить, зачем здесь используется указатель и что значит тип size_t?
0
Модератор
1600 / 1060 / 480
Регистрация: 17.07.2012
Сообщений: 5,245
15.03.2018, 21:06 4
Цитата Сообщение от elsum Посмотреть сообщение
зачем здесь используется указатель
Массив в функцию обычно передают по указателю на первый элемент(даже если написать int Z[] по факту это будет int *Z, потому что просто передать массив нельзя, либо по ссылке либо по указателю либо по указателю на первый элемент).
Цитата Сообщение от elsum Посмотреть сообщение
и что значит тип size_t?
Неотрицательное целое число. Индексы массива всегда неотрицательные потому часто используют size_t вместо int который может хранить и отрицательные числа.
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 40
15.03.2018, 21:24  [ТС] 5
Все понял, кроме сути данной функции:
C++
1
2
3
4
5
6
7
8
9
10
11
int Revers (int *Z, size_t n)
{
    int temp=0;
    for (size_t i = 0; i < n/2; i++)
    {    
    temp=Z[i];
    Z[i]=Z[n-1-i];
    Z[n-1-i]=temp;
    }
    return *Z;
}
Почему здесь n/2 и что выполняет код?
C++
1
2
3
4
5
6
for (size_t i = 0; i < n/2; i++)
    {    
    temp=Z[i];
    Z[i]=Z[n-1-i];
    Z[n-1-i]=temp;
    }
0
5246 / 3565 / 2114
Регистрация: 18.12.2017
Сообщений: 11,333
16.03.2018, 00:24 6
Цитата Сообщение от elsum Посмотреть сообщение
Все понял, кроме сути данной функции...Почему здесь n/2 и что выполняет код?
обмен первого элемента с последним, т.е. Z[0] c Z[n-1], второго с предпоследним и т.д. пока не дойдём до середины массива (или до среднего элемента для нечётных n) - первая итерация цикла сохраняет значение первого элемента во временной переменной temp, затем первому элементу присваивается значение последнего элемента, а последнему - элементу значение temp (т.е. значение первого элемента), аналогично со вторым элементом и предпоследним и т.д.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2018, 00:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Помогите с данным заданием Во всех последовательностях положительных чисел изменить порядок...

Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Во всех последовательностях положительных чисел изменить порядок элементов на противоположный. С...

Изменить порядок следования всех элементов в стеке на противоположный по условию
Реализовать стек, в котором к описанию стека добавлена функция turn, которая меняет порядок...

Во всех последовательностях массива положительных чисел изменить порядок элементов на противоположный
Помогите с задачей !!! в с++ Создать массив целых чисел и заполнить его случайными значениями....


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

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

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