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

Алгоритмы (найти последнюю перемену знака в массиве) - C++

Восстановить пароль Регистрация
 
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
10.05.2013, 21:34     Алгоритмы (найти последнюю перемену знака в массиве) #1
Подскажите,как найти последнюю перемену знака в массиве,без использования циклов и рекурсии.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 21:34     Алгоритмы (найти последнюю перемену знака в массиве)
Посмотрите здесь:

C++ Вставить после каждого знака пунктуации в символьном массиве знак табуляции
В целочисленном массиве найти число чередований знака, то есть число переходов с минуса на плюс или с плюса на минус. C++
Определите в двумерном числовом массиве число соседства с двух чисел разного знака C++
В данном массиве найти самую длинную группу из записанных подряд элементоводного знака C++
C++ В массиве найти последнюю триаду из нулей
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.05.2013, 21:38     Алгоритмы (найти последнюю перемену знака в массиве) #2
Fissil, что значит "перемена знака в массиве"?
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
10.05.2013, 21:42  [ТС]     Алгоритмы (найти последнюю перемену знака в массиве) #3
ну перемена знака,когда после положительного элемента идет отрицательный,либо наоборот
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
10.05.2013, 22:49     Алгоритмы (найти последнюю перемену знака в массиве) #4
Наверное как то так


C++
1
2
3
4
5
6
7
8
if(((((A[i]>0)&&(A[i+1]>0)))||(((A[i]<0)&& (A[i+1]<0))))&&(A[i]!=0))
        {
            //что то делать
        }
        else;
        {
            //знак поменялся
        }
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.05.2013, 23:19     Алгоритмы (найти последнюю перемену знака в массиве) #5
Genn55, и как это решает задачу?
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
10.05.2013, 23:26     Алгоритмы (найти последнюю перемену знака в массиве) #6
Извиняюсь.Проверил.Плохо.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
10.05.2013, 23:38     Алгоритмы (найти последнюю перемену знака в массиве) #7
Цитата Сообщение от Fissil Посмотреть сообщение
Подскажите,как найти последнюю перемену знака в массиве,без использования циклов и рекурсии.
Каков бы ни был алгоритм элементы в любом случае нужно как-то перебирать Или вы имеете в виду алгоритм из STL? В таком случае, учитывая что нужно найти последнюю пару соседних элементов с разными знаками: std::adjacent_find + свой предикат + reverse_iterator.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 02:51     Алгоритмы (найти последнюю перемену знака в массиве)
Еще ссылки по теме:

В заданном массиве определите число соседств двух чисел разного знака C++
В массиве Z (m) найти количество дежурств знака, то есть количество переходов с минуса на плюс и наоборот. Например, в последовательности 0, - 2, 0 - C++
Найти в массиве число чередований знака C++

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

Или воспользуйтесь поиском по форуму:
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
11.05.2013, 02:51     Алгоритмы (найти последнюю перемену знака в массиве) #8
Как то так.С 0 добавить условие,если нужно.
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()
{
    const int size=10;
    int A[size]={-1,5,-6,-8,3,7,-7,-6,4,3};
 
     cout<<" array A:"<<endl;
    for(int i=0;i!=size;i++)
 
        cout<<A[i]<<" ";
        cout<<"\n";
 
 int countB=0,countC=0,i;
     for( i=0;i<size;i++)
        {
         countB=A[i-1];
     countC=A[i];
        }
if (((countB>0)&&(countC>0))||((countB<0)&&(countC<0)))
cout<<"   no"<<"\n";
else
cout<<"   yes "<<"\n";
 
    return 0;
}
Добавлено через 2 часа 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
#include <iostream>
#include <cstdlib>
#include <ctime>
 using namespace std;
 
int main()
{
    const int size=10;
    int A[size];
 
    srand(int(time(0)));
    cout<<"array A:"<<endl;
    for(int i=0;i!=size;i++)
    {
        A[i]=5-rand()%10;
        cout<<A[i]<<" ";
    }
    cout<<endl;
 
    int countB=0,countC=0,i;
       for(i=size;i>=1;i--)
{
if ((i-1)==0)
break;
        countB=A[i-1];
        countC=A[i];
if (((countB>0)&&(countC<0))||((countB<0)&&(countC>0)))
break;
}
cout <<"  pos "<< i<<"\n";
    return 0;
}
Yandex
Объявления
11.05.2013, 02:51     Алгоритмы (найти последнюю перемену знака в массиве)
Ответ Создать тему
Опции темы

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