Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3

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

21.03.2013, 19:27. Показов 997. Ответов 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;
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2013, 19:27
Ответы с готовыми решениями:

действия над двухмерным массивом
Дан двухмерный массив. Найти наибольший и наименьший элементы массива и, чередуя, заполнить ими одномерный массив заданной размерности....

Произвести действия над массивом
Создать программу, которая заполняет массив n x n произвольно сгенерированными целыми числами, вычисляет среднее арифметическое его...

Произвести над одномерным массивом заданные действия
В одномерном массиве, состоящем из n вещественных элементов вычислить: 1) Сумму положительных элементов массива; 2) Произведение...

5
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.03.2013, 21:55
Как то так наверное
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;
Удаление из массива перед минимальным обьектом представлено присвоением нуля.
0
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
21.03.2013, 23:01  [ТС]
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;
 
                        }
                    }
 
                }
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.03.2013, 16:24
Как то так наверное
полная программа
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;
}
1
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 3
27.03.2013, 22:40  [ТС]
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;
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
28.03.2013, 14:04
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;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2013, 14:04
Помогаю со студенческими работами здесь

Произвести заданные действия над одномерным массивом
В одномерном массиве Х(15) найти Сумму неположительных, произведение неотрицательных элементов, поменять местами первый и последний...

Выполнить заданные действия над одномерным массивом
Составить программу на паскале,содержащую минимум четыре подпрограммы. дан одномерный массив,выполнить следующие действия: ...

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

"Параллельные" вычисления над большим массивом данных
Есть массив данных (под 500к), над ними нужно провести вычисления. Вычисления не самые быстрые, и я хотел бы воспользоваться пулом потоков....

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru