Не могу понять

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

10 мар 2007, 06:57

подскажите, что не так, :( :confused:
Дана последовательность целых чисел. Найти наибольший и наимень¬ший из номеров ее членов, попавших в заданный интервал.

Код: Выделить всё

Program ZD_3;
        uses crt;
        var
        a:array[1..10] of integer;
        b:array[1..10] of integer;
        j,i:word;
        P,Q:integer;
        min,max:integer;
begin
     clrscr;
     randomize;
     writeln('Matrica');
     for i:=1 to 10 do
     begin
     a[i]:=10+random(90);
     write(' ', a[i]);
     end;
     writeln;
     write ('Vvedite nachalo intervala = ');
     readln (P);
     write ('Vvedite konec intrvala = ');
     readln (Q);
     for i:=1 to 10 do
     begin
     if ((a[i])>(P)) and ((a[i])<(Q)) then
     a[i]:=b[i];
     end;
     for i:=1 to 10 do
     begin
     write(b[i]);
     end;
     for i:=1 to 10 do
     if b[i]<min then
     min:=b[i];
     for i:=1 to 10 do
     if b[i]>max then
     max:=b[i];
     readln;
     writeln ('Min. element', min);
     writeln ('Max. element', max);
     readln;
end.
Blood_Magic
Сообщения: 268
Зарегистрирован: 30 июн 2005, 14:53

10 мар 2007, 11:31

лажу написал.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

10 мар 2007, 12:27

Blood_Magic, так я понимаю что не правильно, лучше бы помог. а не писл бы что лажу написал
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

10 мар 2007, 23:04

EgorX писал(а): подскажите, что не так,
Вообще-то, здесь много чего не так. Например,
EgorX писал(а):

Код: Выделить всё

 
...
a[i]:=b[i]][/quote]
Здесь ты заполненному массиву (a) присваиваешь элементы пустого (b). После этой операции оба массива обнулятся. Нужно наоборот:
[code]
...
b[i]:=a[i];
...
EgorX писал(а):

Код: Выделить всё

...
if ((a[i])>(P)) and ((a[i])<(Q)) then
...
Проще сделать так:

Код: Выделить всё

...
for i:= p to q do ...
...
EgorX писал(а):

Код: Выделить всё

 for i:=1 to 10 do
     if b[i]<min then
     min:=b[i]]>max then
     max:=b[i];
     readln;
Результат будет неправильным, так как не задан интервал поиска. Пусть минимальный и максимальный элементы будут равны первому числу заданного интервала:

Код: Выделить всё

max:=b[p];
min:=b[p];
for i:=p to q do
     if b[i]<min then min:=b[i];
     for i:=p to q do
     if b[i]>max then max:=b[i];
     readln;
Да и вообще, по-моему массив B здесь лишний. Но... раз уж ты его объявил, значит, наверное, понадобится. Не буду угадывать. Вот итоговый код программы:

Код: Выделить всё

Program ZD_3;
        uses crt;
        var
        a:array[1..10] of integer;
        b:array[1..10] of integer;
        j,i:word;
        P,Q:integer;
        min,max:integer;
begin
     clrscr;
     randomize;
     writeln('Matrica');
     for i:=1 to 10 do
     begin
     a[i]:=10+random(90);
     write(' ', a[i]);
     end;
     writeln;
     write ('Vvedite nachalo intervala = ');
     readln (P);
     write ('Vvedite konec intrvala = ');
     readln (Q);
     for i:=p to q do
     begin
     b[i]:=a[i];
     end;
     for i:=p to q do
     begin
     write(' ',b[i]);
     end;
     min:=b[p];
     max:=b[p];
     for i:=p to q do
     if b[i]<min then min:=b[i];
     for i:=p to q do
     if b[i]>max then max:=b[i];
     readln;
     writeln ('Min. element - ', min);
     writeln ('Max. element - ', max);
     readln;
end.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

11 мар 2007, 06:16

Колядин Максим, Либо у меня с паскалемчто то не то ... но у меня не работает =((
EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

11 мар 2007, 07:30

Колядин Максим, спаибо большое, усе ...разобрался ... сделал с одним массивом

Код: Выделить всё

Program ZD_3;
        uses crt;
        var
        a:array[1..10] of integer;
        j,i:word;
        P,Q:integer;
        min,max:integer;
begin
     clrscr;
     randomize;
     writeln('Matrica');
     min:=100;
     for i:=1 to 10 do
     begin
     a[i]:=10+random(90);
     write(' ', a[i]);
     end;
     writeln;
     write ('Vvedite nachalo intervala = ');
     readln (P);
     write ('Vvedite konec intrvala = ');
     readln (Q);
     for i:=1 to 10 do
     begin
     if (a[i]>P) and (a[i]<Q) then
     begin
     write (' ',a[i]);
          begin
           if a[i]<min then min:=a[i];
          end;
          begin
           if a[i]>max then max:=a[i]
          end;
     end;
     end;
     writeln;
     writeln ('Min. element = ', min);
     writeln ('Max. element = ', max);
     readln;
end.
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

11 мар 2007, 12:38

В твоей программе минимальный элемент всегда будет равен 100, а максимальный 0. Может быть я неправильно понял условие задачи, но по моему мнению, задача выполнена неправильно на основании:

Код: Выделить всё

 begin
     if (a[i]>P) and (a[i]<Q) then
     begin
Например, мы ввели интервал поиска элемента от 5 до 6 (P=5; Q=6). Массив заполнен следующим образом:
11 12 13 14 15 16 17 18 19 20
Минимальный элемент в настоящем интервале равен 15, максимальный - 16.Придерживаясь твоего условия, а оно выглядит так:
если (a[15]>5) и (a[15]<6) тогда ...
Сам посуди, что логическое значение этого условия - false, и программа не будет искать min/max элементы...
Приведи примеры входных и выходных данных.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

11 мар 2007, 12:53

Колядин Максим, ы ... согласен ... не доработана задача .... но мне больше не нужно ... ну посмотрим что завтра на это мне скажут ...
EgorX
Сообщения: 16
Зарегистрирован: 18 фев 2007, 07:55

11 мар 2007, 12:57

Колядин Максим, кстати .... вот я никак не пойму как происходит сортировка данных в массиве ... вот мне нужно в 2D массиве отсортировать столбцы ... по убыванию ... вот не знаешь где можно подробно прочитать про сортировку
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

11 мар 2007, 18:12

EgorX писал(а):Колядин Максим, кстати .... вот я никак не пойму как происходит сортировка данных в массиве ...
Вот пример сортировки массива по возрастанию, так называемым "пузырьковым методом".

Код: Выделить всё

var m: array [1..10] of integer]:=i; {1,2,3...10}
repeat
done:=true;
for i:= 1 to 10 do if m[i]<>m[i+1] then begin
buf:=m[i];
m[i]:=m[i+1];
m[i+1]:=buf;
done:=false;
end;
until done;
end.
EgorX писал(а): вот мне нужно в 2D массиве отсортировать столбцы ... по убыванию ... вот не знаешь где можно подробно прочитать про сортировку
Попробуй тут: http://www.pascaler.ru
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ответить