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

Поменять части массива местами - C++

Восстановить пароль Регистрация
 
mr_shiver
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 7
05.06.2014, 02:48     Поменять части массива местами #1
Дан массив M, размерность задать в программе с помощью именованной константы. Указать элемент-границу (ввести номер с клавиатуры). Переставить местами правую и левую часть массива.

В функции exchange записываю значение граничного элемента в temp и сдвигаю все элементы слева от него на ячейку вправо, после записываю в arr[0] значение temp, увеличиваю номер граничного элемента на 1, после чего все должно повторяться.

Не работает. Выдает ошибку выхода за пределы массива (даже если в первом цикле for внутри функции exchange поставить i<1)



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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <clocale>
 
using namespace std;
 
 
 
void input(int *arr, int size); //заполнение массива
void output(int *arr, int size);//вывод
void exchange(int *arr, int size, int border);//меняет части местами
 
 
 
int main()
{
    srand((unsigned int)time(0));
    setlocale (LC_ALL,"Russian");
 
    const int size = 10;
    int M[size], border;
 
    cout<<"Введите номер элемента-границы:"<<endl<<endl;
    cin>>border;
    
 
    input(M, size);
 
    output(M, size);
 
    exchange(M, size, border);
 
    output(M,size);
}
 
 
void input(int *arr, int size)
{
    for(int i = 0;i <= size; i++)
    {
        arr[i]=rand()/100;
    }
}
 
void output(int *arr, int size)
{
    for(int i = 0; i <= size; ++i)
        cout<<arr[i]<<" ";
        cout<<endl<<endl;
}
 
 
void exchange(int *arr, int size, int border)
{
    int temp;
    
    for (int i=0; i<size-(border+1); i++)
    {
 
        temp=arr[border-1];
        
        for(int j=border; j<=border && j>i; j--)
            arr[j]=arr[j-1];
 
        arr[0] = temp;
 
        border++;
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 02:48     Поменять части массива местами
Посмотрите здесь:

C++ Поменять местами минимальный и максимальный элемент массива V[25] и подсчитать количество парных элементов массива
Поменять местами элементы массива С++ C++
Поменять части матрицы(из файла) местами с использованием функции C++
C++ Поменять местами элементы массива
C++ Поменять местами элементы массива
Поменять местами два массива C++
Поменять местами дробную и целую части числа C++
C++ Поменять местами элементы массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
05.06.2014, 09:17     Поменять части массива местами #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
28
void input(int *arr, int size)
{
    for(int i = 0;i < size; i++) // последний индекс size-1, а не size
    {
        arr[i]=rand()/100;
    }
}
 
void output(int *arr, int size)
{
    for(int i = 0; i < size; ++i)
        cout<<arr[i]<<" ";
        cout<<endl<<endl;
}
 
 
void exchange(int *arr, int size, int border)
{
    int temp;
    
    for (int i=border;i<size;i++) // т.е. повторить size-border Раз
    {
        temp=arr[size-1];
        for(int j=size-1; j>0 ;j--)
            arr[j]=arr[j-1];
        arr[0] = temp;
    }
}
Yandex
Объявления
05.06.2014, 09:17     Поменять части массива местами
Ответ Создать тему
Опции темы

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