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

Заменить в массиве каждый третий элемент на значение ближайшего справа отрицательного элемента

21.11.2018, 23:08. Показов 2592. Ответов 10

Студворк — интернет-сервис помощи студентам
Не выходит написать программу.

"Заменить в одномерном массиве целых чисел каждый третий элемент на значение ближайшего справа отрицательного элемента. Если справа нет отрицательных элементов, то заменить на значение 123".

Заранее благодарен!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2018, 23:08
Ответы с готовыми решениями:

В массиве каждый третий элемент заменить полусуммой двух предыдущих (с использованием указателей)
Заранее большое спасибо.(написать программу с использованием указателей)

Каждый второй элемент, в массиве заменить остатком от деления этого элемента на 10
Ввести одномерный массив из элементов. Каждый второй элемент, в массиве заменить остатком от деления этого элемента на 10. Массив...

Каждый второй элемент в массиве, чьё значение лежит в диапазоне [-3; 5], заменить единицей
Ввести одномерный массив A из N элементов. Каждый второй элемент в массиве, чьё значение лежит в диапазоне заменить единицей. Массив...

10
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 9
21.11.2018, 23:18  [ТС]
Не выходит написать программу.

"Заменить в одномерном массиве целых чисел каждый третий элемент на значение ближайшего справа отрицательного элемента. Если справа нет отрицательных элементов, то заменить на значение 123".

Заранее благодарен!
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.11.2018, 00:08
Цитата Сообщение от NickOrlov Посмотреть сообщение
Не выходит
Но попытки-то есть?
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 9
22.11.2018, 00:10  [ТС]
В голове алгоритм не складывается.
0
693 / 490 / 251
Регистрация: 10.06.2016
Сообщений: 2,354
22.11.2018, 09:37
NickOrlov, это контрольное задание?
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 9
22.11.2018, 21:47  [ТС]
Таки написал программу
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
#include <iostream>
 
using namespace std;
 
int main()
{   int a;
    cout << "Vvedite kolichestvo elementov massiva" << endl;
    cin >> a;
    int arr[a];
    cout << "Vvedite elementy massiva" << endl;
    for (int counter = 0; counter < a; counter++)
        cin >> arr[counter];
    for (int b = 2; b < a; b+=3)
        if (arr[b+1]<0) {
            arr[b]=arr[b+1];
        }else{ if (arr[b+2]<0){
                arr[b]=arr[b+2];
            }else{ arr[b]=123;
            }
        }
 
    cout << "Resultat" << endl;
    for (int counter = 0; counter < a; counter++)
        cout << arr[counter]<<' ';
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.11.2018, 22:32
NickOrlov, Уже есть за что зацепиться и о чем говорить. Вы старались, и это весьма похвально. Но, имхо, ваш код не совсем правильно решает задачу. А вы как считаете?
Мне вот не нравится ваше нахождение
Цитата Сообщение от NickOrlov Посмотреть сообщение
ближайшего справа отрицательного элемента.
Вот пример
0 1 2 3 4 5 6 7 -10 ...
По условию задачи тройка (я считаю индексы с нуля) должна замениться на -10. (Как и шестерка)
А у вас шестерка заменится, а тройка станет 123
Подумайте еще немного. Заклинит - конечно поможем
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 9
30.11.2018, 01: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
26
27
28
#include <iostream>
 
using namespace std;
 
int main()
{   int a;
    int b;
    cout << "Vvedite kolichestvo elementov massiva" << endl;
    cin >> a;
    int arr[a];
    cout << "Vvedite elementy massiva" << endl;
    for (int counter = 0; counter < a; counter++)
        cin >> arr[counter];
    for (int b = 2; b < a; b+=3)
        for (int c = 1; c < a; c++){
            int d = b+c;
        if (arr[d]<0) {
            arr[b]=arr[d];
            }else{ arr[b]=123;
        }
        }
 
    cout << "Resultat" << endl;
    for (int counter = 0; counter < a; counter++)
        cout << arr[counter]<<' ';
    system("pause");
    return 0;
}
Но работает некорректно...
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
30.11.2018, 02:28
Лучший ответ Сообщение было отмечено NickOrlov как решение

Решение

Попробуйте так :
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
#include <iostream>
 
using namespace std;
 
 
int main()
{
    int size;
    int b;
    cout << "Vvedite kolichestvo elementov massiva" << endl;
    cin >> size;
    int *arr = new int[size];
    cout << "Vvedite elementy massiva" << endl;
    for (int counter = 0; counter < size; counter++){
        cout << counter + 1 << ": ";
        cin >> arr[counter];
    }
 
    for(int i=2; i<size; i+=3){
        for(int a=i; a<size; a++){
            if(arr[a]<0){
                arr[i] = arr[a];
                break;
            }
            arr[i] = 123;
        }
 
    }
    
    cout  << endl;
    cout << "Resultat" << endl;
    for (int counter = 0; counter < size; counter++)
        cout << arr[counter]<<' ';
 
    delete[] arr;
 
    system("pause");
    return 0;
 
}
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 9
30.11.2018, 02:52  [ТС]
Да, вышло. Не додумался break поставить. НО
Цитата Сообщение от alkl Посмотреть сообщение
int a=i
Здесь стоит задать a=i+1, чтобы не проверялось само число i, так как, если число i - отрицательное оно останется на месте, а не заменится на ближайшее отрицательное. Например:
Если мы введем последовательность 1 2 3 4 5 6 7 8 -9 -10, мы получим результат (если a=i) 1 2 -9 4 5 -9 7 8 -9 -10, а нам нужно получить 1 2 -9 4 5 -9 7 8 -10 -10. Такой результат мы можем получить если a=i+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
#include <iostream>
 
using namespace std;
 
int main()
{   int a;
    cout << "Vvedite kolichestvo elementov massiva" << endl;
    cin >> a;
    int arr[a];
    cout << "Vvedite elementy massiva" << endl;
    for (int counter = 0; counter < a; counter++)
        cin >> arr[counter];
    for (int b = 2; b < a; b+=3){
        for (int c = b+1; c < a; c++){
            if (arr[c]<0){
                arr[b]=arr[c];
                        break;
            }else{
                arr[b]=123;
            }
        }
        cout << endl;
    }
 
 
    cout << "Resultat" << endl;
    for (int counter = 0; counter < a; counter++)
        cout << arr[counter]<<' ';
    system("pause");
    return 0;
}
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
30.11.2018, 02:57
Цитата Сообщение от NickOrlov Посмотреть сообщение
Здесь стоит задать a=i+1, чтобы не проверялось само число i
Можно и так. А можно просто и на отрицательность проверить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2018, 02:57
Помогаю со студенческими работами здесь

Каждый элемент массива (кроме первого и последнего) заменить на полусумму элементов слева и справа С++
Здравствуйте, уважаемые форумчане! :) Есть код, но он работает некорректно, не могу решить данную проблему, хотел бы обратиться к вам...

Дан массив А(12). Каждый третий элемент массива заменить суммой двух предшествующих
1)Дан массив А(12). Каждый третий элемент массива заменить суммой двух предшествующих. Нужно написать в С++ , но не понимаю как...

Посчитать сумму всех отрицательных элементов матрицы и заменить суммой каждый третий элемент
Дан двумерный массив A nxm. Посчитать сумму всех отрицательных элементов и заменить этой суммой каждый третий элемент. Написать программу.

В заданном массиве A(N) каждый третий элемент заменить на значение «-3»
В заданном массиве A(N) каждый третий элемент заменить на значение «-3».оформить процедурами ввод числовой матрицы и вывод числовой...

В заданном массиве A(N) каждый третий элемент заменить на значение «-3»
В заданном массиве A(N) каждый третий элемент заменить на значение «-3».


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru