Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2013, 23:32   #1
VladimirAvakov
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 33
Восклицание Написать программу на Pascal ABC. (Разветвления)

Даны действительные числа a, b, c, d. Если a≤b≤c≤d, то каждое число заменить наибольшим из них; если a>b>c>d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.

Ребят помогите пожалуйста срочно. Заранее большое спасибо.

Последний раз редактировалось VladimirAvakov; 13.03.2013 в 23:35.
VladimirAvakov вне форума Ответить с цитированием
Старый 13.03.2013, 23:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
if (a<=b) and (b<=c) and (c<=d) then 
   begin
      a:=d; b:=d; c:=d
   end
else
 if not ((a>b) and (b>c) and (c>d)) then 
    begin
       a := sqr(a); b:=sqr(b); c:=sqr(c); d:=sqr(d);
    end;
и это всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2013, 00:33   #3
VladimirAvakov
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 33
По умолчанию

Вбил ваш код в Pascal ABC и выдает ошибки, можете пересмотреть еще раз пожалуйста?

Скажите а такой код правильный?
Код:
program p2;
label 1;
var
a:array[1..4] of real;
max:real;i:integer;
begin
write('vedite a-');read(a[1]);
write('vedite b-');read(a[2]);
write('vedite c-');read(a[3]);
write('vedite d-');read(a[4]);
if(a[1]<=a[2]) and (a[2]<=a[3]) and (a[3]<=a[4]) then
begin
max:=a[1];
for i:=2 to 4 do if (max<=a[i]) then max:=a[i];
for i:=1 to 4 do a[i]:=max;
end else
if(a[1]>a[2]) and (a[2]>a[3]) and (a[3]>a[4]) then goto 1 else
for i:=1 to 4 do a[i]:=a[i]*a[i];
1:for i:=1 to 4 do writeln(a[i]);
end.

Последний раз редактировалось VladimirAvakov; 14.03.2013 в 00:38.
VladimirAvakov вне форума Ответить с цитированием
Старый 14.03.2013, 01:08   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,321
По умолчанию

Код:
program p2;
var
  a, b, c, d: real;

begin
  write('vedite a ');
  readln(a);
  write('vedite b ');
  readln(b);
  write('vedite c ');
  readln(c);
  write('vedite d ');
  readln(d);
  if (a <= b) and (b <= c) and (c <= d) then
  begin
    a := d;
    b := d;
    c := d;
  end
  else if not((a > b) and (b > c) and (c > d)) then
  begin
    a := sqr(a);
    b := sqr(b);
    c := sqr(c);
    d := sqr(d);
  end;
  writeln(a:0:0, ' ', b:0:0, ' ', c:0:0, ' ', d:0:0);
  readln;
end.
1) Не используйте метки (тем более, когда можно легко обойтись без них)
2) Искать максимум нету смысла, т.к. d - самое большое, что следует из самого условия захода в эту ветку
3) Не забывайте о форматировании кода - читать и исправлять неудобно
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 14.03.2013 в 01:10.
BDA вне форума Ответить с цитированием
Старый 18.03.2013, 00:01   #5
VladimirAvakov
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 33
По умолчанию

Спасибо большое, но вопрос: зачем тут not? и можно ли без него обойтись?

Код:
program p2;
var
  a, b, c, d: real;

begin
  write('vedite a ');
  readln(a);
  write('vedite b ');
  readln(b);
  write('vedite c ');
  readln(c);
  write('vedite d ');
  readln(d);
  if (a <= b) and (b <= c) and (c <= d) then
  begin
    a := d;
    b := d;
    c := d;
  end
  else if not((a > b) and (b > c) and (c > d)) then
  begin
    a := sqr(a);
    b := sqr(b);
    c := sqr(c);
    d := sqr(d);
  end;
  writeln(a:0:0, ' ', b:0:0, ' ', c:0:0, ' ', d:0:0);
  readln;
end.
VladimirAvakov вне форума Ответить с цитированием
Старый 18.03.2013, 00:08   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,321
По умолчанию

Код:
program p2;
var
  a, b, c, d: real;

begin
  write('vedite a ');
  readln(a);
  write('vedite b ');
  readln(b);
  write('vedite c ');
  readln(c);
  write('vedite d ');
  readln(d);
  if (a <= b) and (b <= c) and (c <= d) then
  begin
    a := d;
    b := d;
    c := d;
  end
  else if (a > b) and (b > c) and (c > d) then//пустая ветка, при истинном условии
  else
  begin
    a := sqr(a);
    b := sqr(b);
    c := sqr(c);
    d := sqr(d);
  end;
  writeln(a:0:0, ' ', b:0:0, ' ', c:0:0, ' ', d:0:0);
  readln;
end.
Можно, но выглядеть будет глупо. not - отрицание утверждения.

Про раскрытие выражений забыл
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 18.03.2013 в 00:14.
BDA вне форума Ответить с цитированием
Старый 18.03.2013, 00:12   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пожалуйста, всегда рад помочь..
Цитата:
зачем тут not?
not - это логическое отрицание (not ( true ) == false и, наоборот, not (false) == true )

Цитата:
и можно ли без него обойтись?
разумеется
Код:
else if not((a > b) and (b > c) and (c > d)) then
....
можно переписать и без not
способ 1 (раскрываем not по правилам логических преобразований )
Код:
  end
  else if (a <= b) or (b <= c) or (c <= d)) then
  begin
    a := sqr(a);
    b := sqr(b);
    c := sqr(c);
    d := sqr(d);
  end;
способ 2. (меняем ветку, в которой мы производим возведение в степень)
Код:
  end
  else if (a > b) and (b > c) and (c > d) then
  begin
     {пустой оператор - нам ничего не нужно делать: если a>b>c>d, то числа оставить без изменения}
  end
  else { иначе - возводим числа в квадрат...}
  begin
    a := sqr(a);
    b := sqr(b);
    c := sqr(c);
    d := sqr(d);
  end;

UPDATE
BDA опередил чуток..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу в Pascal IrinaBogom Паскаль, Turbo Pascal, PascalABC.NET 0 18.01.2013 21:18
написать программу в Pascal Джейк Грин Паскаль, Turbo Pascal, PascalABC.NET 8 05.03.2012 23:21
написать программу в pascal gans2991 Паскаль, Turbo Pascal, PascalABC.NET 3 04.10.2011 20:55
Pascal | написать программу Inklet Фриланс 5 18.07.2011 11:07
Написать программу на Pascal DimonChik113 Фриланс 20 11.03.2010 11:42