Страница 1 из 1

Нужна помощь, срочно, буду очень благодарен.

Добавлено: 23 дек 2009, 21:14
Jeiden
Помогите пожалуйста сделать вот это задание

Даны натуральные числа a и d. Вычислить частное q и остаток r при делении a на d, не используя операций div и mod. Предусмотреть вы-вод результатов для k-значений a и m-значений d. Построить график по введенным значениям a и d.

Вот эту часть я понял как делать - Даны натуральные числа a и d. Вычислить частное q и остаток r при делении a на d, не используя операций div и mod.

А вот с этим мне непонятно - Предусмотреть вывод результатов для k-значений a и m-значений d.

А вот эту часть я вообще не знаю как делать - Построить график по введенным значениям a и d.

Если можете, напишите решение задачи целиком, ну или хотя бы подскажите как делать то, что я не понял.
Заранее очень благодарен.

Re: Нужна помощь, срочно, буду очень благодарен.

Добавлено: 24 дек 2009, 09:21
Хыиуду
q=trunc(a/d); r=a-q*d;
В циклах k раз задается значение а (запрашивается или генерируется случайным образом) и m раз - значение d. Подсчитывается частное и остаток, выводится на экран.
График по известным точкам - процедурой putPixel. А вообще построение графика здесь ни к селу ни к городу.

Re: Нужна помощь, срочно, буду очень благодарен.

Добавлено: 28 дек 2009, 22:14
Jeiden
А не могли бы вы, если вас это не сильно затруднит, расписать программу, не принимая во внимание построение графика.
Я тут прогу написал, но она не работает, ну как, работает, но не так как надо(
program one;
var
i,k,m,j,l,q,c,r:integer;
a:array[1..100] of integer;
d:array[1..100] of integer;
begin
writeln('vvedite kolichestvo delimih k=');
readln(k);
writeln('vvedite kolichestvo deliteley m=');
read(m);
for i:=1 to k do
begin
a:=random(100);
end;
for j:=1 to m do
begin
d[j]:=random(10);
end;
for i:=1 to k do
begin
for j:=1 to m do
begin
l:=a;
c:=0;
while l>=d[j] do
begin
c:=c+1;
l:=l-d[j];
end;
l:=r;
q:=c;
end;
writeln('r=',' ');
writeln('q=',' ');
end;
end.

Re: Нужна помощь, срочно, буду очень благодарен.

Добавлено: 29 дек 2009, 09:43
Хыиуду
Jeiden писал(а): for i:=1 to k do
begin
a:=random(100);
end;
for j:=1 to m do
begin
d[j]:=random(10);
end;

Оба бегина и оба энда не нужны.
l:=a;
c:=0;
while l>=d[j] do
begin
c:=c+1;
l:=l-d[j];
end;
l:=r;
q:=c;
Вместо этого всего поставить приведенный мной код.
writeln('r=',' ');
writeln('q=',' ');
Ну и смысл выводить пустую строку вместо r и q? Надо
writeln('r=',r');
writeln('q=',q);
И эти два оператора вывода надо запихнуть во внутренний цикл. И неплохо бы вообще вывести, на каких а и d это происходит.
Короче, вложенные циклы будут выглядеть так
for i:=1 to k do
for j:=1 to m do
begin
q=trunc(a/d[j]); r=a-q*d[j];
writeln('a=',a,', d=',d[j],', r=',r,', q=',q);
end;