OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 10 Июль, 2020 16:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 11 Октябрь, 2013 17:24 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Задача 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 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
bill писал(а):
Какой тип больше LONGINT?
Integers.Integer


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Октябрь, 2013 17:43 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Не смог решить задачку, цикл FOR TO DO не работает с типом Integers.Integer, наверное этот тип нада пребразовать в INTEGER, я описал переменную VAR s:Integers.Integer, хотел присвоить s:=1; но комилятор ругается .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Октябрь, 2013 18:01 
Модератор
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Октябрь, 2013 18:12 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Спасибо почти решил задачу только не могу вывести s:Integers.Integer , т.е переменная s не выводиться в StdLog.Int(s), необходимо преобразовать переменную s в обычный integer, либо в строку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Октябрь, 2013 18:25 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Integers.ConvertToString нада попробовать, сам нашел


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Октябрь, 2013 21:02 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Вот решение задачи, еше раз спасибо за подсказки.
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;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Октябрь, 2013 21:09 

Зарегистрирован: Четверг, 01 Август, 2013 16:39
Сообщения: 92
Откуда: Кыргызстан
Перешел на другую задачу, необходима такая функция как в лазарусе RealToInt и IntToReal, проблеммы с циклом FOR TO DO, она не работает с переменными Real, X^n, в КП результат X^n возврашается как Real, а мне необходимо найти функцию которая возврашалабы Integer


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Октябрь, 2013 22:35 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Есть ENTIER. Она отбрасывает дробную часть.
Код:
   PROCEDURE Do*;
      VAR  long : LONGINT; r : REAL;
   BEGIN
      r := 114.23432;
      long := ENTIER(r);
      Log.Real(r);
      Log.Int(long);
   END Do;


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB