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

Вывести на экран номера первого положительного и первого отрицательного элементов

07.09.2014, 13:48. Показов 3988. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,есть такое задание,дан массив размеры и кол-во элементов задается с клавиатуры и нужно из этого массива вывести на экран первое отрицательное и последнее положительное число я это сделал
C++ (Qt)
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
# include <iostream>
 
using namespace std;
 
int a[10000];
int b[1000];
 
int main()
{
    cout<<"Vvedite razmer:\n";
    int n;
    cin>>n;
 cout<<"Vvedite elemnti massiva :\n";
    
    for(int i=0; i<n; ++i)
    
    cin>>a[i];
      for(int i=0; i<n; ++i)
          cout<<a[i]<<" ";
      a[1000]=b[1000];
 
      
    cout<<endl;
 
 
    for(int i=0; i<n; ++i)
    for(int j=i+1; j<n; ++j)
    if(a[j]<a[i])swap(a[i],a[j]);
 
   
 
    cout<<endl;
     if(a[0]<0||a[n-1]>0)
 
    {   cout<<a[n-1]<<" ";
     
     }
 
     else  if(a[0]<0||a[n-1]<0)
 
    {   cout<<a[0]<<" ";
     
     }
 
    else if(a[0]<0||a[n-1]>0)
    {
        cout<<a[0]<<" ";
    cout<<a[n-1]<<" ";
    }
    
 
 
    system("pause");
}
Нужно теперь вывести на экран под каким номером в массиве лежат эти номера?Как это сделать?Но номера должны быть в том порядке,в котором вводились с клавиатуры,а не после отсортировки
Т.е если ввести массив из трех чисел:2,-1,3
То должно вывести
-1 3
и число ячейки 2 и 3
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2014, 13:48
Ответы с готовыми решениями:

Определить номера первого положительного и последнего отрицательного элементов массива
Определить порядковые номера и значения первого положительного и последнего отрицательного элементов целочисленного массива X(n). ...

Определить порядковые номера и значения первого положительного и п оследнего отрицательного элементов массива Z.
https://www.cyberforum.ru/attachment.php?attachmentid=29664&amp;stc=1&amp;d=1272928037

Определить порядковые номера и значения первого положительного и последнего отрицательного элементов массива Z.
Нужна помощь с задачей https://www.cyberforum.ru/attachment.php?attachmentid=28986&amp;stc=1&amp;d=1272332730

10
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
07.09.2014, 14:15
Цитата Сообщение от xaker23 Посмотреть сообщение
первое отрицательное и последнее положительное число я это сделал
что-то я ничего не пойму, зачем тут сортировка, где вывод 2х чисел хотя бы?

Самый простой вариант: в цикле идти по массиву до первого отрицательного числа, потом вывести его и его номер. Потом точно такой же цикл для положительного, но с конца массива
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
07.09.2014, 14:19
Так до сортировки скопируйте всё в отдельный массив arr[n], а потом в цикле выводите
C++
1
2
for(int i=0; i<n; ++i)
   std::cout << "arr[" << i << "] == " << a[i] << std::endl;
0
11 / 11 / 8
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 14:29
Полностью согласен с КОП, сортировка массива тебе не нужна (если этого не требует твое задание).
xaker23, зачем тебе массив b[1000], кстати это тотже а[1000], но до сортировки. Если тебе лень переписывать твою программу, можешь просто создать 2 переменные типа int, в первую поместить первое отрицательное значение, во вторую последнее положительное. Дальше просто пройтись по масиву b[1000] ища их...
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 66
07.09.2014, 15:22  [ТС]
Цитата Сообщение от dvl6k Посмотреть сообщение
Полностью согласен с КОП, сортировка массива тебе не нужна (если этого не требует твое задание).
xaker23, зачем тебе массив b[1000], кстати это тотже а[1000], но до сортировки. Если тебе лень переписывать твою программу, можешь просто создать 2 переменные типа int, в первую поместить первое отрицательное значение, во вторую последнее положительное. Дальше просто пройтись по масиву b[1000] ища их...
Так эти числа они же задаются с клавиатуры...

Добавлено через 33 минуты
Как с конца начать поиск в массиве?Превидите пример пожалуйста
0
11 / 11 / 8
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 15:31
Лучший ответ Сообщение было отмечено xaker23 как решение

Решение

Вот держы....

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
# include <iostream>
 
using namespace std;
 
int a[10000];
int b[1000];
int n, otr, pol;
 
int main()
{
    setlocale(0,""); // Подключаем русский шрифт.
    cout<<"Введите размер массива: ";
   
    cin>>n;
    cout<<"Введите элементы масива:\n";
    
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
        b[i]=a[i]; // Незнаю зачем тебе нужен массив b[], но мы его оставляем и заполняем значениями a[i]
    }
     
    cout<<endl;
    for(int i=0; i<n; i++) // Вывод на экран.
    cout<<a[i]<<" ";
      
    cout<<endl;
    
    for(int i=0; i<n; i++)
    {
        if(a[i]<0)
        {   
            otr=a[i];
            cout<<otr<<" ";
            break; // Выход из цикла for
        }
    }
    
    for(int i=n-1; i>0; i--) // Вот, кстати, цикл for c конца...
    {
        if(a[i]>0)
        {   
            pol=a[i];
            cout<<pol<<endl;
            break; // Выход из цикла for
        }
    }
    
    cout<<endl<<"Ваши числа расколожены в: ";
    for(int i=0; i<n; i++)
    {
        if(a[i]==otr)
        cout<<"a["<<i<<"] и ";
        if(a[i]==pol)
        cout<<"a["<<i<<"]"<<endl;
    }
   
    system("pause");
    return 0;
}
Сори что так долго спешил, ошибок понаделовал , пока нашел времени много убил....
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 66
07.09.2014, 15:34  [ТС]
Спс,а i-- вот оно что у нас такого не было(((ну вообщем спасибо
0
11 / 11 / 8
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 15:41
xaker23, это i-- участвует в декрементном цикле, т.е. цикл на убывание пишется так:

for( здесь начально условие i=10; дальше условие продолжения цикла i=0; и что делаем i--)
т.е. пока наше i неравно 0 у нас цикл будет продолжаться, каждый раз i будет на единицу меньше...
запись i-- аналог i=i-1
а запись i++ аналог i=i+1
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 66
07.09.2014, 15:43  [ТС]
И того оно выводит на экран первое с конца положительное число?
0
11 / 11 / 8
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 15:51
ну да..... Мы же начинаем поиск с конца, если число в массиве удовлетворяет нашему условию a[i]>0, то, повторюсь... Ну да.

Если сомниваешься, в правильности, просто скомпилируй программу и поставь, штуки 3, числа последние отрицательные.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.09.2014, 16:10
А зачем столько много циклов? Можно же проще
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
#include <iostream>
 
int main(int argc, char *argv[])
{
    size_t n;
    int *arr;
    int negativeIndex = -1;
    int positiveIndex = -1;
 
    std::cout << "Enter size of array.." << std::endl;
    std::cin >> n;
    arr = new int[n];
 
    std::cin.ignore();
 
    for (size_t i = 0; i < n; ++i)
    {
        std::cout << "Enter arr[" << i << "]" << std::endl;
        std::cin >> arr[i];
        if (negativeIndex == -1 && arr[i] < 0)
            negativeIndex = i;
    }
 
    std::cout << std::endl;
 
    for (size_t i = n - 1; i >= 0; --i)
    {
        if (arr[i] >= 0)
        {
            positiveIndex = i;
            break;
        }
        
    }
 
    std::cout << std::endl;
 
    if (negativeIndex == -1)
        std::cout << "Negative numbers not found" << std::endl;
    else
        std::cout << "First negative number is arr[" << negativeIndex << "] = " << arr[negativeIndex] << std::endl;
 
    if (positiveIndex == -1)
        std::cout << "Positive numbers not found" << std::endl;
    else
        std::cout << "Last positive number is arr[" << positiveIndex << "] = " << arr[positiveIndex] << std::endl;
    
    delete(arr);
 
    std::cin.ignore();
    std::cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2014, 16:10
Помогаю со студенческими работами здесь

Массив: В массиве из n элементов найти порядковые номера первого отрицательного и последнего положительного элементов
В одномерном массиве из n элементов найти порядковые номера первого отрицательного и последнего положительного элементов (если таковые...

Найти индексы первого отрицательного и первого положительного элемента
Дана квадратная матрица размером М x М, найти индексы первого отрицательного и первого положительного элемента.

Найти разность первого положительного и последнего отрицательного элементов массива
В заданном векторе (одномерном массиве) найти: разность первого положительного и последнего отрицательного эле- мента ,ввод данных из...

Найти величину и номер первого отрицательного и последнего положительного элементов в массиве
хелп с программой. Найти величину и номер первого отрицательного и последнего положительного элементов в массиве вещественного типа...

В матрице подсчитать количество элементов, значение которых меньше суммы первого положительного и последнего отрицательного элементов матрицы
Доброго времени суток. Кое какие наработки: n=5; m=6; X=randi(,m,n); flagpositive=0;


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru