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

Вывести на экран сначала числа < 0, затем числа > 0 в порядке их ввода. Использовать очередь

18.11.2015, 14:05. Просмотров 903. Ответов 12
Метки нет (Все метки)

Ввести n целых чисел. Вывести на экран сначала числа <0, затем числа >0 в порядке их ввода. Использовать очередь.
Пример:
ввод: -2 3 10 -6 7 -8
вывод:
-2 -6 -8
3 10 7.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2015, 14:05
Ответы с готовыми решениями:

Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки
Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной...

Получить новый массив, в котором сначала идут положительные числа, затем нулевые, затем отрицательные исходного
дан массив X(N). получить новый массив Y(N), такой, что в нем сначала идут...

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном...

Сначала вывести все отрицательные числа, а затем все остальные
написать последовательность операторов: дано 100 чисел..сначала вывести все...

Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд
Помогите пожалуйста! Не могу решить задачу на перемещение элементов массива...

12
Lensato
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
18.11.2015, 15:17 2
Лучший ответ Сообщение было отмечено Blairy как решение

Решение

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include  <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
class MyInt
{
public:
    int value = 0;
    MyInt *nextMyInt = nullptr;
 
    MyInt() { }
    MyInt(int val)
    {
        value = val;
    }
};
 
int main()
{
    char ch;
    int *mas;
    cout << "Enter elements: ";
    int number;
    MyInt *myInt = nullptr;
    MyInt *lastMyInt = nullptr;
 
    do
    {
        cin.get(ch);
        if (ch == '-' || (ch >= '0' && ch <= '9'))
        {
            cin.putback(ch);
            cin >> number;
            if (!cin)
            {
                cout << endl << "incorrect data" << endl;
                system("pause");
                return -1;
            }
                
            if (number == 0)
                continue;
 
            if (number < 0)
            {
                cout << number << " ";
            }
            else
            {
                if (myInt == nullptr)
                {
                    myInt = new MyInt(number);
                    lastMyInt = myInt;
                }
                else
                {
                    lastMyInt->nextMyInt = new MyInt(number);
                    lastMyInt = lastMyInt->nextMyInt;
                }
            }
        }
    }
    while (ch != '\n');
 
    MyInt *tmp;
 
    cout << endl;
    while (myInt != nullptr)
    {
        cout << myInt->value << ' ';
        tmp = myInt->nextMyInt;
        delete myInt;
        myInt = tmp;
    }
 
    cout << endl << endl;
    system("pause");
    return 0;
}
1
na1l
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
18.11.2015, 15:20 3
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 <queue>
 
using namespace std;
 
int main()
{
  queue<int> positive;
  queue<int> negative;
 
  int arr[1000];
  int n;
 
  cin >> n;
  for (int i = 0; i < n; i++){
      cin >> arr[i];
      if (arr[i] > 0)
        positive.push(arr[i]);
      if (arr[i] < 0)
        negative.push(arr[i]);
    }
  while (!negative.empty()){
    cout << negative.front() << " ";
    negative.pop();
  }
  cout << endl;
  while (!positive.empty()){
    cout << positive.front() << " ";
    positive.pop();
  }
  return 0;
}
1
ture
529 / 337 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
18.11.2015, 15:22 4
Лучший ответ Сообщение было отмечено Blairy как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <queue>
 
int main() {
    int n;
    std::queue<int> q;
    while(std::cin >> n)
        if(n >= 0)
            q.push(n);
        else
            std::cout << n << " ";
    std::cout << std::endl;
    while(q.size()) {
        std::cout << q.front() << " ";
        q.pop();
    }
 
    system("pause");
    return 0;
}
1
zer0mail
2452 / 2089 / 216
Регистрация: 03.07.2012
Сообщений: 7,577
Записей в блоге: 1
18.11.2015, 15:31 5
ture, так ввод будет идти вперемешку с выводом, хотя это явно не запрещено.
0
Blairy
1 / 1 / 0
Регистрация: 05.07.2015
Сообщений: 23
18.11.2015, 17:29  [ТС] 6
как я понял тут только вывод отрицательных эл-тов? а положительные по какому алгоритму нужно выводить?
0
Lensato
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
18.11.2015, 17:36 7
Цитата Сообщение от Blairy Посмотреть сообщение
как я понял тут только вывод отрицательных эл-тов? а положительные по какому алгоритму нужно выводить?
Кому именно вы написали?
У меня выводит и то и то.
Или вы хотели бы покороче, как в последнем посте? )
0
Blairy
1 / 1 / 0
Регистрация: 05.07.2015
Сообщений: 23
18.11.2015, 17:48  [ТС] 8
na1l, программа не работает. она выделяет только первые два отрицательные символа, остальные игнорирует (((

Добавлено через 10 минут
Lensato, да, ваш код отличный. все работает. но я хочу все варианты проработать. ваш вариант просто супер! работает на все 100%. второй вариант не понятно вообще...работает или нет. а вот третий мне больше всего понравился. но там выводятся только значения с минусом .хотелось бы все чтоб выводилось.
0
ture
529 / 337 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
18.11.2015, 17:51 9
Blairy, ну уж и не самый хороший конечно.... ввод заканчивается, если передать признак конца файла или просто в конце строки передать не цифровой символ.
0
Blairy
1 / 1 / 0
Регистрация: 05.07.2015
Сообщений: 23
18.11.2015, 17:56  [ТС] 10
Lensato, да, хотелось бы максимально короткий и понятный код, а то я очень долго разбираю коды. и чем он короче тем быстрее я пойму алгоритм.
0
na1l
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
19.11.2015, 10:54 11
Blairy , хм, у меня все работает
0
Миниатюры
Вывести на экран сначала числа < 0, затем числа > 0 в порядке их ввода. Использовать очередь  
Lensato
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
19.11.2015, 12:43 12
Чуть более краткий вариант с использованием queue
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
41
42
43
44
45
46
47
48
49
50
#include  <iostream>
#include <queue>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    char ch;
    cout << "Enter elements: ";
    int number;
    std::queue<int> q;
 
    do
    {
        cin.get(ch);
        if (ch == '-' || (ch >= '0' && ch <= '9'))
        {
            cin.putback(ch);
            cin >> number;
            if (!cin)
            {
                cout << endl << "incorrect data" << endl;
                system("pause");
                return -1;
            }
 
            if (number == 0)
                continue;
 
            if (number < 0)
                cout << number << " ";
            else
                q.push(number);
        }
    }
    while (ch != '\n');
 
    cout << endl;
    while (!q.empty())
    {
        cout << q.front() << ' ' ;
        q.pop();
    }
 
    cout << endl << endl;
    system("pause");
    return 0;
}
0
Blairy
1 / 1 / 0
Регистрация: 05.07.2015
Сообщений: 23
19.11.2015, 19:26  [ТС] 13
ture, аааа, до меня дошло...блин...до безобразия простой и удобный алгоритм...и как я сам до этого не допер. Спасибо вам огроооооомное!!
0
19.11.2015, 19:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 19:26

Вывести на экран сначала вопросительные, а затем восклицательные предложения
Написать программу,где вводятся предложения с клавиатуры, которая выводит на...

Вывести на экран числа в определенном порядке
на экран числа следующим образом (с помощью трех циклов: for, while, do)...

Считать текст из файла и вывести на экран сначала вопросительные, затем восклицательные предложения
Написать программу, которая считывает текс из файла и выодит на экран сначало...


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

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

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