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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2013, 20:08   #1
temnot
Пользователь
 
Регистрация: 23.09.2013
Сообщений: 13
По умолчанию Помогите найти ошибки

В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров.

Программа получает на вход действительные числа x и y и должна вывести одно натуральное число.

В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров.

Программа получает на вход действительные числа x и y и должна вывести одно натуральное число.

Код:
 var a,x,y,z,s:integer;
 begin
 readln(x,y);
 z:=x/10;
 s:=0;
 a:=0;
 while s<x do
 begin
 x:=x+z;
 a:=a+1;
 end;
writeln(a);
readln;
end.
Цитата:
vasya.pas(6,6) Error: Incompatible types: got "Extended" expected "SmallInt"
vasya.pas(14,4) Fatal: There were 1 errors compiling module, stopping
vasya.pas(0) Fatal: Compilation aborted

Последний раз редактировалось Stilet; 05.10.2013 в 11:50.
temnot вне форума Ответить с цитированием
Старый 04.10.2013, 20:14   #2
temnot
Пользователь
 
Регистрация: 23.09.2013
Сообщений: 13
По умолчанию

так, с переменными накосячил это я нашел, а вот чем ему деление не нравится я не могу понять
temnot вне форума Ответить с цитированием
Старый 04.10.2013, 20:24   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от temnot Посмотреть сообщение
...а вот чем ему деление не нравится я не могу понять
Потому что в Паскале операция деления "/" всегда возвращает с плавающей запятой ( действительное число ). Даже если 2/1, все равно.

Так что делайте ... z:Double;
И потом x+z; тоже будет действительное. И т. д.

Если надо, используйте функции округления.
type_Oleg вне форума Ответить с цитированием
Старый 04.10.2013, 20:41   #4
temnot
Пользователь
 
Регистрация: 23.09.2013
Сообщений: 13
По умолчанию

Спасибо большое!
temnot вне форума Ответить с цитированием
Старый 04.10.2013, 21:31   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Не все так просто.
1. И почему принято решение о таком типе данных?
Очевидно, что километры могут быть с метрами. Более того, при начислении процентов опят полезут дроби (вещественные числа)
Так что измените тип на real, например.

Предложенный код совсем никуда.
Что значит этот цикл?
Код:
while s<x do
begin
x:=x+z;
a:=a+1;
end;
Поскольку s = 0, а x > 0, цикл не работает.
Да и что он должен считать?

Так понимаю, что это задача на проценты: взял кредит под процент и надо вычислить ...
В нашем случае алгоритм вычисления может быть следующим:
Поскольку: y = x*(1+k)^n,
где y - пробежал в некоторый день; x - пробежал в первый день; k - процент n - номер дня,
то можем записать:
y/x= (1+k)^n, и логарифмируя имеем: n = ln(y/x)/ln(1+k);
Так что решение не требует циклов:
1. Получаем, на входе, значения для x и y
2. Вычисляем, по формуле, номер дня:
Код:
n := round(ln(y/x)/ln(1+k));

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибки Adex Общие вопросы C/C++ 8 21.10.2009 19:32
помогите найти ошибки, Курсач горит 4ernobil Помощь студентам 0 12.05.2009 19:42
Помогите найти ошибки Qwoort Общие вопросы C/C++ 1 26.04.2009 12:50
С++.Задача на строки.Помогите найти ошибки NamelessEndless Помощь студентам 7 26.05.2008 23:42
помогите найти причину ошибки! НиКС БД в Delphi 3 10.05.2007 15:55