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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Лучшие эксперты данной рассылки

lamed
Статус: Академик
Рейтинг: 5186
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Академик
Рейтинг: 5148
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2670
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1180
Дата выхода:25.05.2011, 16:00
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:175 / 175
Вопросов / ответов:1 / 1

Вопрос № 183261: Уважаемые эксперты! Помогите мне решить 2 задачи, но они должны быть решены так как решил мне lamed (Академик) в предыдущей теме! Вот задачти: 1) Вот здесь задача (фотография)


Вопрос № 183261:

Уважаемые эксперты!
Помогите мне решить 2 задачи, но они должны быть решены так как решил мне lamed (Академик) в предыдущей теме!
Вот задачти:
1) Вот здесь задача (фотография)
2) Дано натуральное число N. Получить новое число M, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры в записи числа N. Пример.N=128452, m= 128458

Отправлен: 20.05.2011, 15:41
Вопрос задал: Посетитель - 372181 (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает lamed (Академик) :
Здравствуйте, Посетитель - 372181!

Задание 1.
1. Постановка задачи. Даны числовой ряд и некоторое число eps. Найти наименьший номер члена последовательности, для которого выполняется условие M.
Вывести на экран этот номер и все элементы a[i], где i=1,2,…,n.
a[n]=(-1)n*2n/n!, M:|an|<eps
Входные данные: вещественное число eps типа real; выходные данные: натуральное число N типа integer; ограничения: eps>0.

2. Формализация.
Первый элемент последовательности вычисляется по формуле a1=-2
Каждый последующий – по формуле an=-an-1*2/n, где n – номер члена
Условие окончания цикла |an|<eps

3. Блок-схема


4.Программа
Код :
{ Даны чис
 ловой ряд и некоторое число eps. Найти наименьший номер члена 
последовательности, для которого выполняется условие M. 
Вывести на экран этот номер и все элементы a[i], где i=1,2,…,n.
A[n]=(-1)^n*s^n/n!, M:|a[n]|<eps 
Pascal-ABC, lamed, RFPRO, 20.5.2011}
var
  n: integer;
  x,y: longint;
  a,eps: real;
begin
  readln(eps);
  n:=1;
  a:=-2;
  while abs(a)>=eps do
    begin
      writeln('a[',n,']=',a:0:4);
      inc(n);
      a:=-a*2/n;
    end;
  writeln('n=',n);
  writeln('a[',n,']=',a:0:4);
end.


Задание 2.
1. Постановка задачи. Требуется найти натуральное число M, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры в записи числа N. Входные данные: натуральное число N типа integer; выходные данные: натуральное число N типа integer. Ограничения: 0<N<MaxInt-MaxInt mod 10, 0<M<MaxInt.

2. Формализация.
Вспомогательное число tmp состоит из двух частей: левой части и остатка (последней цифры.
Последняя цифра c = tmp mod 10;
tmp = tmp div 10;
Эта операция продолжается, пока tmp > 0.
Максимальная цифра получается при последовательном сравнении с текущей максимальной цифрой max.
Если c> max, то max=c
M=N-c+max;

3. Блок-схема


4.Программа
Код :
{ 2) Дано натуральное число N. Получить новое число M, которое образуется из числа
N путем замены последней цифры на значение наибольшей цифры в записи числа N.
Пример.N=128452, m= 128458 }
{ Pascal-ABC, RFPRO, 20.05.2011 }
var
  n, m, tmp: integer;
  c, max: integer;
begin
  readln(n);
  tmp:= n; { текущая левая часть числа до отбрасывания последней цифры }
  max:= 0; { максимальная цифра }
  while tmp > 0 do
    begin
      c:= tmp mod 10; { последняя цифра }
      if c>max then
        max:= c;
      tmp := tmp div 10; { отбрасывание разряда единиц }
    end;
  if max = n mod 10 then
    m:= n
  else
    m:= n-n mod 10 + max;

  writeln(m);
end.

Удачи!

Ответ отправил: lamed (Академик)
Ответ отправлен: 20.05.2011, 22:00
Номер ответа: 267276
Россия, Ковров
Тел.: +79107793141

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267276 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


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

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное