Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
xaker23
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 61
07.09.2014, 13:48     Вывести на экран номера первого положительного и первого отрицательного элементов #1
Добрый день,есть такое задание,дан массив размеры и кол-во элементов задается с клавиатуры и нужно из этого массива вывести на экран первое отрицательное и последнее положительное число я это сделал
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
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2014, 13:48     Вывести на экран номера первого положительного и первого отрицательного элементов
Посмотрите здесь:

Определить порядковые номера и значения первого положительного и п оследнего отрицательного элементов массива Z. C++
Найти величину и номер первого отрицательного и последнего положительного элементов в массиве C++
C++ Вывести на печать индексы первого положительного элемента, кратного заданному числу K.
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного) C++
C++ вывести на экран позицию первого отрицательного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
07.09.2014, 14:15     Вывести на экран номера первого положительного и первого отрицательного элементов #2
Цитата Сообщение от xaker23 Посмотреть сообщение
первое отрицательное и последнее положительное число я это сделал
что-то я ничего не пойму, зачем тут сортировка, где вывод 2х чисел хотя бы?

Самый простой вариант: в цикле идти по массиву до первого отрицательного числа, потом вывести его и его номер. Потом точно такой же цикл для положительного, но с конца массива
gru74ik
Модератор
 Аватар для gru74ik
3123 / 1349 / 167
Регистрация: 20.02.2013
Сообщений: 3,867
Записей в блоге: 18
07.09.2014, 14:19     Вывести на экран номера первого положительного и первого отрицательного элементов #3
Так до сортировки скопируйте всё в отдельный массив arr[n], а потом в цикле выводите
C++
1
2
for(int i=0; i<n; ++i)
   std::cout << "arr[" << i << "] == " << a[i] << std::endl;
dvl6k
6 / 6 / 5
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 14:29     Вывести на экран номера первого положительного и первого отрицательного элементов #4
Полностью согласен с КОП, сортировка массива тебе не нужна (если этого не требует твое задание).
xaker23, зачем тебе массив b[1000], кстати это тотже а[1000], но до сортировки. Если тебе лень переписывать твою программу, можешь просто создать 2 переменные типа int, в первую поместить первое отрицательное значение, во вторую последнее положительное. Дальше просто пройтись по масиву b[1000] ища их...
xaker23
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 61
07.09.2014, 15:22  [ТС]     Вывести на экран номера первого положительного и первого отрицательного элементов #5
Цитата Сообщение от dvl6k Посмотреть сообщение
Полностью согласен с КОП, сортировка массива тебе не нужна (если этого не требует твое задание).
xaker23, зачем тебе массив b[1000], кстати это тотже а[1000], но до сортировки. Если тебе лень переписывать твою программу, можешь просто создать 2 переменные типа int, в первую поместить первое отрицательное значение, во вторую последнее положительное. Дальше просто пройтись по масиву b[1000] ища их...
Так эти числа они же задаются с клавиатуры...

Добавлено через 33 минуты
Как с конца начать поиск в массиве?Превидите пример пожалуйста
dvl6k
6 / 6 / 5
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 15:31     Вывести на экран номера первого положительного и первого отрицательного элементов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот держы....

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;
}
Сори что так долго спешил, ошибок понаделовал , пока нашел времени много убил....
xaker23
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 61
07.09.2014, 15:34  [ТС]     Вывести на экран номера первого положительного и первого отрицательного элементов #7
Спс,а i-- вот оно что у нас такого не было(((ну вообщем спасибо
dvl6k
6 / 6 / 5
Регистрация: 31.08.2014
Сообщений: 31
07.09.2014, 15:41     Вывести на экран номера первого положительного и первого отрицательного элементов #8
xaker23, это i-- участвует в декрементном цикле, т.е. цикл на убывание пишется так:

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

Если сомниваешься, в правильности, просто скомпилируй программу и поставь, штуки 3, числа последние отрицательные.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2014, 16:10     Вывести на экран номера первого положительного и первого отрицательного элементов
Еще ссылки по теме:

C++ Вывести массив на экран до первого нулевого элемента и отобразить число оставшихся элементов
Ввычислить сумму элементов от первого положительного и до конца массива C++
Определить номер первого отрицательного и номер последовательного отрицательного элементов массива C++

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

Или воспользуйтесь поиском по форуму:
KOPOJI
Модератор
 Аватар для KOPOJI
16243 / 6454 / 390
Регистрация: 12.06.2012
Сообщений: 19,362
07.09.2014, 16:10     Вывести на экран номера первого положительного и первого отрицательного элементов #11
А зачем столько много циклов? Можно же проще
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();
}
Yandex
Объявления
07.09.2014, 16:10     Вывести на экран номера первого положительного и первого отрицательного элементов
Ответ Создать тему
Опции темы

Текущее время: 15:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru