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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aH4ux-Mypag
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
#1

Некоторые действия над не большим массивом - C++

21.03.2013, 19:27. Просмотров 372. Ответов 5
Метки нет (Все метки)

Нужна помощь в написании программы, которая выполняет ряд действий над массивом. Начало я написал, как вы можете увидеть ниже, и так нужно добавить следующие:
Найти наименьший по абсолютной величине элемент среди элементов, расположенных между первым и вторым нулевыми элементами. Если по какой-либо причине найти такой элемент не удается, выдать об этом сообщение с указанием причины.
(Из ошибок я думаю можно добавить, отсутствие нулей, присутствие только одного нуля, отсутствие элементов между нулями вроде все)
Удалить из массива элемент, расположенный перед каждым значением, равным минимальному элементу. Если удаление элементов невозможно, выдать об этом сообщение.
В принципе все легко, но я не знаю как все это реализовать в С++, и еще при компиляции уже имеющегося кода компилятор выдает ошибки, если не трудно проверьте код может я совершил какие то ошибки при написании.
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
#include <iostream>
#include <conio>
 
using namespace std;
 
int main()
{
    const int N=10;
    double mas[N]={10,11,18,4,23,4,3};
    int kol=7;
 
    while(1)
    {
        cout<<"\n\n    Выберете пунк меню  \n";
        cout<<"  ------------------------\n\n";
        cout<<"  1 -- Ввод Массива                  |\n\n";
        cout<<"  2 -- Вывод Массива                 |\n\n";
        cout<<"  3 -- Наименьший по абсолютной величине элемент среди элементов, расположенных между первым и вторым нулевыми элементами.  |\n\n";
        cout<<"    -- Выход               |\n";
        cout<<"\n\n"<<"  ";
        int sumbol;
        cin>>sumbol;
        switch(sumbol)
        {
            case 1: //Ввод Массива
                {
                    cout<<"Введите количество элементов массива \n";
                    cin>>kol;
                    for(int i=0; i<kol; i++)
                    {
                      cout<<"Введите"<<i<<"-ый элемент \n";
                      cin>>mas[i];
                    }
                    cout<<"Массив успешно заполнен! \n";
                    cout<<"\n   Press any key  \n ";
                    getch();
                    break;
                }
            case 2: // Вывод Массива
                {
                    for(int i=0; i<kol; i++)
                    cout<<"A["<<i<<"]=<<mas[i]<<" ";
                    cout<<"\n   Press any key  \n ";
                    getch();
                    break;
                }
            case 3: // Наименьший по абсолютной величине элемент среди элементов
                {
                    if(kol<3)
                    {
                        cout<<"Слишком маленький массив \n";
                        cout<<"Press any key" \n";
                        getch();
                        break;
                    }
                    int nol_1=0, nol_2=0, abs_min=0;
                    for (int i=0; i<kol; i++)
                    //место где я остановился
                }
        }
    }
        return 0;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2013, 19:27     Некоторые действия над не большим массивом
Посмотрите здесь:

Vector или new при работе с большим массивом данных? - C++
Подскажите, что лучше использовать (с точки зрения быстродействия) при работе с большим массивом данных - vector или динамический массив?...

Действия с массивом - C++
Уважаемые гуру программирования я нуждаюсь в вашей помощи :) Условие: Дан массив М а) подсчитать количество элементов массива, равных...

Внести действия с массивом в функцию - C++
Помогите пожалуйста, не до конца понимаю, необходимо внести действия с массивом в функцию. и как ее потом вызвать? вот эта часть ...

Действия над матрицами - C++
Привет программистам ! помогите плз вот в таком задании: ***** с клавиатуры задать матрицы А(n x n) и В(n x n). вычислит матрицу...

Действия над матрицами - C++
Помогите выполнить действия над матрицами в С++ 2(А+В)(2В-А), где 3 4 5 А= 5 6 2 -1 3 1 -1 0 5 В = 0 1 3 ...

Работа над массивом с 10 элементами - C++
Есть задание: В массиве с 10 целыми числами сделать: количество четных и нечетных чисел; максимальный/минимальный элемент; ...

Разобраться с оперциями над массивом - C++
Сформировать псевдодинамический массив из n элементов с помощью случайных чисел (n задается пользователем с клавиатуры). Нужно удалить все...

Операции над динамическим массивом - C++
Написать программу, которая будет создавать массив, длина которого задается с клавиатуры, и предлагать 3 операции: добавить данные в...

Действия над арифметическим рядом - C++
Написать программу, позволяющую в зависимости от введенного параметра Pr (например, 1, 2, 3) выполнить одно из следующих действий: 1....

Арифметические действия над числами - C++
Арифметические действия над числами пронумерованы следующим образом: 1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление. Дан номер...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
21.03.2013, 21:55     Некоторые действия над не большим массивом #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
 int zero=0,min=0;
    const int size=10;
    int arr[size]={0,10,12,13,4,5,5,6,7,0};
 
    for(int i=0;i<size;i++){
        if(abs(arr[i])==0 && zero<=2)  zero++;
        if(min==0 && zero>0 && zero<=2) min=arr[i+1];
        if(abs(arr[i+1])<min && zero>0 && zero<=2)
            if(abs(arr[i+1])!=0)
                min=arr[i+1];
    }
    if(zero!=2) cout<<"Не обнаружено двух 0 в массиве"<<endl;
    else cout<<"min="<<min<<endl;
 
    for(int i=0;i<size;i++)
    {
        if(arr[i]==min && i>=0)
            arr[i-1]=0;
        
    }
 
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
 
    cout<<endl;
Удаление из массива перед минимальным обьектом представлено присвоением нуля.
aH4ux-Mypag
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
21.03.2013, 23:01  [ТС]     Некоторые действия над не большим массивом #3
egor2116 я если честно не совсем разобрался в твоем коде ) Может на мой глянешь и подскажешь в каком направлении двигаться ?
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
            case 3: //Найти наименьший по абсолютной величине элемент среди элементов
                {
                    if(kol<3)
                    {
                        cout<<"Слишком маленький массив \n";
                        cout<<"Press any key \n";
                        getch();
                        break;
                    }
                    int nol_1=0, nol_2=0, abs_min=0 check=0;
                    for (int i=0; i<kol; i++)
                    {
                        if (mas[i]==0)
                            check++;
                    }
                    {
                        if (check==0)
                        cout<<"В массиве нет нулей, \n";
                        cout<<"Press any key \n";
                        getch();
                        break;
                        else (check==1)
                        cout<<"В массиве только один ноль \n";
                        cout<<"Press any key \n";
                        getch();
                        break;
                    }
                    int mas[size], add_mas[size], i, check;
                    for (int i=0; i<kol; i++)
                    {
                        add_mas[check]=0;
                        if (mas[i]=0)
                        {
                            check++;
                            add_mas[check]=i;
 
                        }
                    }
 
                }
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
22.03.2013, 16:24     Некоторые действия над не большим массивом #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
89
int main()
{
    int zero=0,min=0,kol,sumbol;
    cout<<"Введите количество элементов массива \n";
    cin>>kol;
    int arr[kol];
 
    cout<<"\n\n    Выберете пункт меню  \n";
    cout<<"  ------------------------\n\n";
    cout<<"  1 -- Ввод Массива                  |\n\n";
    cout<<"  2 -- Вывод Массива                 |\n\n";
    cout<<"  3 -- Наименьший по абсолютной величине элемент среди элементов, расположенных между первым и вторым нулевыми элементами.  |\n\n";
    cout<<"  4 -- Удаление элемента перед минимальным\n";
    cout<<"  9 -- Выход               |\n";
    cout<<"\n\n"<<"  ";
 
    while(cin>>sumbol)
        {
 
            switch(sumbol)
            {
                case 1: //Ввод Массива
                    {
                        for(int i=0; i<kol; i++)
                        {
                          cout<<"Введите"<<i<<"-ый элемент \n";
                          cin>>arr[i];
                        }
                        cout<<"Массив успешно заполнен! \n";
                        cout<<"\n   Press any key  \n ";
                        getch();
                        break;
                    }
                case 2: // Вывод Массива
                    {
                        for(int i=0; i<kol; i++)
                        cout<<"A["<<i<<"]="<<arr[i]<<" ";
                        cout<<"\n   Press any key  \n ";
                        getch();
                        break;
                    }
                case 3: // Наименьший по абсолютной величине элемент среди элементов
                    {
                        if(kol<3)
                        {
                            cout<<"Слишком маленький массив \n";
                            cout<<"Press any key"<<"\n";
                            getch();
                            break;
                        }
                        for(int i=0;i<kol;i++){
                            if(abs(arr[i])==0 && zero<=2)  zero++;
                            if(min==0 && zero>0 && zero<=2) min=arr[i+1];
                            if(abs(arr[i+1])<min && zero>0 && zero<=2)
                                if(abs(arr[i+1])!=0)
                                    min=arr[i+1];
                        }
                        if(zero!=2) cout<<"Необнаружено двух 0 в массиве"<<endl;
                        else cout<<"min="<<min<<endl;
 
                    }
                case 4: //Удаление
            {
                       if(kol>3){
                           for(int i=0;i<kol;i++)
                           {
                               if(arr[i]==min && i>0)
                                   arr[i-1]=0;
 
                           }
                       }
                       else cout<<"Заполните массив"<<endl;
            }
 
            }
            if(sumbol==9) break; //Выход
 
            cout<<"\n\n    Выберете пунк меню  \n";
            cout<<"  ------------------------\n\n";
            cout<<"  1 -- Ввод Массива                  |\n\n";
            cout<<"  2 -- Вывод Массива                 |\n\n";
            cout<<"  3 -- Наименьший по абсолютной величине элемент среди элементов, расположенных между первым и вторым нулевыми элементами.  |\n\n";
            cout<<"  4 -- Удаление элемента перед минимальным\n";
            cout<<"  9 -- Выход               |\n";
            cout<<"\n\n"<<"  ";
        }
 
    return 0;
}
aH4ux-Mypag
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
27.03.2013, 22:40  [ТС]     Некоторые действия над не большим массивом #5
egor2116 arr[i-1]=0; она же просто присвоит предыдущему элементу значение ноль, а не удалит его полностью. Или я ошибаюсь ?
Я правильно преобразовал ваш код для поиска максимального элемента по абсолютной величине ?
C++
1
2
3
4
5
6
7
8
9
10
11
                                   //Выполнение поиска максимального элемента по абсолютной величине                    
                    for (int i=0; i<kol; i++)                    
                    {
                        if(abs(arr[i])==0 && zero<=2)  zero++;
                        if(max==0 && zero>0 && zero<=2) max=arr[i+1];
                        if(abs(arr[i+1])<max && zero>0 && zero<=2)
                        if(abs(arr[i+1])!=0)
                        max=arr[i+1];                        
                    }                    
                    if(zero!=2) cout<<"Необнаружено двух 0 в массиве"<<endl;
                    else cout<<"максимального элемента по абсолютной величине="<<max<<endl;
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
28.03.2013, 14:04     Некоторые действия над не большим массивом #6
egor2116 arr[i-1]=0; она же просто присвоит предыдущему элементу значение ноль, а не удалит его полностью.
Удаление из массива перед минимальным обьектом представлено присвоением нуля.(из сообщения которое я писал выше)
Я правильно преобразовал ваш код для поиска максимального элемента по абсолютной величине ?
C++
1
2
3
4
5
6
7
8
9
10
11
              //Выполнение поиска максимального элемента по абсолютной величине                    
                    for (int i=0; i<kol; i++)                    
                    {
                        if(abs(arr[i])==0 && zero<=2)  zero++;
                        if(max==0 && zero>0 && zero<=2) max=arr[i+1];
                        if(abs(arr[i+1])>max && zero>0 && zero<=2)//ту та arr[i+1])>max
                        if(abs(arr[i+1])!=0)
                        max=arr[i+1];                        
                    }                    
                    if(zero!=2) cout<<"Необнаружено двух 0 в массиве"<<endl;
                    else cout<<"максимального элемента по абсолютной величине="<<max<<endl;
Yandex
Объявления
28.03.2013, 14:04     Некоторые действия над не большим массивом
Ответ Создать тему
Опции темы

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