Автор Тема: Помогите, пожалуйста, изменить программу. Pascal.  (Прочитано 3455 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Donya

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Задача не сложная. Написала программу, но там явно используется не разумно огромное количество сравнений. Если можно как-то по-другому её написать, дайте, пожалуйста, совет как.

Даны три числа A,B,C. Определить, какое из них равно D. Если ни одно не равно D, найти MAX(D-A, D-B, D-C).

program zadacha2;
var A,B,C,D,a1,b1,c1,max: integer;
begin
writeln('vvedite znachenie D');
readln(D);
writeln('vvedite znacheniya A,B,C');
readln(A,B,C);
if (A=D) and (B=D) and (C=D) then
begin
writeln('A,B,C');
readln;
end;
if (A=D) and (B=D) and (C<>D) then
begin
writeln('A,B');
readln;
end;
if (B=D) and (C=D) and (A<>D) then
begin
writeln('B,C');
readln;
end;
if (A=D) and (C=D) and (B<>D) then
begin
writeln('A,C');
readln;
end;
if (A=D) and (B<>D) and (C<>D) then
begin
writeln('A');
readln;
end;
if (A<>D) and (B=D) and (C<>D) then
begin
writeln('B');
readln;
end;
if (A<>D) and (B<>D) and (C=D) then
begin
writeln('C');
readln;
end;
if (A<>D) and (B<>D) and (C<>D) then
begin
a1:=D-A;
b1:=D-B;
c1:=D-c;
max:=a1;
if (a1=b1) and (b1=c1) then
begin
writeln('max=' , c1);
readln;
end;
if (a1=b1) and (a1>c1) then
begin
writeln('max=' ,b1);
readln;
end
else if (a1=b1) and (a1<c1) then
begin
writeln('max=' ,c1);
readln;
end;
if (b1=c1) and (b1>a1) then
begin
writeln('max=' ,c1);
readln;
end
else if (b1=c1) and (b1<a1) then
begin
writeln('max=' ,a1);
readln;
end;
if (a1=c1) and (a1>b1) then
begin
writeln('max=' ,c1);
readln;
end
else if (a1=c1) and (a1<b1) then
begin
writeln('max=' ,b1);
readln;
end;
if (a1<>b1) and (b1<>c1) then
begin
if b1>max then
max:=b1;
if c1>max then
max:=c1;
writeln('max=' ,max);
readln;
end;
end;
end.

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
program zadacha2;
var iter,d,i: integer;
a: array[1..3] of integer
begin
 writeln('vvedite znachenie D');
 readln(D);
 writeln('vvedite znacheniya A,B,C');
 readln(a[1],a[2],a[3]);
 iter:=0;
 for i:=1 to 3 do begin
    if a[ i ] = d then writeln (a[ i ]);
    iter:=iter+1;
 end;

 if iter=0 then begin
  for i:=1 to 3 do a[ i ]:=d-a[ i ];
  for i:=1 to 2 do
   for j:=1 to 3-i   do begin
      if a[ j ]>a[ j+1 ] then begin
           iter:=a[ j ];
           a[ j ]:=a[ j+1 ];
           a[ j+1 ]:=iter;
      end;
   end;
writeln(a[3]);
end;
end.
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Donya

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
спасибо большое!!!)))
честно говоря, я бы не догадалась с помощью массива сделать) просто огромнейшее спасибо) :)

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
не за что
а на будущее...если вам надо сравнивать\менять числа пишите в массив,намного упрощает жизнь
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩