Задача ** паскале. Пожалуйста, пишите всю! В первый час работы рабочий изготавливает а...

0 голосов
67 просмотров

Задача на паскале. Пожалуйста, пишите всю!

В первый час работы рабочий изготавливает а деталей, за каждый последующий час - на d деталей больше, чем за предыдущий. Разработайте программу, которая подсчитает, сколько деталей изготовил рабочий за k часов работы.


Информатика (101 баллов) | 67 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Const
  A = 10;
  d = 2;
Var k : integer;
Function Detali(dd,kk : Integer) : Integer;
Begin
  If kk>0 then Detali:=dd+Detali(dd+d,kk-1) else Detali:=0;
end;

Begin
  Readln(k);
  Writeln(Detali(A,k));
end.

(5.1k баллов)
0

Плюс по условию нужно переменные, ведь даны-то буквы = переменная

0

ну тогда ждём "оратора выше", пока он исправит свой код.

0

Вот в этом вся загвоздка. Нужно решать так, как предложил оратор выше, но вот составление формул - не мой конек.

0

только боюсь препод будет придираться не типу данных, а к реализации кода через рекурсию... )

0

Var A,d,k : integer;
Function Detali(dd,kk : Integer) : Integer;
Begin
If kk>0 then Detali:=dd+Detali(dd+d,kk-1) else Detali:=0;
end;

Begin
Readln(A,d,k);
Writeln(Detali(A,k));
end.

0

)) ну хорошо, сейчас изменю

0

ну, учитывая склад ума нашего учителя, оно указывается автоматом в голове :D

0

с чего Вы так решили? а как тогда должны указываться константы?

0

Ага, тут константы не нужны.
Я один раз самостоятельно на контрольной написал программу с константами - мне поставили 2 со словами "Явно списывал"

0

var a,k,i,d,m:integer; {m - запоминает значение a для конечной прибавки..}
begin
Writeln('За первый час - ');
Readln(a);
Writeln('За каждый последующий - ');
Readln(d);
Writeln('Сколько часов работал рабочий?');
Readln(k);
m:=a;
for i:=1 to k-1 do
begin
m:=m+d;
a:=a+m;
end;
Writeln('Рабочий изготовил ',a,' деталей')

0 голосов

Var a,k,i,d,m:integer; {m - запоминает значение a для конечной прибавки..}
begin 
Writeln('За первый час - '); 
Readln(a); 
Writeln('За каждый последующий - '); 
Readln(d); 
Writeln('Сколько часов работал рабочий?'); 
Readln(k); 
k:=k-1; 
m:=a; 
for i:=1 to k do   
a:=a+d; 
Writeln('Рабочий изготовил ',a+m,' деталей')
End.

(314 баллов)
0

ошибочка, за 3 часа цикл повторяется 2 раза, а уже в конце к значению полученному прибавляется изначальное значение(которое было за первый час, я ввел ещё 1 переменную за сохранение этого результата - m)

0

А я так думаю, возьмем пример: a=10, d =2 - по товему коду результат 24 детали, а на самом деле: 1 час - 10 деталей, 2 час - 10+2, 3 час - 12+2, итого 10+12+14 = 36 деталей

0

Надеюсь модераторы смогут перенести код в "ответы"

0

оно самое =(

0

var a,k,i,d,m:integer; {m - запоминает значение a для конечной прибавки..}
begin
Writeln('За первый час - ');
Readln(a);
Writeln('За каждый последующий - ');
Readln(d);
Writeln('Сколько часов работал рабочий?');
Readln(k);
m:=a;
for i:=1 to k-1 do
begin
m:=m+d;
a:=a+m;
end;
Writeln('Рабочий изготовил ',a,' деталей')
End.

0

Фильм случаем не "Вспомнить все"?

0

подожди, уже забыл =(

0

Ну тогда давай, "жги" :D

0

я смотрел фильм и посреди фильма стукнула в голову в чем ошибка..

0

В коде где-то ошибка. При a = 5 , d = 1 и k = 4 результат должен быть 26, программа выдает 13.
Весь день уже тоже голову ломаю