OberonCore
https://forum.oberoncore.ru/

Перемножить двузначные числа больше 87
https://forum.oberoncore.ru/viewtopic.php?f=35&t=4539
Страница 1 из 1

Автор:  bill [ Пятница, 11 Октябрь, 2013 17:24 ]
Заголовок сообщения:  Перемножить двузначные числа больше 87

Задача 13.
Вычислить произведение всех двузначных натуральных чисел больше 87.
Вот исходник моей прграммы вроде бы правильно все сделал, наверное не хватает типа LONGINT, Какой тип больше LONGINT?
Отмечу цикл FOR TO DO работает только с типом INTEGER.

Код:
PROCEDURE start*;
VAR  i: LONGINT; s:LONGINT; n:LONGINT;
BEGIN
   s:=1;
   FOR i:=88 TO 99 DO
   s:=s*i;
   L.Int(i);
   L.String("_");
   L.Int(s);
   END
END start;

Автор:  Евгений Темиргалеев [ Пятница, 11 Октябрь, 2013 17:28 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

bill писал(а):
Какой тип больше LONGINT?
Integers.Integer

Автор:  bill [ Пятница, 11 Октябрь, 2013 17:43 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Не смог решить задачку, цикл FOR TO DO не работает с типом Integers.Integer, наверное этот тип нада пребразовать в INTEGER, я описал переменную VAR s:Integers.Integer, хотел присвоить s:=1; но комилятор ругается .

Автор:  Евгений Темиргалеев [ Пятница, 11 Октябрь, 2013 18:01 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Наоборот, нужно INTEGER преобразовывать в него. Тип библиотечный и работать с ним как со встроенными нельзя; нужно через процедуры модуля Integers:
Код:
s := Integers.Long(1); (* s := 1 *)
s := Integers.Sum(s, Integers.Long(10)); (* s := s + 10 *)

Автор:  bill [ Суббота, 12 Октябрь, 2013 18:12 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Спасибо почти решил задачу только не могу вывести s:Integers.Integer , т.е переменная s не выводиться в StdLog.Int(s), необходимо преобразовать переменную s в обычный integer, либо в строку.

Автор:  bill [ Суббота, 12 Октябрь, 2013 18:25 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Integers.ConvertToString нада попробовать, сам нашел

Автор:  bill [ Суббота, 12 Октябрь, 2013 21:02 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Вот решение задачи, еше раз спасибо за подсказки.
PROCEDURE start*;
VAR i: INTEGER; s:Integers.Integer; n:LONGINT;
c: ARRAY 64 OF CHAR;
BEGIN
s := Integers.Long(1);
FOR i:=88 TO 99 DO
s:=Integers.Product(s,Integers.Long(i));
L.Int(i);
L.String("_");
Integers.ConvertToString(s,c);
L.String(c);
END
END start;

Автор:  bill [ Суббота, 12 Октябрь, 2013 21:09 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Перешел на другую задачу, необходима такая функция как в лазарусе RealToInt и IntToReal, проблеммы с циклом FOR TO DO, она не работает с переменными Real, X^n, в КП результат X^n возврашается как Real, а мне необходимо найти функцию которая возврашалабы Integer

Автор:  Valery Solovey [ Воскресенье, 13 Октябрь, 2013 22:35 ]
Заголовок сообщения:  Re: Перемножить двузначные числа больше 87

Есть ENTIER. Она отбрасывает дробную часть.
Код:
   PROCEDURE Do*;
      VAR  long : LONGINT; r : REAL;
   BEGIN
      r := 114.23432;
      long := ENTIER(r);
      Log.Real(r);
      Log.Int(long);
   END Do;

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/