Официальный сайт студ.городка НГТУ
Учеба » Помогите с информатикой 

#1  26.11.06 18:53

Помогите с информатикой

Вот такая задача, нужно составить блок-схему:

Дано натуральное число п. Поменять порядок цифр числа на обратный.

Не представляю даже с чего начать, может поделитесь идеями. Буду благодарна.

И еще одна:

Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных чисел основан на следующих свойствах этой величины. Пусть m и п - одновременно не равные нулю целые неотрицательные числа и пусть m больше или равно п. Тогда, если п=0, то НОД (m,п) = m, а если п не равно 0, то тогда для чисел m, п и r, где r - остаток от деления m на п, выполняеться равенство
НОД (m,п) = НОД (п,r). Например НОД (15,6) = НОД (6,3) = НОД (3,0).
Это все. Тоже надо блок-схему.

Offline

#2  26.11.06 23:04

Re: Помогите с информатикой

1
разбираешь число на кусочки (делением на 10)
потом выстраиваешь в обратном порядке (умножением на 10)
как-то так..могу написать код, блок-схему по нему составишь?

Исправлено Mors_ontologica (26.11.06 23:05)

Offline

#3  26.11.06 23:18

Re: Помогите с информатикой

n -- число на вход
m -- число на выход

0. m = 0; n = 10*n;
переход к 1
1. n=div(n,10); m = 10*m + mod(n,10);
переход к 2
2. div(n,10) == 0?
если да, выдаём m, если нет, переход к 1

Offline

#4  27.11.06 00:59

Re: Помогите с информатикой

Я восхищена вашим умом. Все-таки в НГТУ учаться невероятно умные парни. Спасибо, конечно за помощь. Но я что-то не знаю, что такое div и mod.
На информатике ни разу этого не слышала. Это вообще из Срр? Если да, то дальше сама попытаюсь разобраться. В книжках пороюсь.
Спасибо, теперь хоть зацепка есть.
Неееет, програмирование это не для меня)))))) - это я тоже поняла. Лучше день и ночь матаном заниматься.)))

Offline

#5  27.11.06 01:27

Re: Помогите с информатикой

Ну, раз ты девушка, пишу "подробнее" :)

div - это целая часть от деления ( div(x,y) = [x/y] )
mod - это остаток от деления ( mod(x,y) = x - y*div(x/y) )

Например, div(17,4) = 4; mod(17,4) = 17 - 4*4 = 1;

Теперь к схеме.
Для начала переменную m (которую мы отдадим на выходе) приравняем к нулю, а переменную n (полученную нами на входе) мы умножим на 10, добавив тем самым ещё один разряд.
Это просто необходимые начальные преобразования, которые в блок-схему как бы и не входят.
Теперь, собственно, сама блок-схема.
n=div(n,10) - отрезаем от n последнюю цифру (при первом выполнении этой команды число n не постарадает, ибо мы предусмотрительно добавили туда ещё один разряд). m = 10*m + mod(n,10) - добавляем числу m один разряд и записываем туда последнюю цифру n.
переходим ко второй части.
если div(n,10) равняется нулю, т.е. цифр больше не осталось, то выдаём на выход m. Если div(n,10) нулю не равно, значит надо повторить операцию. Так цикл будет повторяется, пока div(n,10) не станет равным нулю.

Как это работает? На примере:

n = 1987;

0.    m = 0;
    n = 10*n = 19870;
1.    n = div(n,10) = 1987;
    m = 10*m + mod(n,10) = 10*0 + 7 = 0 + 7 = 7;
2.    div(n,10) == 198 != 0
значит переход к части 1
1.    n = div(n,10) = 198;
    m = 10*m + mod(n,10) = 10*7 + 8 = 70 + 8 = 78;
2.    div(n,10) == 19 != 0
значит переход к части 1
1.    n = div(n,10) = 19;
    m = 10*m + mod(n,10) = 10*78 + 9 = 780 + 9 = 789;
2.    div(n,10) == 1 != 0
значит переход к части 1
1.    n = div(n,10) = 1;
    m = 10*m + mod(n,10) = 10*789 + 1 = 7890 + 1 = 7891;
2.    div(n,10) == 0
значит выдаём на выход число m

выход: 7891

Алгоритм верен. Гип-гип.

p.s. я в НГУ учусь, к НГТУ имею косвенное отношение ;)

Offline

#6  27.11.06 09:02

Re: Помогите с информатикой

по-человечески))) вместо mod легче % написать))
вот и не надо мне это все набирать

Offline

#7  27.11.06 19:48

Re: Помогите с информатикой

Mors_ontologica написал(а):

вместо mod легче % написать))

это в си-подобных языках это %, а в теории алгоритмов - mod :)

Offline

Учеба » Помогите с информатикой 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.026 сек.
Выполнено 11 запросов.