Паскаль, циклические алгоритмы |
Здравствуйте, гость ( Вход | Регистрация )
Паскаль, циклические алгоритмы |
kate17 |
1.10.2010, 10:13
Сообщение
#1
|
Новичок Группа: Продвинутые Сообщений: 7 Регистрация: 1.10.2010 Город: Самара Вы: студент |
Можете помочь решить задачу в паскале на тему циклические алгоритмы?
|
граф Монте-Кристо |
1.10.2010, 10:25
Сообщение
#2
|
Доцент Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое |
Помочь можем. Решать будете сами.
|
kate17 |
2.10.2010, 18:54
Сообщение
#3
|
Новичок Группа: Продвинутые Сообщений: 7 Регистрация: 1.10.2010 Город: Самара Вы: студент |
Числа 1,10,100,1000..выписаны подряд без пробелов между ними.Ввести N (1<=N<=1000000) и определить,какая цифра стоит на N-ом месте.
Я думала записать саму эту последовательность как k1:=K*10...K2=K1*10...., где k:=1.Но не знаю как ввести еще один счетчик, чтобы считалось само место числа, потому что в любом случае ответ будет либо 1,либо 0. Или я вообще неправильно рассуждаю?( |
Vahappaday |
2.10.2010, 19:47
Сообщение
#4
|
Аспирант Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент |
неправильно) записывать последовательность не надо...
точнее записать-то можно, но это крайне неэкономично. Я бы сделал так. Есть текущая длина числа, обзовём её буквой C, изначальна равна 1 (для 1 равна одному, для 10 - двум и т.д.). Есть N - позиция числа. Каждую итерацию уменьшаем N на C, и увеличиваем C на единицу. Итерации проводим пока N>C. Как только N <= C смотрим значение N. Если N=1, то мы попали в первую цифру какого-то числа, то бишь, в единичку. Если не равно 1, то попали в нолик. Если что непонятно, прошу обращаться) |
kate17 |
3.10.2010, 6:34
Сообщение
#5
|
Новичок Группа: Продвинутые Сообщений: 7 Регистрация: 1.10.2010 Город: Самара Вы: студент |
А как представить уменьшение итерации С на N?
|
Vahappaday |
3.10.2010, 8:14
Сообщение
#6
|
Аспирант Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент |
N:=N-C;
|
kate17 |
3.10.2010, 8:33
Сообщение
#7
|
Новичок Группа: Продвинутые Сообщений: 7 Регистрация: 1.10.2010 Город: Самара Вы: студент |
Получилось) Но, если проверить, то зачастую программа выдает 0, когда должна быть единица. Может я неправильно записала?
Var N,C:integer; begin write('Введите место числа N='); read(N); c:=1; While N<=C do N:=N-C; c:=c+1; If N<=C then begin read(N) end; If N=1 then begin write(1)end; If N<>1 then begin write(0)end; end. (IMG:style_emoticons/default/sad.gif) |
Vahappaday |
3.10.2010, 8:56
Сообщение
#8
|
Аспирант Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент |
хм... чего-то ерунда какая-то....
1. Во-первых, Код While N>C 2. Во-вторых, у меня вопрос к паскалянтам, после do вся строчка выполняется каждую итерацию или только первое выражение? Я про строку Код While N<=C do N:=N-C; c:=c+1; Не стоит ли её заменить на Код While N<=C do begin N:=N-C; c:=c+1; end; Оговорюсь, паскаля не знаю вообще, так что по этому пункту могу ошибаться. 3. В-третьих, строка Код If N<=C then begin read(N) end; вообще не понятна. |
граф Монте-Кристо |
3.10.2010, 9:01
Сообщение
#9
|
Доцент Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое |
Насколько я помню, после do, если нет begin'а, выполняется только первая строчка. Так что заменить стоит(IMG:style_emoticons/default/smile.gif)
|
kate17 |
3.10.2010, 9:09
Сообщение
#10
|
Новичок Группа: Продвинутые Сообщений: 7 Регистрация: 1.10.2010 Город: Самара Вы: студент |
эх...третья строка вообще не нужна. После do выполняется вся строка.
Ура) все верно) Спасибо большое вам. |
Vahappaday |
3.10.2010, 9:18
Сообщение
#11
|
Аспирант Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент |
На здоровьице))
|
Текстовая версия | Сейчас: 29.3.2024, 8:28 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru