Консультация № 181915
17.01.2011, 14:03
54.31 руб.
0 12 1
Здравствуйте! У меня возникли сложности с таким вопросом: в решение задачи на языке программирования паскаль.
Даны вещественные массивы А(m) и B(m). Решить все уравнения A(j)*X(j) = B(j). Ответ вывести в таблицу из 3-х колонок: A(j), B(j), X(j).

Обсуждение

Неизвестный
17.01.2011, 14:37
общий
17.01.2011, 15:22
это ответ
Здравствуйте, кирюша!
Вот решение вашей задачи.
Я организовал ручной счет, но если хотите то можно придумать генератор для вашей задачи.
Код:
program p181915;
const m=10; {размерность массивов}
var a,b,x:array [1..m] of real;
j:byte;
begin
for j:=1 to m do {В этом цикле вводим а[j] и b[j] и вычисляем x[j]}
begin
write('a[',j,']:=');
readln(a[j]);
while a[j]=0 do
begin
writeln('Ошибка!!! Вы ввели 0. Введите другое число отличное от 0');
write('a[',j,']:=');
readln(a[j]);
end;
write('b[',j,']:=');
readln(b[j]);
x[j]:=b[j]/a[j];
end;
writeln;
write('a[j] b[j] x[j]');
writeln;
for j:=1 to m do {Формируем таблицу значений массивов}
begin
write(a[j]:2:2,' ',b[j]:2:2,' ',x[j]:2:2);
writeln;
end;
readln;
end.

Удачи в разборе! Если будут какие дополнения то пишите!
5
Неизвестный
17.01.2011, 14:47
общий
Поправьте, пожалуйста, программу для обработки ситуации с делением на 0.
Неизвестный
17.01.2011, 14:57
общий
Вот...извиняюсь конечно...модераторы внесите изменения:
Код:
program p181915;
const m=10; {размерность массивов}
var a,b,x:array [1..m] of real;
j:byte;
begin
for j:=1 to m do {В этом цикле вводим а[j] и b[j] и вычисляем x[j]}
begin
write('a[',j,']:=');
readln(a[j]);
if a[j]=0 then
begin
while a[j]=0 do
begin
writeln('Ошибка!!! Вы ввели 0. Введите другое число отличное от 0');
write('a[',j,']:=');
readln(a[j]);
end;
end;
write('b[',j,']:=');
readln(b[j]);
x[j]:=b[j]/a[j];
end;
writeln;
write('a[j] b[j] x[j]');
writeln;
for j:=1 to m do {Формируем таблицу значений массивов}
begin
write(a[j]:2:2,' ',b[j]:2:2,' ',x[j]:2:2);
writeln;
end;
readln;
end.
давно
Старший Модератор
31795
6196
17.01.2011, 15:13
общий
Код:
  if a[j]=0 then
begin
while a[j]=0 do
begin
writeln('Ошибка!!! Вы ввели 0. Введите другое число отличное от 0');
write('a[',j,']:=');
readln(a[j]);
end;
end;

Тут, одно условие лишнее.

Зачем проверять if a[ j ]=0, если в цикле Вы его ещё раз проверяете?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
17.01.2011, 15:15
общий
Адресаты:
Я таким способом вхожу в зацикливание.... а вдруг пользователю взбредет ввести еще раз 0? а мой цикл позволяет застраховаться от этого
Неизвестный
17.01.2011, 15:16
общий
Хоть 500 раз пусть вводит 0....программа не позволит) и я считаю что условие не лишнее)
Неизвестный
17.01.2011, 15:17
общий
Хотя вы правы...можно и сократить немного код....но я думаю что условие явно демонстрирует) мне например(будучи первокурсником) было бы понятнее так...
Неизвестный
17.01.2011, 15:19
общий
Код:
program p181915;
const m=10; {размерность массивов}
var a,b,x:array [1..m] of real;
j:byte;
begin
for j:=1 to m do {В этом цикле вводим а[j] и b[j] и вычисляем x[j]}
begin
write('a[',j,']:=');
readln(a[j]);
while a[j]=0 do
begin
writeln('Ошибка!!! Вы ввели 0. Введите другое число отличное от 0');
write('a[',j,']:=');
readln(a[j]);
end;
write('b[',j,']:=');
readln(b[j]);
x[j]:=b[j]/a[j];
end;
writeln;
write('a[j] b[j] x[j]');
writeln;
for j:=1 to m do {Формируем таблицу значений массивов}
begin
write(a[j]:2:2,' ',b[j]:2:2,' ',x[j]:2:2);
writeln;
end;
readln;
end.

Вот чуть сокращеннее
давно
Старший Модератор
31795
6196
17.01.2011, 15:20
общий
Цитата: 324791
Я таким способом вхожу в зацикливание.

Согласен, но это цикл с предусловием, может выполнится от нуля до бесконечности раз, до тех пор, пока выполняется условие цикла: А=0.

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
17.01.2011, 15:23
общий
Адресаты:
Да. В общем сколько людей столько и будет способов решения задачи. Остановимся на чем нибудь уже)
давно
Старший Модератор
31795
6196
17.01.2011, 15:26
общий
Дополнил Ваш ответ.

Цитата: 324791
В общем сколько людей столько и будет способов решения задачи.


Мне больше нравятся поверки условий ввода с помощью repeat until
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
17.01.2011, 15:58
общий
всё отлично спасибо
Форма ответа