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

В массиве вставить нуль после первого нечетного эл - C++

Восстановить пароль Регистрация
 
Shadow121
 Аватар для Shadow121
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 42
25.09.2013, 18:03     В массиве вставить нуль после первого нечетного эл #1
Дан массив целых чисел из n элементов. Вставить нуль после первого нечетного элемента и единицу перед последним четным элементом.Массив вводится с клавиатуры.
P.S. Напишите пожалуйста программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 18:03     В массиве вставить нуль после первого нечетного эл
Посмотрите здесь:

C++ В одномерном массиве вставить новый элемент после всех максимальных
C++ C++; вставить нуль перед k-тым элементом
C++ Массив: вставить число k вводимое с клавиатуры после первого отрицательного элемента двумерного массива
C++ Вставить в список L после первого элемента равного x элемент со значением y
Вставить после каждой серии нуль C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
26.09.2013, 00:51     В массиве вставить нуль после первого нечетного эл #2
Цитата Сообщение от Shadow121 Посмотреть сообщение
Дан массив целых чисел из n элементов. Вставить нуль после первого нечетного элемента и единицу перед последним четным элементом.Массив вводится с клавиатуры.
P.S. Напишите пожалуйста программу.
вот держите...массив из 12 элементов-что б вставить 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
#include <iostream>
using namespace std;
const int s=12;
int main()
{
    int a[s];
    int i,j;
    cout<<"Default array:\n";
    for(i = 0; i < s-2; i++) {
       a[i]=rand()%50+10;
       cout<<a[i]<<" ";
    }
    cout<<"\n";
    for(i = 0; i < s; i++) {
        if (a[i]%2!=0){
            for(j=s-1; j > i; j--)
                a[j]=a[j-1];
            a[i+1]=0;
            break;
        }
    }
    for(i = s-1; i >0; i--) {
        if (a[i]%2==0){
            for(j=s; j >=i; j--)
                a[j]=a[j-1];
            a[i-1]=1;
            break;
        }
    }
    cout<<"Fixed array:\n";
    for(i = 0; i < s; i++) {
        cout<<a[i]<<" ";
    }
    cout<<"\n";
    system( "pause" );
}
Shadow121
 Аватар для Shadow121
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 42
26.09.2013, 01:17  [ТС]     В массиве вставить нуль после первого нечетного эл #3
Цитата Сообщение от newb_programmer Посмотреть сообщение
вот держите...массив из 12 элементов-что б вставить 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
#include <iostream>
using namespace std;
const int s=12;
int main()
{
    int a[s];
    int i,j;
    cout<<"Default array:\n";
    for(i = 0; i < s-2; i++) {
       a[i]=rand()%50+10;
       cout<<a[i]<<" ";
    }
    cout<<"\n";
    for(i = 0; i < s; i++) {
        if (a[i]%2!=0){
            for(j=s-1; j > i; j--)
                a[j]=a[j-1];
            a[i+1]=0;
            break;
        }
    }
    for(i = s-1; i >0; i--) {
        if (a[i]%2==0){
            for(j=s; j >=i; j--)
                a[j]=a[j-1];
            a[i-1]=1;
            break;
        }
    }
    cout<<"Fixed array:\n";
    for(i = 0; i < s; i++) {
        cout<<a[i]<<" ";
    }
    cout<<"\n";
    system( "pause" );
}
А можно динамически. Если не сложно
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
28.09.2013, 02:29     В массиве вставить нуль после первого нечетного эл #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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <windows.h>
 
void setRand(int[],int const);
void printArr(int[], int const);
void insert(int[], int[], int const);
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(NULL));
    int N ;
    cout<<"  Введите размер массива "<<"\n";
    cin >>N;
    int *A = new int[N];
 
    setRand(A,N);
    cout<<"  Начальный массив "<<"\n\n";
    printArr(A, N);
 
    int *temp = new int[N];
    for(int i = 0; i < N; ++i)
        temp[i] = A[i];
 
    delete []A;
    N += 2;
    A = new int[N];
 
    insert(A, temp, N);
    cout<<"  Массив после вставки "<<"\n\n";
    printArr(A, N);
    cout << "\n";
    delete []A;
    delete []temp;
    return 0;
}
 
void setRand(int mas[],int const size)
{
 
    for(int i = 0; i < size; ++i)
        mas[i] = rand() % 100+1;
}
 
void printArr(int mas[], int const size)
{
    for(int i = 0; i < size; ++i)
        cout << setw(4) << mas[i];
   cout << "\n";
}
void insert(int mas[], int temp[], int const size)
{
    int index_i = 0;
    for(int i = 0; i < size; ++i)
    {
        mas[i] = temp[i];
 
        if(temp[i] & 1)
        {
            index_i = ++i;
            mas[index_i] = 0;
            break;
        }
    }
 
    int index_j = index_i + 1;
 
    for(int j = size - 1; j > index_i; --j)
    {
        mas[j] = temp[j - 2];
 
        if(!(temp[j - 2] % 2))
        {
            index_j = --j;
            mas[index_j] = 1;
            break;
        }
    }
 
    for(int i = index_i; i < index_j - 1; ++i)
        mas[i + 1] = temp[i];
}
Yandex
Объявления
28.09.2013, 02:29     В массиве вставить нуль после первого нечетного эл
Ответ Создать тему
Опции темы

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