С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
1

Как поменять местами первый положительный элемент с последним отрицательным?

21.12.2020, 17:27. Показов 4349. Ответов 19

Author24 — интернет-сервис помощи студентам
Если размер и элементы массивы задается с клавиатуры, Как я понимаю это делается с помощью цикла for и создается врем переменная я приложу код, но у меня что-то не выходит, подскажите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int a,  temp;
    cin >> a;
    int* arr = new int[a_a1];
 
    for (int i = 0;i < a_a1;i++) {
        cin >> arr[i];
for (int i = 0;i < a_a1;i++)
        temp = arr[i]
    { if (arr[i] < arr[i + 1]
 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2020, 17:27
Ответы с готовыми решениями:

Поменять местами первый положительный элемент с последним, второй элемент с предпоследним и т.д
Написал программу, которая выводит неправильный результат. Понимаю что надо переделать ...

Третий положительный элемент поменять местами с последним элементом массива
Третий положительный элемент поменять местами с последним элементом массива. Помогите, буду...

Массив: Поменять местами первый элемент поменять с последним, второй - с предпоследним и т.д.
Задано массив из четного числа элементов.Поменять местами первый элемент поменять с последним,...

Поменять местами первый отрицательный и последний положительный элемент массива
Поменять местами первый отрицательный и последний положительный елемент массива. Учесть возможность...

19
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
22.12.2020, 10:32 2
Что такое a_a1?
0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
22.12.2020, 12:16  [ТС] 3
Название массива, если не понятно, то может так будет понятнее?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int arr_size;
 
    int temp;
    setlocale(LC_CTYPE, "Rus");
 
    cout << "Ввeдите размерность массива" << endl;
    cin >> arr_size;
    int* arr = new int[arr_size];
    cout << "Ввeдите значения элементов массива" << endl;
 
    for (int i = 0;i < arr_size;i++) {
        cin >> arr[i];
    }
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.12.2020, 13:54 4
Lisa Alers, факт нахождения первого положительного элемента можно отметить переустановкой флага, а отрицательный находить до конца. Если стандартной библиотекой не пользоваться
C++
1
2
3
4
5
6
7
8
9
int firstPositive(-1), lastNegative(1), notFoundFirstPosotive(1) ;
 for (int i = 0;i < arr_size;i++) {
        if(arr[i]<0)lastNegative=arr[i] ;
else if(notFoundFirstPosotive)
{
firstPositive=arr[i] ;
notFoundFirstPosotive=0;//сбрасываем, чтобы больше ноги нашей (вашей, очаровательной - безусловно) тут не было)
}
    }
изначально искомые инициализированы неправильно и если не найдётся что-то - можно будет проверить перед выводом результата и написать "ваще не было отрицательных" или подобное что-то)

Добавлено через 5 минут
Ещё момент. Я показал как найти значения. По этой же схеме можно найти и пару индексов, а потом поменять местами значения. Справитесь?
0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
22.12.2020, 14:08  [ТС] 5
Думаю да, но если нет то напишу, спасибо.
0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
28.12.2020, 02:20  [ТС] 6
IGPIGP, Здравствуйте, что-то не работает ваш код ну или я тормоз скорее второе, на днях я нашла на этом форме похожие задание там такой код
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
//#include "stdafx.h"
#include <iostream>
using namespace std;
const int n = 10;
 
 
void main()
{
    int mas[n], index_1_otr = n+1, index_last_pol = n+1, k;
    //Заполняем масси случайными числами от -n до n
    for(int i = 0; i < n; i++)
        mas[i] = rand()%(n+n) - n;
    //Вывод массива на экран
    for(int i = 0; i < n; i++)
        cout<<mas[i] << ' ';
    cout << endl;
    //Находим первый отрицательный и последний положительный элемент массива
    for(int i = 0; i < n; i++)
        if(mas[i]<0)
        {
            index_1_otr = i;
            break;
        }
    for(int i = 0; i < n; i++)
        if(mas[i]>0)
            index_last_pol = i;
    //Меняем местами 1й отр и последний положительный
    if(index_1_otr == n+1)
        cout<< "1 negative element is missing" << endl;
    else if(index_last_pol == n+1)
        cout<< "last positive element is missing" << endl;
    else{
         k = mas[index_last_pol];
         mas[index_last_pol] = mas[index_1_otr];
         mas[index_1_otr] = k;
    }
    //Выводим на экран окончательную версию
    for(int i = 0; i < n; i++)
        cout<<mas[i] << ' ';
    cout << endl;
    system("pause");
}
вот мой код
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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int arr_size;
 
    int temp;
    setlocale(LC_CTYPE, "Rus");
 
    cout << "Ввeдите размерность массива" << endl;
    cin >> arr_size;
    int* arr = new int[arr_size];
    cout << "Ввeдите значения элементов массива" << endl;
 
    for (int i = 0;i < arr_size;i++) {
        cin >> arr[i];
    } int positive = arr_size + 1;
    int negative = arr_size + 1;
    for (int i = 0; i < arr_size; i++) {
        if (arr[i] > 0)
            positive = i;
        if (arr[i] < 0)
            negative = i;
    }
 
        temp = arr[positive];
        arr[positive] = arr[negative];
        arr[negative] = temp;
        for (int i = 0; i < arr_size; i++)
            cout << arr[i] << " ";
я только переименовала index_last_pol и index_1_otr, и k в temp и positive negative мне так проще, а мне пишет ошибку (см скрин ) и объединила два for в один и не писала if(index_1_otr == n+1)
cout<< "1 negative element is missing" << endl;
else if(index_last_pol == n+1)
cout<< "last positive element is missing" << endl; считаю это не нужным. Можете помочь найти ошибку в моем коде
Миниатюры
Как поменять местами первый положительный элемент с последним отрицательным?  
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.12.2020, 02:48 7
Цитата Сообщение от Lisa Alers Посмотреть сообщение
не работает ваш код
не всегда кот виноват, но бывает и кот.
Цитата Сообщение от Lisa Alers Посмотреть сообщение
ну или я тормоз скорее второе
Зато вы подумали и попробовали. Это тоже опыт)

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 std::cout;
using  std::cin;
using  std::endl;
 
int main()
{
    int arr[]={-1,0,-2,34,-5,6,-7,-8, 9,-10};
    int *firstPositive(nullptr), *lastNegative(nullptr) ;
        size_t sz=sizeof(arr)/sizeof(*arr);
        cout<<"source\n";
            for(size_t i=0 ; i<sz; ++i)cout<<arr[i]<<' ';
            cout<<endl;
            
    for(size_t i=0 ; i<sz; ++i)
    {
        if(nullptr==firstPositive && arr[i]>-1)firstPositive=arr+i ;
        if(arr[i]<0)lastNegative=arr+i ;
    }
    
        if(nullptr==firstPositive) {cout<<"notfound positive!"; return 0; }
        if(nullptr==lastNegative)  {cout<<"notfound negative!"; return 0; }
        
            std::swap(*firstPositive, *lastNegative);
                cout<<*firstPositive<<" and "<<*lastNegative<<" are exchanged\n" ;
                cout<<"\nresult\n";
                for(size_t i=0 ; i<sz; ++i)cout<<arr[i]<<' ';
 
return 0;
}
0
845 / 648 / 323
Регистрация: 24.02.2017
Сообщений: 2,289
28.12.2020, 09:30 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main(){
    const n=10;
    int p[n]={-1,0,-2,34,-5,6,-7,-8, -9,10};
    int i_pozitiv=0, i_negativ=n-1;
 
    for(int i=0;i<10;i++){
        if(p[i]>0)break;
        i_pozitiv++;
    }
    for(int i=n-1;i>=0;i--){
        if(p[i]<0)break;
        i_negativ--;
    }
    swap(p[i_pozitiv],p[i_negativ]);
    for(int i=0;i<10;i++)
         cout<<p[i]<<"  ";
    return 0;
}
1
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.12.2020, 11:03 9
Да, с нулём я погорячился) У чисел три знака - ноль - нейтрален, хотя математики считают, что знака у него нет.
0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
28.12.2020, 13:54  [ТС] 10
IGPIGP, повар1, Спасибо вам конечно, но у меня задание в лаб.раб именно чтоб размерность массива и их значения вводились склавы. чтоб без сложных функций и тп. а у вас значения уже прописаны.
0
845 / 648 / 323
Регистрация: 24.02.2017
Сообщений: 2,289
28.12.2020, 14:10 11
Lisa Alers, Для Вас сделано 99% работы. Один процент оставляем Вам. Подсказка: первая тема -инициализация динамического массива, вторая тема: ввод значения в переменную используя цикл.
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
28.12.2020, 14:13 12
Лучший ответ Сообщение было отмечено Lisa Alers как решение

Решение

Lisa Alers,
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
#include <iostream>
 
int main()
{
    using namespace std;
 
    int n = 0;
    while (n < 2)
    {
        cout << "Введите размер массива: ";
        cin >> n;
    }
 
    int* a = new int [n];
    cout << "Введите элементы массива:" << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << "a[" << i << "]: ";
        cin >> a[i];
    }
 
    int first_pos_i = -1, last_neg_i = -1;
    for (int i = 0; i < n; ++i)
    {
        if (first_pos_i < 0 && a[i] > 0)
        {
            first_pos_i = i;
            break;
        }
    }
 
    if (first_pos_i >= 0)
    {
        for (int i = n - 1; i >= 0; --i)
        {
            if (last_neg_i < 0 && a[i] < 0)
            {
                last_neg_i = i;
                break;
            }
        }
 
        if (last_neg_i >= 0)
        {
            int tmp = a[last_neg_i];
            a[last_neg_i] = a[first_pos_i];
            a[first_pos_i] = tmp;
        }
    }
 
    if (first_pos_i >= 0 && last_neg_i >= 0)
    {
        cout << "Результирующий массив:" << endl;
        for (int i = 0; i < n; ++i) cout << a[i] << " ";
    }
    else
    {
        cout << "В массиве нет " << (first_pos_i < 0 ? "положительных " : "отрицательных ") << "элементов";
    }
    cout << endl;
 
    delete[] a;
 
    return 0;
}
Добавлено через 40 секунд
PS: Без сложных функций! Препод будет светиться от счастья ))
2
IGPIGP
28.12.2020, 15:07
  #13

Не по теме:

Цитата Сообщение от jugu Посмотреть сообщение
Препод будет светиться от счастья ))
Некоторые просто пьют радиоактивную водку.

0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
28.12.2020, 15:58  [ТС] 14
повар1, Я прошу прощения, если пойти в самое начало темы, то в описании написано размер и элементы массивы задается с клавиатуры, "Как я понимаю это делается с помощью цикла for и создается врем переменная я приложу код, но у меня что-то не выходит, подскажите пожалуйста". Я приложила код сначала он был не понятный я исправила, мне пришел ответ, он мне не подошел, я написала об этом, потом я прикрепила свое рассуждение, что на этом форуме есть практически такое же задание, я прикрепила код из той темы и свой код, но у меня выдает ошибку, прикрепила с крин с ошибкой, попросила посмотреть именно мой код что не так. Знаете у меня в лаб. раб. 5 пунктов: 1. размерность массива должна ввод с клав-ры. 2. значения элементов массива должна вводится с клав-ры. 3. Найти сумму положительных элементов массива, стоящих начетных позициях. 4 Найти max min вывести их на экран и найти произведение, и последний 5 пункт: поменять местами первый положительный элемент с последним отрицательным я 4 пункта сделала сама просто не стала не стала выкладывать сюда весь код, а только 2 пункта и 1 предположительный, чтобы легче было вам ориентироваться.
И еще я не писала так как другие пользователи на этом же форуме, а они вообще по-моему наглые. Пример: Мне нужно сдать лаб. раб. Нужно сделать титульный лист, приложены задания, написать блок-схему решения, код программы, и результаты теста и, что интересно, по-моему сделали как они просили.
А я все сделала сама, и не стала просить кого-то, хотя я вообще знала, как читать и составлять эти схемы.
И знаете я не сижу просто так и не жду когда же за меня напишут программу, а сижу думаю, ищу что-то пытаюсь делать, я уже не знаю куда писать, если бы у меня были знакомые, или однокурсники, то я бы спросила у них, но их нет. Так что, как вы говорите: "Для Вас сделано 99% работы и 1% оставили вам"- уж простите, но по-моему все наоборот. Если бы информация была бы по перестановке, то меня бы тут не было.

Добавлено через 2 минуты
jugu, Спасибо вам большое!!!!!! Хоть кто- то понял что мне нужно)
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.12.2020, 17:42 15

Не по теме:

Lisa Alers, вы вопрос задали невнятно. Там не видно что именно вам трудно. Очень невнятно и ненавязчиво.
Этот вопрос легко мог утонуть, но я его поднял. И ответив спросил:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Я показал как найти значения. По этой же схеме можно найти и пару индексов, а потом поменять местами значения. Справитесь?
Ответом было:
Цитата Сообщение от Lisa Alers Посмотреть сообщение
Думаю да, но если нет то напишу, спасибо.
И вы боролись до вот этого вашего поста:
Как поменять местами первый положительный элемент с последним отрицательным?
Это половина третьего ночи) Я вам ответил через 15 минут. И вижу совершенно адекватный ответ. На чём и счастлдиво оставаться. Не наглая вы участница.


jugu, сасибо)))
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
28.12.2020, 17:52 16
IGPIGP, респект комп_Ораторам
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.12.2020, 18:06 17
Цитата Сообщение от jugu Посмотреть сообщение
IGPIGP, респект комп_Ораторам
0
0 / 0 / 0
Регистрация: 16.12.2020
Сообщений: 11
29.12.2020, 10:16  [ТС] 18
IGPIGP, Вообщем как я поняла мы друг друга не поняли. Если я вас чем-то обидела извините))
0
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.12.2020, 10:59 19
Цитата Сообщение от Lisa Alers Посмотреть сообщение
IGPIGP, Вообщем как я поняла мы друг друга не поняли. Если я вас чем-то обидела извините))
Бог простит)
0
0 / 0 / 0
Регистрация: 29.10.2022
Сообщений: 32
08.12.2022, 15:15 20
Здравствуйте
для чего вводятся эти переменные:
int first_pos_i = -1, last_neg_i = -1;
?
0
08.12.2022, 15:15
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2022, 15:15
Помогаю со студенческими работами здесь

Поменять местами первый элемент с последним. Замену произвести через макрофункцию
Ввести в память машины массив размером N. Поменять местами первый элемент с последним. Замену...

Найти первый максимальный элемент и поменять его местами с последним элементом массива
Задача: Сформируйте массив из 6 элементов, организовав ввод данных с консоли. Подсчитайте сумму...

Поменять местами первый положительный элемент с последним отрицательным
вот задача, дан массив 100 целых чисел,надо поменять первое положительное с последим отрицательным....

Переставить местами первый положительный элемент с последним отрицательным
Переставить местами первый положительный элемент с последним отрицательным.

Одномерный массив. Поменять местами 1 положительный элемент с последним отрицательным
1. Дан одномерный массив x1..xn. Поменять местами 1 положительный элемент с последним отрицательным.

Поменять местами первый положительный элемент с первым отрицательным элементом
1)Массив из 9 элементов. Поменять местами первый положительный элемент с первым отрицательным...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru