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

Одномерные массивы (перестановка) - C++

Восстановить пароль Регистрация
 
haseki
 Аватар для haseki
2 / 2 / 1
Регистрация: 02.11.2013
Сообщений: 151
19.12.2013, 17:04     Одномерные массивы (перестановка) #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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(0, "");
    int n, c;
    cout << "Ââåäèòå ÷èñëî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*: ";
    cin >> n;
 
    double a[n], j, s, x,temp;
    cout << "Ââåäèòå Г·ГЁГ±Г«Г* ÷åðåç ïðîáåë: ";
 
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        cout << a[i] << " ";
        cout << endl;
    }
    for(i=0;i<n;i++)
{
 if(i % 2==0)
 {
 c=a[i];
 a[i]=a[i+1];
 a[i+1]=c;
 }
 for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
        cout << endl;
    }
    system("pause");
    return 0;
}
Компилятор указывает на ошибку. Помогите, пожалуйста, исправить. Если можно, с подробными комментариями, поскольку только учусь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
19.12.2013, 17:21     Одномерные массивы (перестановка) #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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, c;
    cout << "Введите число элементов массива: ";
    cin >> n;
 
    double a[n], j, s, x,temp;
    cout << "Введите числа через пробел: ";
 
    // Ввод
    for (int i = 0; i < n; i++)
        cin >> a[i];
 
    // Меняем местами элементы массива
    for(int i=0;i<n-1;i++)
    {
        if(i % 2==0)
            {
            c=a[i];
            a[i]=a[i+1];
            a[i+1]=c;
        }
    }
 
cout << endl;
 
// Вывод
for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
        cout << endl;
    }
    system("pause");
    return 0;
}
haseki
 Аватар для haseki
2 / 2 / 1
Регистрация: 02.11.2013
Сообщений: 151
19.12.2013, 17:51  [ТС]     Одномерные массивы (перестановка) #3
recoder, большое спасибо!

Добавлено через 20 минут
Сортировка полученного массива по возрастанию модулей элементов:


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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, c;
    cout << "Ââåäèòå êîëè÷åñòâî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*: ";
    cin >> n;
 
    double a[n], j, s, x,temp;
    cout << "Ââåäèòå ýëåìåГ*ГІГ» ÷åðåç ïðîáåë: ";
 
    // Ââîä
    for (int i = 0; i < n; i++)
        cin >> a[i];
 
    // ГЊГҐГ*ГїГҐГ¬ ìåñòГ*ìè ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*
    for(int i=0;i<n-1;i++)
    {
        if(i % 2==0)
            {
            c=a[i];
            a[i]=a[i+1];
            a[i+1]=c;
        }
    }
 
cout << endl;
cout << "ГЊГ*Г±Г±ГЁГў ïîñëå ïåðåìåГ*Г» ìåñòГ*ìè Г·ГҐГІГ*ûõ ГЁ Г*ГҐГ·ГҐГІГ*ûõ ýëåìåГ*òîâ:\n";
// Âûâîä
for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
}
cout << endl;
cout << "\nÝëåìåГ*ГІГ» Гў ïîðÿäêå âîçðГ*Г±ГІГ*Г*ГЁГї ìîäóëåé: " << endl;
    for(int i = 0; i < n-1; ++i)
        for(int j = 0; j < i; ++j)
            if(fabs(a[i]) > fabs(a[i + 1]))
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
 
    for(int i = 0; i < n; ++i)
        cout<< a[i] << " ";
        cout << endl;
    
 
 
    system("pause");
    return 0;
}

Собственно, сортирует неправильно ==
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
19.12.2013, 18:05     Одномерные массивы (перестановка) #4
Так?


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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, c;
    cout << "Введите количество элементов массива: ";
    cin >> n;
 
    double a[n], j, s, x,temp;
    cout << "Введите элементы через пробел: ";
 
    // Ввод
    for (int i = 0; i < n; i++)
        cin >> a[i];
 
    // Меняем местами элементы массива
    for(int i=0;i<n-1;i++)
    {
        if(i % 2==0)
            {
            c=a[i];
            a[i]=a[i+1];
            a[i+1]=c;
        }
    }
 
cout << endl;
cout << "Массив после перемены местами четных и нечетных элементов:\n";
// Вывод
for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
}
cout << endl;
cout << "\nЭлементы в порядке возрастания модулей: " << endl;
    for(int i = 0; i < n-1; ++i)
        for(int j = 0; j < n-1; ++j)
            if(fabs(a[j]) > fabs(a[j + 1]))
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
 
    for(int i = 0; i < n; ++i)
        cout<< a[i] << " ";
        cout << endl;
    
 
 
    system("pause");
    return 0;
}
haseki
 Аватар для haseki
2 / 2 / 1
Регистрация: 02.11.2013
Сообщений: 151
19.12.2013, 19:55  [ТС]     Одномерные массивы (перестановка) #5
recoder, да-да, огромное спасибо!
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
19.12.2013, 19:58     Одномерные массивы (перестановка) #6
Не за что)
Yandex
Объявления
19.12.2013, 19:58     Одномерные массивы (перестановка)
Ответ Создать тему
Опции темы

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