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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 17:46   #1
DEVIL666
 
Регистрация: 17.11.2008
Сообщений: 6
По умолчанию Неполучается задача в паскале !!

Вот условие:
Вычислить z=(Xmax-Ymin)/2 где Xmax-максимальный элемент массива Х(50), Ymin-минимальный элемент массива Y(40).
Примечание Xmax и Ymin вычислять в одной подпрограмме
Выполнить с использованием подпрограммы-процедуры.

А вот что я пытался сделать:
Program xym;
var
xmax,ymin,i:integer;
x:array[1..50] of integer;
y:array[1..40] of integer;
z:real;
procedure go;
begin
for i:=1 to 50 do
begin
if(x[i]>xmax) then
x[i]:=xmax;
if(i>40) then
continue;
if(y[i]<ymin) then
y[i]:=ymin;
end;
begin
xmax:=x[1];
ymin:=y[1];
go;
z:=(xmax-ymin)/2;
end.

Пожалуста помогите мне!! Исправте что не так !!!
DEVIL666 вне форума Ответить с цитированием
Старый 18.11.2008, 19:22   #2
JamS007
Пользователь
 
Регистрация: 09.11.2008
Сообщений: 68
По умолчанию

Вот, если я правильно понял условие задачи, то решение для неё такое:

Код:
Var
  X     : array [1..50] of real;
  Y     : array [1..50] of real;
  //--------------------------//
  X_max : real;
  Y_min : real;

  Z: real;

procedure Go;
Var
  i : ShortInt;

Begin
  X_max := 1;
  Y_min := 1;

{БЛОК НЕОБЯЗАТЕЛЕН. НАБИВАТЬ МАССИВ МОЖНО ЛЮБЫМИ ЧИСЛАМИ И ЛЮБЫМ АЛГОРИТМОМ}
  // набиваем массив числами
  for i := 1 to 50 do Begin
    X[i] := i;
  End;
  //---------------------//
  for i := 1 to 40 do Begin
    Y[i] := i;
  End;
{БЛОК НЕОБЯЗАТЕЛЕН. НАБИВАТЬ МАССИВ МОЖНО ЛЮБЫМИ ЧИСЛАМИ И ЛЮБЫМ АЛГОРИТМОМ}



  //проверяем максимальные числа
  for i := 1 to 50 do begin
    if X[i] > X_max then
      Begin
      X_max := X[i];
      End;
  end;

  for i := 1 to 40 do begin
    if Y[i] < Y_min then
      Begin
      Y_min := Y[i];
      End;
  end;
End;

begin
  Go; // НУЖНАЯ ПРОЦЕДУРА
  Z := (X_max - Y_min) / 2;
  Writeln(FloatToStr(Z));
  Readln;
end.
Написано на Delphi. Такчто если break или другой оператор не распознает, то замени.

P.S. Присмотрись к оформлению кода, не раз в жизни пригодится! Незачто. Если что - обращайся!!!

Последний раз редактировалось JamS007; 18.11.2008 в 19:45.
JamS007 вне форума Ответить с цитированием
Старый 18.11.2008, 23:02   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
Program xym;
uses crt;
type mas=array[1..100]of integer;
procedure MaxMin(k:integer;a:mas; var max,min:integer);
var i:integer;
begin
max:=a[1];min:=a[1];
for i:=1 to k do
if a[i]>max then max:=a[i]
else if a[i]<min then min:=a[i];
end;
var
  xmax,xmin,ymax,ymin,i:integer;
  x:mas;
  y:mas;
  z:real;
begin
clrscr;
randomize;
writeln('Massiv X:');
for i:=1 to 50 do
  begin
    x[i]:=random(20);
    write(x[i],' ');
  end;
writeln;
writeln('Massiv Y:');
for i:=1 to 40 do
  begin
    y[i]:=random(10);
    write(y[i],' ');
  end;
writeln;
MaxMin(50,x,xmax,xmin);
MaxMin(40,y,ymax,ymin);
writeln('xmax=',xmax,'  ymin=',ymin);
z:=(xmax-ymin)/2;
write('z=',z:0:2);
readln
end.
puporev вне форума Ответить с цитированием
Старый 22.11.2008, 03:48   #4
DEVIL666
 
Регистрация: 17.11.2008
Сообщений: 6
По умолчанию

Большое СПАСИБО !!!!
DEVIL666 вне форума Ответить с цитированием
Старый 22.11.2008, 03:49   #5
DEVIL666
 
Регистрация: 17.11.2008
Сообщений: 6
По умолчанию

Блин чё то я не так всё делал !!
DEVIL666 вне форума Ответить с цитированием
Старый 22.11.2008, 03:52   #6
DEVIL666
 
Регистрация: 17.11.2008
Сообщений: 6
По умолчанию

А посмотри пожалуста на эту задачу !!! Я её тоже неправильно сделал ???
Условие:
Вычислить z=(Xm1+Xm2)/2 где Хm1 и Xm2 - наименьшие элементы массивов X1(70), X2(80).Надо выполнить с использованием попрограммы-функция !!
А это у меня получилось:
Program xm;
var
i,xm1,xm2:integer;
z:real;
x1:array[1..70] of integer;
x2:array[1..80] of inteher
function go:boolean;
begin
for i:=1 to 70 do
begin
if (x1[i]<xm1) then
xm1:=x1[i];
end;
xm2:=x2[1];
for i:=1 to 80 do
begin
if (x2[i]<xm2) then
xm2:=x2[i];
end;
end;
begin
xm1:=x[1];
go;
z:=(xm1+xm2)/2;
end.
DEVIL666 вне форума Ответить с цитированием
Старый 22.11.2008, 09:05   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Для чего тебе привели решение предыдущей задачи? Чтобы в следующей написать ахинею, состоящую из бессмысленного набора операторов? Остатки мозгов то собери в кучку и подумай. Объясняю еще раз.
Код:
Program xm;
uses crt;
const n1=70;  //размеры массивов
      n2=80;
type Tmas=array[1..100] of integer; //тип массивов для передачи в процедуру и функцию
procedure Vvod(n:integer; var m:Tmas); //У нас два массива, чтобы не писать ввод 2 раза, оформим процедурой, где входной параметр размер массива, выходной-сам массив
var i:integer;
begin
for i:=1 to n do
   begin
     m[i]:=random(30)+5;
     write(m[i],' ');
   end;
writeln;
end;
function Min(n:integer;a:Tmas):integer;//функция поиска минимального элемента в массиве, входные параметры размер массива и сам массив
var i,mn:integer;
begin
mn:=a[1];
for i:=2 to n do
if a[i]<mn then mn:=a[i];
Min:=mn;
end;

var x1,x2:Tmas; //раздел описания переменных
    i,xm1,xm2:integer;
    z:real;
begin  //основная программа
clrscr;
randomize;
writeln('Massiv X1:');
Vvod(n1,x1); //вызываем процедуру ввода с фактическими параметрами
writeln('Massiv X2:');
Vvod(n2,x2);
z:=(Min(n1,x1)+Min(n2,x2))/2;//решаем задачу, используя 2 раза функцию нахождения минимального
write('Z=',z:0:2);
readln
end.
end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЗАдача на паскале xakkkkker Помощь студентам 1 05.11.2008 01:11
Задача на Паскале Radioactive Фриланс 3 22.10.2008 16:56
Неполучается рассортировать текст и числа. Помогите, пожалуйста. kliocka Общие вопросы Delphi 3 01.04.2008 20:07
задача в паскале __k1ll3r__ Помощь студентам 3 27.12.2007 05:41