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

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

Восстановить пароль Регистрация
 
aH4ux-Mypag
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
21.03.2013, 19:27     Некоторые действия над не большим массивом #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
#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     Некоторые действия над не большим массивом
Посмотрите здесь:

C++ Действия над матрицами
C++ Действия над типом Char
действия над матрицами C++
C++ Действия над матрицами
Действия над массивами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
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
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
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
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
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     Некоторые действия над не большим массивом
Ответ Создать тему
Опции темы

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