Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 5
Регистрация: 14.12.2015
Сообщений: 186
1

Определить, чередуются ли в массиве положительные и отрицательные элементы

15.01.2016, 21:57. Показов 863. Ответов 6
Метки нет (Все метки)

Создать одномерный динамический массив
размера n, где n вводит пользователь.
Заполнить его случайными целыми числами в
интервале от -100 до 100. Верно ли, что в нем
положительные и отрицательные числа
чередуются?

как это сделать ? ( помогите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2016, 21:57
Ответы с готовыми решениями:

Определить, чередуются ли в массиве положительные и отрицательные элементы
Нужно две программы по одному массиву Дан массив {xi}, i=1,2,...,N. 1) Определить, чередуются ли...

Чередуются ли в массиве положительные и отрицательные числа
Дан массив ненулевых целых чисел размера n. Проверить, чередуются ли в нем положительные и...

Чередуются ли в массиве положительные и отрицательные числа
Понимаю что задача не такая уж и сложная, но дальше решить не получается. Видел несколько ответов...

чередуются ли в массиве положительные и отрицательные значения
Задача: Написать функцию, которая для массива вещественных чисел размерности n определяет,...

6
Эксперт CЭксперт С++
5054 / 2241 / 330
Регистрация: 20.02.2013
Сообщений: 5,601
Записей в блоге: 24
16.01.2016, 13:21 2
Цитата Сообщение от blocker147 Посмотреть сообщение
как это сделать ?
То же, что и в твоей предыдущей теме.

Запрашиваешь у пользователя размер массива:
C++
1
2
3
std::cout << "Please enter the size of your array: ";
int n;
std::cin >> n;
Объявляешь одномерный целочисленный динамический массив:
C++
1
int * arr = new int[n];
Заполняешь случайными числами от 1 до 100:
C++
1
2
3
4
const int FROM_NUM = 1;
const int TO_NUM = 100;
// функцию fill_random() нужно написать самому или воспользоваться готовым вариантом из STL:
fill_random(arr, n, FROM_NUM, TO_NUM);
Проверяешь порядок следования элементов:
C++
1
2
3
4
5
6
// функцию arranged_in_needed_order() нужно написать самому
// или воспользоваться готовым вариантом из STL:
if ( arranged_in_needed_order(arr, n) )
    std::cout << "\nYour array is arranged in needed order.\n";
else
    std::cout << "\nYour array is not arranged in needed order.\n";
0
14 / 14 / 5
Регистрация: 16.01.2016
Сообщений: 78
16.01.2016, 14:27 3
C++
1
if ( arranged_in_needed_order(arr, n) )
расшифруйте пожалуйста это условие. Аналогичная задача.
Рационально ли решение перебора четных, а затем не четных в массиве? Или есть возможность еще как то проверить члены массива?
0
Эксперт CЭксперт С++
5054 / 2241 / 330
Регистрация: 20.02.2013
Сообщений: 5,601
Записей в блоге: 24
16.01.2016, 14:53 4
Андрей Валерьев, в условии самодельная функция. В комментарии к коду же написано:
C++
1
2
// функцию arranged_in_needed_order() нужно написать самому
// или воспользоваться готовым вариантом из STL:
Добавлено через 1 минуту
Функция принимает в качестве аргументов указатель на первый элемент последовательности и количество элементов. Возвращаемое значение - bool.
Вот как выглядит прототип такой функции:
C++
1
bool arranged_in_needed_order(int * arr, const int arr_size);
Добавлено через 1 минуту
Цитата Сообщение от Андрей Валерьев Посмотреть сообщение
там длинная проверка
Правильно. Вот эту-то длинную проверку для лучшей читаемости кода и помещают обычно в пользовательскую (самодельную) функцию.

Добавлено через 18 минут
Андрей Валерьев, вот пример возможной реализации:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool arranged_in_needed_order(int * arr, const int arr_size)
{
    bool is_ordered = true;
    for (int i = 0; i < arr_size - 1; ++i)
    {
        if ( (arr[i] >= 0 && arr[i+1] < 0) || (arr[i] < 0 && arr[i+1] >= 0) )
        {
            is_ordered = true;
        }
        else
        {
            is_ordered = false;
            break;
        }
    }
    return is_ordered;
}
1
14 / 14 / 5
Регистрация: 16.01.2016
Сообщений: 78
16.01.2016, 16:02 5
Спасибо за короткий вариант. Я организовывал два цикла с шагом 2. Первый цикл проверял все ли четные элементы одного знака, второй противоположного знака. Относительно долго исполнялось.
0
Don't worry, be happy
16987 / 9865 / 1900
Регистрация: 27.09.2012
Сообщений: 24,465
Записей в блоге: 1
16.01.2016, 16:08 6
Еще как вариант:
C++
1
2
3
4
5
6
7
8
9
10
bool arranged_in_needed_order(int * arr, size_t arr_size)
{
    if(arr_size<2)
        return true ;
    for (size_t i = 0; i < arr_size - 1; ++i) {
        if(arr[i]*arr[i+1]>=0)
            return false ;
    }
    return true;
}
3
14 / 14 / 5
Регистрация: 16.01.2016
Сообщений: 78
16.01.2016, 20:28 7
Спасибо) всё гениальное-просто
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2016, 20:28

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Проверить, чередуются ли в массиве положительные и отрицательные числа
11.2 Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Дан целочисленный массив из N элементов. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Не разбираюсь с методом классов, прошу помочь. Дан массив ненулевых целых чисел размера N....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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