Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 05.01.2013
Сообщений: 57
1

Не меняется местами при четных значениях n 1-мерного массива

06.01.2013, 16:59. Показов 632. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всё вроде работает, при нечетных значениях всё меняется, последнее число меняется на ноль, что логично, а при четных значения не происходит ничего, подскажите, в чем проблема? Заранее спасибо...P.S Измененный массив выводится по 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
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
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
        int n;
        int[] A;
        void Generate(int N, int[] A)
        {
            Random rnd = new Random();
            for (int i = 0; i < N; i++)
                    A[i] = rnd.Next(100);
                }
 
        private void button1_Click(object sender, EventArgs e)
        {
            n = Convert.ToInt32(numericUpDown1.Value.ToString());
            A = new int[n];
            Generate(n, A);
            dataGridView1.RowCount=n;
            for (int i = 0; i < n; i++)
            dataGridView1.Rows[i].Cells[0].Value=A[i];
        }
 
        void Perestanovka(int[] A)
        {
            int c=0;
            for (int i = 0; i < n; i+=2)
            {
                 c = A[i];
                 A[i] = A[i+1];
                 A[i+1] = c;
            }
        }
 
        
 
        private void button2_Click(object sender, EventArgs e)
        {
            int[] A = new int[10];
            for (int i = 0; i < dataGridView1.RowCount; i ++)
                A[i] = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value);
            for (int i = 0; i < dataGridView1.RowCount; i++)
                Perestanovka(A);
            dataGridView2.RowCount = Convert.ToInt32(numericUpDown1.Value.ToString());
            for (int i = 0; i < dataGridView1.RowCount; i ++)
                dataGridView2.Rows[i].Cells[0].Value = A[i];
 
 
 
 
 
 
        }
 
        
 
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2013, 16:59
Ответы с готовыми решениями:

Вычислить значения переменной y, где при четных значениях x; y=x2 – 6 при значениях x, кратных 5; y=0 во всех остальных случаях
Составьте программу, предназначенную для вычисления значения переменной y, где при четных...

Постороить из 2 мерного массива в 1 мерный, который содержит все элементы 2 мерного массива , содержащихся по периметру массива
Постороить из 2 мерного массива в 1 мерный, который содержит все элементы 2 мерного массива ,...

Поменять местами первый и последний столбец заданого 2 - мерного массива
Создать программу Java что меняет местами первый и последний стовбец заданого 2 - мерного массива

Проблема при изменении размеров 2-мерного массива
Доброго времени суток всем. Option Base 1 Public AColWidthRes() As Double Sub Test() ...

2
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.01.2013, 19:09 2
Ух, ны вы и объясняете. Как я правильно понял, когда массив содержит нечетное количество элементов, то все работает как вы хотите, а когда четное, то работает неправильно. Обратите внимание на данную строчку
C#
1
2
for (int i = 0; i < dataGridView1.RowCount; i++)
    Perestanovka(A);
Здесь вы делаете перестановку столько раз, сколько у вас элементов в массиве, при том, что каждый раз перестановка делается для всего массива. Зачем?
Вот смотрите, что получается. В результате перестановки все соседние элементы массива меняются местами. Если сделать данные манипуляции над уже "переставленным" массивом, то у вас элементы вернутся на исходные позиции (кроме последнего, в случае нечетного количества элементов). То есть, каждой второй вызов метода Perestnovka фактически отменяет каждый первый вызов этого метода. В случае, когда у вас четное количество элементов массива, последний запуск вышеупонятого метода возвращает все элементы массива на исходные позиции, а вы не видите результата.
1
1 / 1 / 1
Регистрация: 05.01.2013
Сообщений: 57
07.01.2013, 12:00  [ТС] 3
kodv, но а что мне нужно, сделать то?...отдельный цикл ввести для это функции?

Добавлено через 1 минуту
kodv, всё, получилось всё, я убрал ...
C#
1
            for (int i = 0; i < dataGridView1.RowCount; i++)
и всё получилось)))
0
07.01.2013, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2013, 12:00
Помогаю со студенческими работами здесь

Вывести на дисплей сообщения о значениях функции при различных значениях аргумента
Разработать программу, которая выводит на экран дисплея сообщения о значениях функции при различных...

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

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

Обмен местами четных и нечетных элементов массива
Дан массив целых чисел. Воспользовавшись указате- лями, поменяйте местами элементы массива с...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru