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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
#1

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

10.05.2013, 21:34. Просмотров 330. Ответов 7
Метки нет (Все метки)

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

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

В массиве найти последнюю триаду из нулей - C++
В массиве найти последнюю триаду из нулей Подсобите, заранее благодарен !

В данном массиве найти самую длинную группу из записанных подряд элементоводного знака - C++
1.В данном массиве найти самую длинную группу из записанных подряд элементоводного знака.

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

В целочисленном массиве найти число чередований знака, то есть число переходов с минуса на плюс или с плюса на минус. - C++
В целочисленном массиве найти число чередований знака, то есть число переходов с минуса на плюс или с плюса на минус. Например, в...

Подсчитать количество перемен знака в одномерном числовом массиве - C++
Дан одномерный числовой массив. Подсчитать кол-во перемен знака в массиве. Кол-во элементов в массиве задать в процессе диалога. Написать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.05.2013, 21:38 #2
Fissil, что значит "перемена знака в массиве"?
0
Fissil
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 19
10.05.2013, 21:42  [ТС] #3
ну перемена знака,когда после положительного элемента идет отрицательный,либо наоборот
0
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
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;
        {
            //знак поменялся
        }
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.05.2013, 23:19 #5
Genn55, и как это решает задачу?
0
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
10.05.2013, 23:26 #6
Извиняюсь.Проверил.Плохо.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
10.05.2013, 23:38 #7
Цитата Сообщение от Fissil Посмотреть сообщение
Подскажите,как найти последнюю перемену знака в массиве,без использования циклов и рекурсии.
Каков бы ни был алгоритм элементы в любом случае нужно как-то перебирать Или вы имеете в виду алгоритм из STL? В таком случае, учитывая что нужно найти последнюю пару соседних элементов с разными знаками: std::adjacent_find + свой предикат + reverse_iterator.
0
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 02:51
Привет! Вот еще темы с ответами:

В заданном массиве определите число соседств двух чисел разного знака - C++
В заданном массиве определите число соседств двух чисел разного знака.

В заданном массиве определить количество соседств двух чисел разного знака - C++
Нужен код с++ с выводом массива и решением Тип элементов: целые Кол-во элементов: 20 Элементы от -10 до 12

Вставить после каждого знака пунктуации в символьном массиве знак табуляции - C++
Помогите пожалуйста решить задачи на языке Си 1. Вставить после каждого знака пунктуации в символьном массиве знак табуляции. 2. Дан...

Определите в двумерном числовом массиве число соседства с двух чисел разного знака - C++
Помогите. Определите в двумерном числовом массиве число соседства с двух чисел разного знака.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.05.2013, 02:51
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru