Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.06.2010, 16:28   #1 (permalink)
Serjant0007
Member
 
Регистрация: 21.06.2010
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Несколько задач

Помогите пожалуйста решить мне хоть сколько нибудь задач, мне нужно до завтрашнего дня решить. Так если поможете то я точо успею.
1. Составить программу для вычисления числа с точностью до 0,000001 по формуле 1+1/1!+1/2!+1/3!+...1/n!
s:=0;
for i:=1 to n do
begin
f:=1;
for j:=1 to i do
f:=f/j;
s:=s+i*f;
end;
Writeln('полученное число= ',s:10:6);
Readln
End.

2. Начав тренировки спортсмен в первый день пробежал 10км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего лня. Какой суммарный путь пробежит спортсмен за 7 дней? В какой день впервые спортсмен пробежит более 20 км? В какой день впервые суммарный путь превысит 60 км? Ну вот на первый вопрос про 7 дней я знаю а вот остальные. Мои наработки добавтье решение на остальные вопросы.
program dddf;
uses crt;
var
den, i : Integer;
dlina, summa, prozent, a : Real;
begin
ClrScr;
dlina := 10;
summa := 0;
prozent := 10;
if den = 1 then
begin
WriteLn('Дистанция = ', 10.000:10:3,' м');
WriteLn('Суммарный пробег = ', 10.000:10:3,' м')
end
else
begin
for i := 1 to 7 do
begin
a := (dlina / 100) * prozent;
dlina := dlina + a;
summa := summa + dlina
end;
WriteLn('Дистанция =', dlina:10:3,' м');
WriteLn('Суммарный пробег =', (summa+10):10:3,' м')
end;
WriteLn;
ReadLn
end.

3. С помощью оператора Repeat напишите программу которая требует у вас пароль, например 111, и если пароль правильный то печатает сообщение "Молодец". Типа a:='vvedi parol'; Repeat a Until a=111???
4. Составьте программу вычисления степени числа a с натуральным показателем n. (Записать варианты программы с разными видами циклов while, repeat, for).
uses crt;

var
A, N, I : Integer;
Res : Extended;
BEGIN
clrscr;
write('Введите число A: ');
read(A);
write('Введите показатель степени N: ');
read(N);

Res := 1;

For I := 1 to N do
begin
Res := Res * A; {считаем степень}
end;

write(A,'^',N,' = ',Res : 3 : 1); {вывод результата}
readkey;
END.



uses crt;

var
A, N, I : Integer;
Res : Extended;
BEGIN
clrscr;
write('Введите число A: ');
read(A);
write('Введите показатель степени N: ');
read(N);

Res := 1;

while I < N do {пока I < N}
begin
Res := Res * A; {считаем степень}
Inc(I); {инкремент счётчика}
end;

write(A,'^',N,' = ',Res : 3 : 1); {вывод результата}
readkey;
END.



uses crt;

var
A, N, I : Integer;
Res : Extended;
BEGIN
clrscr;
write('Введите число A: ');
read(A);
write('Введите показатель степени N: ');
read(N);

Res := 1;

repeat {повторять}
begin
Res := Res * A; {считаем степень}
Inc(I); {инкремент счётчика}
end;
until I = N; {пока I не будет ровняться N}

write(A,'^',N,' = ',Res : 3 : 1); {вывод результата}
readkey;
END.

5. Составьте программу суммирующую штрафное время команд при игре в хоккей. Выводить на экран суммарное штрафное время обеих команд после любого его изменения. После окончания игры выдать итоговое сообщение. (Не знаю вообще как и что).
6.Каждая бактерия делится на две в течении одной минуты. В начальный момент времени имеется одна бактерия. Составьте программу, которая подсчитывает количество бактерий на заданное вами целочисленное значение момента времени.
s:=0;
for i:=1 to n do
begin
f:=1/2;
s:=s+1;
end;
Writeln('кол-во бактерий за ',n,'секунд составляет: ',s);
Readln
End.

7. Составьте программу получения в порядке убывания всех делителей данного числа.
for i:=n downto 1 do
if (n mod i) = 0 then writeln(i);
Остальную часть задачи не знаю как.

Последний раз редактировалось Serjant0007; 25.06.2010 в 17:05
Serjant0007 вне форума   Ответить с цитированием

Старый 25.06.2010, 16:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я думаю, что было бы очень полезно почитать аналогичные обсуждения

ACDSee, несколько вопросов
Помогите решить несколько задач
Несколько вопросов по усилителю

Старый 25.06.2010, 17:00   #2 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Цитата:
С помощью оператора Repeat напишите программу которая требует у вас пароль, например 111, и если пароль правильный то печатает сообщение "Молодец". Типа a:='vvedi parol'; Repeat a Until a=111???
Код:
const par=111; {исходный пароль}
var
par2:integer;
begin
repeat 
writeln ('введите пароль');
readln (par2);
until par=par2;
writeln ('Молодец');
readln
end.
Мне представляется это так. Опять же если не правильно поправьте меня.

Последний раз редактировалось shrek=); 25.06.2010 в 17:18
shrek=) вне форума   Ответить с цитированием
Старый 25.06.2010, 17:26   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Serjant0007 Посмотреть сообщение
Помогите пожалуйста решить мне хоть сколько нибудь задач, мне нужно до завтрашнего дня решить. Так если поможете то я точо успею.
1. Составить программу для вычисления числа с точностью до 0,000001 по формуле 1+1/1!+1/2!+1/3!+...1/n!
Код:
VAR
 a,S:REAL;
 i:BYTE;
BEGIN
 S:=1;
 i:=0;
 a:=1;
 Repeat
  Inc(i);
  a:=a/i;
  S:=S+a;
 Until a<0.000001;
 WriteLn(S:9:7);
 ReadLn;
END.
Цитата:
2. Начав тренировки спортсмен в первый день пробежал 10км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего лня. Какой суммарный путь пробежит спортсмен за 7 дней? В какой день впервые спортсмен пробежит более 20 км? В какой день впервые суммарный путь превысит 60 км?
Код:
VAR
 Day_dist, Sum_Dist:REAL;
 i:INTEGER;
BEGIN
 Sum_Dist:=10;
 Day_Dist:=10;
 For i:=2 to 7 do
  begin
   Day_Dist:=Day_Dist*1.1;
   Sum_Dist:=Sum_Dist+Day_Dist;
  end;
 WriteLn('The full distance after 7 days is ',Sum_Dist:7:3,' km');
 WriteLn;

 Sum_Dist:=10;
 Day_Dist:=10;
 i:=1;
 Repeat
   Inc(i);
   Day_Dist:=Day_Dist*1.1;
   Sum_Dist:=Sum_Dist+Day_Dist;
 Until Day_Dist>20;
 WriteLn('The day distance will exceed 20 km in ',i,'-th day');
 WriteLn;

 Sum_Dist:=10;
 Day_Dist:=10;
 i:=1;
 Repeat
   Inc(i);
   Day_Dist:=Day_Dist*1.1;
   Sum_Dist:=Sum_Dist+Day_Dist;
 Until Sum_Dist>60;
 WriteLn('The full distance will exceed 60 km in ',i,'-th day');
 WriteLn;

 ReadLn;
END.
Цитата:
3. С помощью оператора Repeat напишите программу которая требует у вас пароль, например 111, и если пароль правильный то печатает сообщение "Молодец".
Код:
VAR
 Password:STRING;
BEGIN
 Repeat
  WriteLn('Enter password:');
  ReadLn(Password);
 Until Password='111';
 Writeln('Good boy!');
 Readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.06.2010, 17:29   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от shrek=) Посмотреть сообщение
Мне представляется это так. Опять же если не правильно поправьте меня.
В принципе правильно, только мне представляется, что всё-же логичнее для пароля использовать строковую переменную.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.06.2010, 17:37   #5 (permalink)
Serjant0007
Member
 
Регистрация: 21.06.2010
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

эту вот ввобще не представляю как.
Составьте программу определения наибольшего общего делителя двух натуральных чисел. (Реализовать в виде программы следующий вариант алгоритма Эвклида нахождения наибольшего общего делителя двух натуральных чисел: пока числа не станут равными, большее заменяется на разность большего и меньшего чисел. Когда числа станут равными одному и тому же числу d, то вычисления прекращаются: d равно наибольшему общему делителю исходных чисел).
Serjant0007 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 25.06.2010, 17:42   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так... и сколько их еще будет вывалено? Вы не стесняйтесь, нам ведь заняться нечем, да и целая ночь впереди.
Что, дурачков-осликов нашли, умник Вы наш?
Vladimir_S вне форума   Ответить с цитированием
Старый 25.06.2010, 17:45   #7 (permalink)
Serjant0007
Member
 
Регистрация: 21.06.2010
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я же не прям решать вас полностью прошу свои наработки я выкладываю. А то скажите что я просто так ничего делать не хочу и спрашиваю.
Serjant0007 вне форума   Ответить с цитированием
Старый 25.06.2010, 21:50   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Serjant0007 Посмотреть сообщение
Я же не прям решать вас полностью прошу свои наработки я выкладываю. А то скажите что я просто так ничего делать не хочу и спрашиваю.
Хорошо. Только есть подозрение, что некоторые (если не все) из Ваших "наработок" - это что-то сляпанное кое-как наспех. А так программировать бессмысленно - компьютер ошибок не прощает.
Ну ладно, давайте разбираться с "наработками".

Задача 4. Тут всё более ли менее сносно, только несколько замечаний:
1. При вводе чисел A и N следует использовать не оператор read, а оператор readln. С read могут возникнуть проблемы. Да и ввод в таком варианте получается аккуратнее.
2. В вариантах программы 2 и 3 лучше в явном виде указать исходное значение переменной счетчика I (до или сразу после строки Res:=1), в данном случае I:=0; Полагаться на транслятор в этом плане не следует.
3. Оператор Repeat ... Until не требует внутри себя операторных скобок begin ... end, поскольку всё, что заключено между Repeat и Until, и есть тело оператора. Это не ошибка, но просто загромождать программу лишними значками не нужно.

Задача 5.
К сожалению, в хоккее (равно как и в футболе) ничего не понимаю, а потому тоже не знаю, что и как.

Задача 6. Извините, но Ваша т.н. "наработка" - это просто бездумный, сляпанный по принципу "шаляй-валяй" набор каких-то символов. Что такое f? Вы что же, и вправду полагаете, что удвоение количества бактерий равнозначно прибавлению к этому количеству единицы? В общем, должно быть что-то в таком роде:
Код:
VAR
 s:LongInt;
 i,n:Integer;
BEGIN
 s:=1;
 for i:=1 to n do
  s:=s*2;
 Writeln('кол-во бактерий за ',n,' секунд составляет: ',s);
 Readln
End.
Задача 7. А никакой "остальной части" и не надо - всё правильно. Осталось только дооформить: создать раздел описания переменных да останов в конце приделать.

Задача 8. В принципе, в условии задачи алгоритм расписан, так что остается только его формализовать. Например, так:
Код:
VAR
 a,b:INTEGER;
BEGIN
 Write('a= ');
 ReadLn(a);
 Write('b= ');
 ReadLn(b);
 Repeat
  If a>b then a:=a-b
  else
  If b>a then b:=b-a;
 Until a=b;
 Writeln('d= ',a);
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.06.2010, 22:43   #9 (permalink)
Serjant0007
Member
 
Регистрация: 21.06.2010
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо ОГРОМНОЕ!!!!!!!!!!!! Особенно за объяснение)))
Serjant0007 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:17.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.