• Написать программы на паскале:
    1)Дана последовательность чисел а1,а2,а3,....,а25.Указать наименьшую длину числовой оси,содержащую все эти числа(я так понял,что надо найти разницу между максимальным числом и минимальным);
    2)Дано натуральное число N.Вычислить: S=1+1/2+1/4+1/8+1/16+...1/(2^N);
    3)Дано натуральное число.Поменять порядок следования цифр в этом числе на обратный или сообщить,что это невозможно в силу переполнения.

Ответы 5

  • спасибо большое
    • Автор:

      todd39
    • 6 лет назад
    • 0
  • только можете пояснить во второй задаче после do почему res* а не двоеточие
    • Автор:

      blondie20
    • 6 лет назад
    • 0
  • *= и := - это два разных оператора. Второй присваивает переменной слева значение выражения справа, при этом то, что было, не играет никакой роли, а второй умножает то, что было на выражение справа.
  • То есть res*=0.5 и res:=res*0.5 - это одно и то же. То же самое касается операторов +=, -=, /=
  • 1) Все правильно, это и будет разность между максимумом и минимумомprogram one;var input,max,min:integer;    i:integer;begin  readln(input);  max:=input;  min:=input;  for i:=2 to 25 do begin    readln(input);    if input>max then max:=input;    if input<min then min:=input;  end;  writeln(max-min);end.2) Гораздо проще не суммировать в цикле степени половины, а воспользоваться тем, что 1+\frac12+...+\frac1{2^n}=2-\frac1{2^n}.program two;var res:real;    i,n:integer;begin  readln(n);  res:=0.5;  for i:=2 to n do res*=0.5;  res:=2-res;  writeln(res);end.3) Здесь существует несколько способов реализации; в частности, можно было просто считать число как строку и возвратить ее в перевернутом виде (ReverseString(s)), не заботясь о переполнении, однако я решил, что по логике задания нужно делать через числа. Впрочем, для выявления случаев переполнения все равно используется переворот строкиprogram three;var a,b:int64; {можно использовать uint64, если в вашей среде Паскаля  этот тип поддерживается, тогда число в строке ниже надо заменить}begin  readln(a);  if ReverseString(IntToStr(a))>'9223372036854775807' then writeln('Слишком много') else begin    while a>0 do begin      b:=10*b+a mod 10;      a:=a div 10;    end;    writeln(b);  end;end.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years