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

С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов - C++

Восстановить пароль Регистрация
 
abra-kadabra
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 8
25.01.2014, 22:05     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #1
С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов.
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
#include <stdio.h>
 
int main()
{   const int N=9;
    int arr[N];
    int i,b=0;
 
 
 
    for(i=0;i<N;i++)
         {printf("Number %u:",i+1);
          scanf("%d",&arr[i]);
         }
 
    for(i=0;i<N;i++)
    {printf("%d ",arr[i]);
    }
 
   for(i=0;i<N;i++)
        {
            if(arr[i]<0&&arr[i+1]>0)
            {
 
            }
        }
 
    for(i=0;i<N;i++)
        {if(arr[i]>0&&arr[i+1]<0)
            {
 
            }
        }
    printf("b=%d a=\n",b);
 
    return 0;
}
что в теле цикла нужно написать?? у меня были свои варианты, но получается чертовщина какая-то.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 22:05     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов
Посмотрите здесь:

C++ Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов.
Двумерный массив. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов C++
В массиве целых чисел a1 , a2 , ., a10 найти количество положительных Np и отрицательных No членов C++
C++ Дан массив целых чисел. Написать две функции ( количество положительных и отрицательных элементов)
С клавиатуры вводятся последовательность целых чисел 0 - признак окончания последовательности C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.01.2014, 22:33     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #2
Важно помнить, что 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
29
30
31
#include <iostream>
 
bool foo(int *arr, const int size)
{
    if (arr[0] == 0)
        return false;
    bool lastPos = arr[0] > 0; // истина если последнее число - положительное
 
    for (int i = 1; i < size; i++)
    {
        bool currPos = arr[i] > 0; // истина если последнее число - положительное
        if (arr[i] == 0 || lastPos == currPos) // если число - ноль или знаки совпали
        {
            std::cout << arr[i] << std::endl;
            return false;
        }
        lastPos = currPos; // записываем в последнее значение текущее
    }
 
    return true;
}
 
int main()
{
    const int N = 5; // количество чисел последовательности
    int A[N];
    // заполняем массив
    for (int i=0; i < N; i++)
        std::cin >> A[i];
    std::cout << std::boolalpha << foo(A, N) << std::endl;
}
abra-kadabra
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 8
26.01.2014, 15:17  [ТС]     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #3
Спасибо, что ответили. По поводу нуля я знал, что он не относится. Я не понимаю седьмую строчку arr[0] > 0; ведь это первый элемент>0, при чём тут тогда последнее число?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
26.01.2014, 20:26     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #4
abra-kadabra, если вы заметили - мы дальше двигаемся от 1 элемента. Первое сравнение нужно чтобы установить начальную позицию.
abra-kadabra
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 8
27.01.2014, 03:03  [ТС]     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #5
неа, не заметил. ааа кажется понял. спасибо

Добавлено через 3 часа 13 минут
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
#include <stdio.h>
 
int main()
{   const int N=10;
    int arr[N];
    int b=1;
 
 
    for(int i=0;i<N;i++)
         {printf("Number %u:",i+1);
          scanf("%d",&arr[i]);
         }
 
    for(int i=0;i<N;i++)
    {printf("%d \n",arr[i]);
    }
 
 
   for(int i=0;i<N-1;i++)
        {
       if(((arr[i]>0)&&(arr[i+1]<0))||((arr[i]<0)&&(arr[i+1]>0)))
             {b=0;}
            else
              {b=1;
              break;
              }
 
        }
 
if(b>0)
{
    printf("ne cher");
}
else
{
    printf("cher");
}
    return 0;
}
вот то, что у меня получилось. Я не совсем понял почему последнее значение + указатели мы и вовсе не проходили. Вопрос следующий как сделать вот эту задачу без if?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
27.01.2014, 03:32     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов #6
Цитата Сообщение от abra-kadabra Посмотреть сообщение
Я не совсем понял почему последнее значение + указатели мы и вовсе не проходили.
Потому что сравниваем с элементом, который идет далее. За последним элементом ничего не идет, не с чем сравнивать.

Код оформляйте в теги CPP. Задачу без if решать можно лишь сделав его использование завуалированным - например через циклы. Но по сути, элементарная логика для сравнений тут нужна.
Yandex
Объявления
27.01.2014, 03:32     С клавиатуры вводятся массив целых чисел. Проверить наблюдается ли в массиве чередование положительных и отрицательных элементов
Ответ Создать тему
Опции темы

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