Помогите с задачами на Паскале!

Ответить
*Лео*
Сообщения: 1
Зарегистрирован: 05 дек 2006, 06:50

Из 4 задач решила только 2, пожалуйста помогите с оставшимися!
1 задача.
Программа определяфет через сколько лет население увеличится в N-раз, если начальное количество = x и каждый год оно увеличивается на 1/4.
2 задача.
Дана строка заканчивающаяся точкой, программа должна считать количество слов в строчке.

Пожалуйста помогите! В Паскеле совсем не шарю...
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

насколько я помню этот код должен сработать

Var
s: String;
Letter: Char;
Flag: Boolean;
i, Number: Integer;
begin
Number:=0; // Обнуление Данных
Flag:=True;
Readln(Text)//Чтение Текста
For i:=1 to Length(Text) Do //Цикл По-Буквенно
Begin
Letter:=Text; //Раcсматриваем i-тый символ текста
If letter='.' then
If (Letter<>' ') and Flag Then Number:=Number+1;
//Если текущий символ не равен <пробелу> и Flag=1
//то увеличивай количество Слов
Flag:=(Letter=' ');
End;
Label2.Caption:=FloatToStr(Number);
end;
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Первая - так:
var sx,x:real; count:integer;
const N=10;
begin
sx:=x;
count:=0;
while sx<x*N do
begin
inc(count);
sx:=sx*1.25;
end;
end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Хыиуду писал(а):Первая - так:
var sx,x:real; count:integer;
const N=10;
begin
sx:=x;
count:=0;
while sx<x*N do
begin
inc(count);
sx:=sx*1.25;
end;
end.
X не проинициализировано.
Вообще, поскольку нам важно отношение дыух величин (численности населения), а не абсолютные величины, то X можно просто заменить на 1.

Вообще, можно без циклов.
Понятно, что численность населения через N лет (при начальной численности A и возрастании каждый год в 1.25 раза) будет равна:
A * 1,25^^N

То есть, население возрастет в n раз:
n = 1,25^^N

n по условию задачи нам задано (n = 10)
Логарифмируем, чтобы получить N:
ln (n) = N * ln (1,25)
N = ln (n) / ln (1,25)

То есть, вся задача сводится к вычислению одного алгебраического выражения :)

При n=10 получаем:
N = ln (10) / ln (1,25) = N = 10.318851158
То есть, через 11 полных лет.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Думаю, стояла задача найти N алгоритмически, а не алгебраически. Хотя тоже неплохо.
Этот кусок программы родился у меня в мозгу быстрее, чем я вспомнил, как решить такую задачу через логарифмы.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить