Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 14:13   #1
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
По умолчанию с++ Выяснить, образуют ли цифры данного натурального числа N воз- растающую последовательность.

Помогите, люди! я жутко туплю. Объясните, пожалуйста что тут делается в этой программе. а именно: зачем задавать ещё одну переменную tmp, кроме nom, а потом приравнивать их. И что такое происходит в цикле while?? и зачем задавать ещё переменную pre ?? что она обозначает? и если она приравнена к 9, то может вместо неё использовать просто 9??
Код:
#include<iostream>
using namespace std;

int main()
{
setlocale(0, "");
int nom, tmp, prev=9;  
cout << "vvedite chislo" << endl;
cin >> nom; 
tmp=nom;
	while (tmp!=0)
	{
	if (tmp%10<=prev)
		{
		prev=tmp%10;
		tmp=tmp/10;
		}
	else
	break;
	}
if (tmp==0)
cout << "Образует" << endl;
else
cout << "Не образует" << endl;
system ("pause");
return 0;
}
Извините, если вопросы глупые, но я сама не могу разобраться.
Anya She вне форума Ответить с цитированием
Старый 10.12.2012, 14:20   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Anya She

зачем задавать ещё одну переменную tmp, кроме nom, а потом приравнивать их

наверное, чтобы сохранить оригинальное число nom.
в программе оно не используется, так что в данном случае tmp не нужна.


И что такое происходит в цикле while?

последовательное получение цифр числа.
задача решается методом от пра-а-ативного (((Ж числа в обратном порядке должны образовывать убывающую последовательность. это сделано из-за особенностей работы остатка от деления.


и если она приравнена к 9, то может вместо неё использовать просто 9??

нельзя. ты что, не видишь, что далее по коду переменная prev пере-присаивается?
Rififi вне форума Ответить с цитированием
Старый 10.12.2012, 14:25   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) nom - это, логически, входная переменная алгоритма проверки. Модифицировать входные данные, даже если они в дальнейшем нигде не используются - дурной тон. В основном потому, что иначе при модификации программы есть приличный шанс внести в неё трудноуловимые ошибки. Поэтому nom копируется в переменную tmp, которая и используется.

2) prev - "предыдущая цифра", tmp%10 - "текущая цифра". Обратите внимание, что prev меняется в цикле, так что использовать вместо неё константное выражение 9 не выйдет. Изначально она приравнивается "самой большой цифре" - ход сомнительный, но имеющий право на жизнь.
Abstraction вне форума Ответить с цитированием
Старый 10.12.2012, 14:43   #4
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
По умолчанию

если я правильно понимаю, то
Код:
if (tmp%10<=prev) // если текущая цифра меньше либо равна предыдущей, то 
		{
		prev=tmp%10; //  почему мы присваиваем предыдущей цифре значение настоящей????
		tmp=tmp/10; // и число делим на 10
Anya She вне форума Ответить с цитированием
Старый 10.12.2012, 14:45   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
prev=tmp%10; // чтобы было с чем сравнивать дальше
tmp=tmp/10; // чтобы потом забрать следующую цифру
а вот если писать программы самому(ой) то подобных вопросов обычно не возникает
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 10.12.2012, 14:51   #6
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
По умолчанию

Спасибо... вроде понятно теперь. Не смогла додуматься до этой задачи, поэтому пришлось прибегнуть к помощи.
Anya She вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выяснить, является ли последовательность цифр натурального числа при просмотре их справа налево возрастающей последовательностью Al'f!ra Паскаль, Turbo Pascal, PascalABC.NET 2 05.03.2012 19:13
Натуральное число - Определить, образуют ли все цифры числа возрастающую последовательность Sasha2011 Паскаль, Turbo Pascal, PascalABC.NET 1 18.10.2011 09:25
напечатать в возрастающем порядке все цифры, не входящие в запись данного натурального числа Aimet Паскаль, Turbo Pascal, PascalABC.NET 1 18.06.2011 19:57
напечатать в убывающем порядке все цифры, не входящие в запись данного натурального числа Aimet Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2011 21:18
Найти количество различных цифр данного натурального числа. stalker Паскаль, Turbo Pascal, PascalABC.NET 10 22.05.2007 17:45