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

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

21.03.2013, 19:27. Показов 980. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru