Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
RafaProfa
3 / 3 / 1
Регистрация: 22.11.2015
Сообщений: 59
1

Программа, которая "переворачивает" последовательность положительных целых чисел

27.08.2016, 17:25. Просмотров 1138. Ответов 11
Метки нет (Все метки)

На вход подаются целые, положительные числа через пробел. Программа считывает их до тех пор, пока не встретит в последовательности 0. Т.е. 0 это остановка чтения. Цель - вывести эту последовательность в обратном порядке через пробел(0 не выводить).
Ограничения: нельзя использовать циклы, массивы, строки, контейнеры.
Есть подсказка: надо использовать рекурсию.
Сама задача относится к теме "Стек вызовов". Только как эти числа вытаскивать из стека, без понятия.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2016, 17:25
Ответы с готовыми решениями:

Рекурсия. "Перевернуть" последовательность положительных целых чисел
Задача: Вам требуется написать программу, которая "переворачивает"...

"Перевернуть" последовательность положительных целых чисел
На вход подается последовательность разделенных пробелами положительных целых...

Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра
Написать и протестировать функцию,которая "переворачивает" строку,передаваемую...

Перегрузка операторов в классе "Последовательность целых чисел"
Добрый день! Столкнулся с таким заданием: "Создать класс «последовательность...

Создать класс "Последовательность целых чисел"
Создать класс «последовательность целых чисел». Элементы последовательности...

11
John Prick
836 / 767 / 258
Регистрация: 27.07.2012
Сообщений: 2,179
Завершенные тесты: 3
27.08.2016, 17:33 2
C++
1
2
3
4
5
6
7
8
9
10
11
void read_and_out(ifstream & file)
{
    int n;
    file >> n;
    if (n == 0)
        return;
    else {
        read_and_out(file);
        cout << n;
    }
}
1
RafaProfa
3 / 3 / 1
Регистрация: 22.11.2015
Сообщений: 59
27.08.2016, 17:37  [ТС] 3
Цитата Сообщение от John Prick Посмотреть сообщение
read_and_out(ifstream & file)
Аргумент функции чуток непонятен
0
DevAlone
324 / 276 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
27.08.2016, 17:39 4
Лучший ответ Сообщение было отмечено RafaProfa как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
void reverseInput()
{
 int val;
 cin >> val;
 if(val!=0)
  reverseInput();
 cout << val << " ";
}
int main()
{
 reverseInput();
}
1
John Prick
836 / 767 / 258
Регистрация: 27.07.2012
Сообщений: 2,179
Завершенные тесты: 3
27.08.2016, 17:40 5
Цитата Сообщение от RafaProfa Посмотреть сообщение
Аргумент функции чуток непонятен
Файловый поток. Или его тоже нельзя использовать?
0
RafaProfa
3 / 3 / 1
Регистрация: 22.11.2015
Сообщений: 59
27.08.2016, 18:13  [ТС] 6
Цитата Сообщение от DevAlone Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
void reverseInput()
{
 int val;
 cin >> val;
 if(val!=0)
  reverseInput();
 cout << val << " ";
}
int main()
{
 reverseInput();
}
Выводит 0

Добавлено через 26 минут
Все решил, спасибо всем за помощь!
0
DevAlone
324 / 276 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
27.08.2016, 18:14 7
Цитата Сообщение от RafaProfa Посмотреть сообщение
Выводит 0
тогда так
C++
1
2
3
4
5
6
7
8
9
10
void reverseInput()
{
 int val;
 cin >> val;
 if(val==0)
  return;
 else 
   reverseInput();
 cout << val << " ";
}
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7053 / 3356 / 454
Регистрация: 04.12.2011
Сообщений: 9,336
Записей в блоге: 5
27.08.2016, 21:09 8
Цитата Сообщение от DevAlone Посмотреть сообщение
тогда так
тут Ввод жать нужно. Сама на нуле она не остановится.
Вот темка, где я поизголялся над похожей задачкой.
Display given sequence in reverse order
но тут поток используется.
По идее, в условии явно не запрещено.
0
DevAlone
324 / 276 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
28.08.2016, 04:19 9
Цитата Сообщение от IGPIGP Посмотреть сообщение
тут Ввод жать нужно. Сама на нуле она не остановится.
она и не должна. И у меня тоже там поток.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7053 / 3356 / 454
Регистрация: 04.12.2011
Сообщений: 9,336
Записей в блоге: 5
28.08.2016, 09:15 10
Цитата Сообщение от DevAlone Посмотреть сообщение
она и не должна. И у меня тоже там поток.
Это произвольное толкование условия. Там написано:
Цитата Сообщение от RafaProfa Посмотреть сообщение
На вход подаются целые, положительные числа через пробел. Программа считывает их до тех пор, пока не встретит в последовательности 0.
Эту фразу Вы полностью пропустили, а её ещё нужно правильно понять.
Я показал пример без потока, но это си-шная задачка, imho.
Внимание. Кроме 0 в условии еще есть одна мина. Читайте внимательно.
0
DevAlone
324 / 276 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
28.08.2016, 09:27 11
Цитата Сообщение от IGPIGP Посмотреть сообщение
Программа считывает их до тех пор, пока не встретит в последовательности 0.
Так моя программа не видит 0 до тех пор, пока я не нажму enter, и когда она его встречает, прекращает ввод.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Внимание. Кроме 0 в условии еще есть одна мина. Читайте внимательно.
вы про это?
Цитата Сообщение от RafaProfa Посмотреть сообщение
На вход подаются целые, положительные числа через пробел
Пускай ТС сам делает проверку на то, что пришло число и что оно положительное.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7053 / 3356 / 454
Регистрация: 04.12.2011
Сообщений: 9,336
Записей в блоге: 5
28.08.2016, 18:49 12
Цитата Сообщение от DevAlone Посмотреть сообщение
Так моя программа не видит 0 до тех пор, пока я не нажму enter
Я же и говорю что заданию она не соответствует.
Цитата Сообщение от DevAlone Посмотреть сообщение
вы про это?
В принципе да, но дело не в проверке на неотрицательность.

Добавлено через 3 часа 19 минут
Проще вот этого у меня не получается:
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 <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
int rev_num(int current=0)
{
 
char ac=getch();
int ai;
if(ac==' ')
{
    cout<<' ';
    return current;
}
else
{
ai=ac-'0';
cout<<ai;
current*=10;
current+=ai;
return rev_num(current);
}
}
 
void reverance()
{
int a=rev_num();
if(a==0)return;
reverance();
cout<<' '<<a;
}
 
void main()
{   
    reverance();
cout<<endl;
system("pause");    
}


Добавлено через 1 час 5 минут
Вот с маленьким дополнением нейтрализующим мину:
Цитата Сообщение от RafaProfa Посмотреть сообщение
На вход подаются целые, положительные числа через пробел.
То что пользователь может скрэшить программу подавая глупости это его дело. Буратиноз - дело добровольное. Но если он имеет право набрать +123 с таким же успехом как и 123 везде, где требуется положительное число, то и в нашей программе, это должно быть обеспечено. Иначе при вводе, скажем
123 +456 78 +910 +0 она не будет работать, хотя ввод полностью соответствует условию.
То что она сможет потерпеть и такое изголение как:
1+23 +4+5+6 78+ 910 +0
это плюшка. Не слишком большая, кстати. Потому что юзер всесилен и ужасен и запросто может написать:
++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
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
int rev_num(int current=0)
{
 
char ac=getch();
//вот этот маленький фрагмент позволяет вводить +123 +43 456 +25 и т.д.
if(ac=='+')
{
cout<<ac;
ac=getch();
}
 
int ai;
if(ac==' ')
{
    cout<<' ';
    return current;
}
else
{
ai=ac-'0';
cout<<ai;
current*=10;
current+=ai;
return rev_num(current);
}
}
 
void reverance()
{
int a=rev_num();
if(a==0)return;
reverance();
cout<<' '<<a;
}
 
void main()
{   
    reverance();
cout<<endl;
system("pause");    
}
0
28.08.2016, 18:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2016, 18:49

Создать список из целых чисел. После каждого элемента, равного "х" вставить элемент, равный "у"
Задача со стеком. Создать список из целых чисел. После каждого элемента,равного...

Программа, которая выводит числа, у которых сумма крайних цифр равна средней цифре. Если таких чисел нет - выведите "NO"
На вход в первой строке подаётся натуральное число N (не более 10000). Далее,...

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


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

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

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