Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 639
от 21.04.2008, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 45
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 132311: Здравствуйте, уважаемые эксперты! Сегодня две задачки. Необходимо циклически сдвинуть элементы массива влево на k позиций. Число k задаётся после числовой последовательности. 7 1 2 3 4 5 6 7 3 4 5 6 7 1 2 3 Решите предыдущ...
Вопрос № 132321: Уважаемые эксперты!!!Помогите Написать в Турбо Паскале нахождение производной функции (e^-2x)-2x+1=0 Если можно скажите как задать интервал [a,b] в программе. Cпасибо!!...

Вопрос № 132.311
Здравствуйте, уважаемые эксперты!
Сегодня две задачки.
Необходимо циклически сдвинуть элементы массива влево на k позиций. Число k задаётся после числовой последовательности.
7
1 2 3 4 5 6 7
3
4 5 6 7 1 2 3
Решите предыдущую задачу так, чтобы общее количество парных обменов элементов не превосходило n.
9
2 7 2 9 8 3 4 1 7
6
4 1 7 2 7 2 9 8 3
Обе задачи я решил, но во второй у меня есть ошибка. Подскажите мне её пожалуйста. Код в приложении.

Приложение:

Отправлен: 15.04.2008, 13:43
Вопрос задал: Хощенко Артём Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Denisss

Здравствуйте, Хощенко Артём Владимирович!


For i := 1 To n Do
Begin
  If
((n Mod i = 0) And (k Mod i = 0)) Then
  Begin

    gcd := i;
  End;
End;


1) Не ясно чего Вы хотите получить в результате (по сути, код ищет наибольший общий делитель).
2) Нет гарантии, что в результате такого перебора переменной gcd будет присвоено какое-либо значение. Например, если k и n - разные простые числа, переменной gcd не будет присвоено никакого значения.


For i := 1 To gcd Do
  Begin
    While
(t1 <= gcd) Do
    Begin

      t2 := x[t1];
      x[t1] := x[t1+gcd];
      x[t1+gcd] := t2;
      Inc(t1);
    End;
End;


1) Учитывая, что gcd может оказаться неопределенной, то этот код уже сам по себе ошибка.
2) Цикл for совершенно здесь не нужен.
3) В результате такого "сдвига" Вы сможете только в единственном варианте сдвинуть весь массив - только если gcd = n / 2. Иначе Вы сдвигаете только часть массива, а оставшуюся часть оставляете нетронутой.

Т.е. в результате, Ваш код будет работать верно только при n = 1, либо при соответствующем заполнении массива будет создаваться ощущение, будто все перемещено верно.

Предлагаю Вам свой вариант решения второй задачи (см. в приложении), который является модификацией Вашего кода (возможно он не самый оптимальный, но вполне удовлетворяет поставленному условию).

Успехов!

Приложение:

---------
Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
ICQ: 281599577
----
Ответ отправлен: 16.04.2008, 20:07
Оценка за ответ: 3


Вопрос № 132.321
Уважаемые эксперты!!!Помогите Написать в Турбо Паскале нахождение производной функции (e^-2x)-2x+1=0
Если можно скажите как задать интервал [a,b] в программе.
Cпасибо!!
Отправлен: 16.04.2008, 04:37
Вопрос задал: Хмелев Андрей Борисович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Delph
Здравствуйте, Хмелев Андрей Борисович!

Классическое определение производной - разность значений функции на концах малого отрезка, делёная на длину отрезка (df(x) / dx). В приложении пример того, как можно решить Вашу задачу. В начале определяется функция, потом - расчёт производной от неё (Diff(x)). Константа Diff_Delta задаёт длину отрезка, по которому рассчитывается производная. В программе вводятся с клавиатуры концы интервала [a,b] и шаг изменения переменной x.

Приложение:

---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.

Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 16.04.2008, 09:26
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное !!!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное