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

Вывести соседние элементы массива, если они одного знака - C++

Восстановить пароль Регистрация
 
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 19:50     Вывести соседние элементы массива, если они одного знака #1
Дан массив чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет - не выводите ничего. Если таких пар соседей несколько - выведите первую пару.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2015, 19:50     Вывести соседние элементы массива, если они одного знака
Посмотрите здесь:

C++ Из заданного массива целых чисел, который представлен в виде связанного списка, удалить все нулевые элементы, если они существуют
Переставить соседние элементы массива C++
Вывести все элементы массива входящие в него более одного раза C++
C++ Поменять местами элементы соседние массива
Сравнить элементы и, если они одинаковые, то оставить один из них C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 21:19     Вывести соседние элементы массива, если они одного знака #2
Например так:
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    //Создание и заполнение массива
    int n;
    cout << "Введите кол-во элементов в массиве: ";
    cin >> n;
    int* A = new int[n];
    for (int i = 0; i < n; i+=2)
    {
        A[i] = rand()% 100 * -1;
        A[i + 1] = rand() % 100;
    }
    for (int i = 0; i < n; i++)
        swap(A[i], A[rand() % n]);
    cout << endl << "Массив: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << A[i] << " ";
    }
    cout << endl << endl;
    //Задание 1
    for (int i = 0; i < n; i++)
    {
        if (A[i]>0 && A[i + 1]>0 || A[i] < 0 && A[i + 1] < 0)
        {
            cout << "Два соседних элемента одного знака: " <<A[i] << " " << A[i + 1];
            cout << endl <<endl;
            break;
        }
    }
    return 0;
}
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 21:25  [ТС]     Вывести соседние элементы массива, если они одного знака #3
Компилятор не знает, что такое #include "stdafx.h"
Это можно как-то поправить? (использовать что-нибудь другое)

Добавлено через 3 минуты
И, если можно пояснения к коду.
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 21:57     Вывести соседние элементы массива, если они одного знака #4
А так?
C++
1
2
3
4
5
6
7
#include <SDKDDKVer.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 21:58  [ТС]     Вывести соседние элементы массива, если они одного знака #5
Предоставьте полный код, если вас не затруднит
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 22:00     Вывести соседние элементы массива, если они одного знака #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
#include <SDKDDKVer.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    //Создание и заполнение массива
    int n;
    cout << "Введите кол-во элементов в массиве: ";
    cin >> n;
    int* A = new int[n];
    for (int i = 0; i < n; i += 2)
    {
        A[i] = rand() % 100 * -1;
        A[i + 1] = rand() % 100;
    }
    for (int i = 0; i < n; i++)
        swap(A[i], A[rand() % n]);
    cout << endl << "Массив: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << A[i] << " ";
    }
    cout << endl << endl;
    //Задание 1
    for (int i = 0; i < n; i++)
    {
        if (A[i]>0 && A[i + 1]>0 || A[i] < 0 && A[i + 1] < 0)
        {
            cout << "Два соседних элемента одного знака: " << A[i] << " " << A[i + 1];
            cout << endl << endl;
            break;
        }
    }
    system("PAUSE");
    return 0;
}
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 22:04  [ТС]     Вывести соседние элементы массива, если они одного знака #7
А для чего эта строка?
C++
1
 A[i] = rand() % 100 * -1;
Тем более, с ошибкой.

Компиляция: [Error] 'rand' was not declared in this scope
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 22:05     Вывести соседние элементы массива, если они одного знака #8
alexshch, а если будут все положительные элементы больше 1000?

Добавлено через 55 секунд
ishkins, создает рандомные значение от -100 до 0
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 22:06  [ТС]     Вывести соседние элементы массива, если они одного знака #9
В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива. Все числа отличны от нуля.
C клавиатуры вводим.
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 22:07     Вывести соседние элементы массива, если они одного знака #10
Я не знаком с рандомом в С++ и это лучшее до чего я додумался, используйте свой массив, заполненный в ручную
ishkins
1 / 1 / 0
Регистрация: 22.10.2015
Сообщений: 21
20.11.2015, 22:08  [ТС]     Вывести соседние элементы массива, если они одного знака #11
Ну рандом здесь в принципе не нужен, сейчас буду пробовать.
KinGelaim
6 / 6 / 1
Регистрация: 25.03.2015
Сообщений: 126
20.11.2015, 22:10     Вывести соседние элементы массива, если они одного знака #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int n;
    cout << "Введите кол-во элементов в массиве: ";
    cin >> n;
    int* A = new int[n];
    for (int i = 0; i < n; i ++)
    {
        cin >> A[i];
    }
    cout << endl << "Массив: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << A[i] << " ";
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 15:44     Вывести соседние элементы массива, если они одного знака
Еще ссылки по теме:

C++ Разделить элементы одного массива на элементы другого массива, записать результат в третий массив
Поменять соседние элементы массива C++

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

Или воспользуйтесь поиском по форуму:
flash_back
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 65
16.06.2016, 15:44     Вывести соседние элементы массива, если они одного знака #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
    int n;
    cin >> n;
    vector <int> v;
    for (int i = 0; i < n; i++){
        int temp;
        cin >> temp;
        v.push_back(temp);
    }
    for (int i = 1; i < n; i++) {
        if (v[i] > 0 && v[i-1] > 0 || v[i] < 0 && v[i-1] < 0) {
        cout << v[i-1] << " " << v[i];
        break;
        }
    }
    return 0;
}
Yandex
Объявления
16.06.2016, 15:44     Вывести соседние элементы массива, если они одного знака
Ответ Создать тему
Опции темы

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