Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2015, 12:48   #1
daled
Новичок
Джуниор
 
Регистрация: 15.09.2015
Сообщений: 1
Лампочка Задача по Паскалю

Уважаемые господа! Помогите советом
В вещественной переменной Y записано некоторое неотрицательное число, не превосходящее 30000. Запишите в переменную S сумму первых после десятичной точки трех цифр числа Y. Можно использовать дополнительные переменные любых типов.
daled вне форума Ответить с цитированием
Старый 15.09.2015, 12:58   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
float Y = 0.123f;
int S = 0;
for(int i = 0; i < 3; i++){ // 3 цифры берём
  Y *= 10; // сдвиг вправо чисел т, е. 0.123 => 01.23
  S += floor(Y) \ 10; // берём остаток от деления на 10 т. е. 01.23 => 1
}
:D Паскаль.............. мин 10, напишу вариант на Паскале, а то на автомате С++ влепил

Последний раз редактировалось GreenWizard; 15.09.2015 в 13:05.
GreenWizard вне форума Ответить с цитированием
Старый 15.09.2015, 13:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

одной строкой:
Код:
S := ((y*10) mod 10) + ((y*100) mod 10) + ((y*1000) mod 10);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2015, 13:26   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
одной строкой:
Код:
S := ((y*10) mod 10) + ((y*100) mod 10) + ((y*1000) mod 10);
Хорошая попытка, но гибкости 0 (а вдруг захотят сумму 8 чисел?) + y же не целое число, не скомпилируется даже)

Код:
var
  Y: Double;
  S, i: Integer;
begin
  Write('Y = ');
  Readln(Y);

  S := 0;
  for i := 1 to 3 do
    begin
      Y := Y * 10;
      S := S + (Floor(Y) mod 10);
    end;

  Writeln('S = ', S);
  Readln;
end.
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по паскалю Veryn4ik1993 Паскаль, Turbo Pascal, PascalABC.NET 2 12.09.2012 23:32
Задача по паскалю DarknooB Помощь студентам 2 16.12.2010 22:35
задача по Паскалю))) Лилля Помощь студентам 2 25.09.2010 17:56
Задача по паскалю dante92 Помощь студентам 1 07.12.2009 19:07
Задача по Паскалю. spankyham Помощь студентам 3 31.03.2009 23:34