IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Паскаль, циклические алгоритмы
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
Город: Липецк
Учебное заведение: ЛГТУ
Вы: студент



На здоровьице))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 29.3.2024, 8:28

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru