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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2008, 18:52   #1
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию Прога с массивами

короче! суть проги в том, что она сначала высчитывает наименьшее значение каждой строки ,потом выбирает наибольшее!!!!!
вот код
Код:
program Lab05;
Uses Crt;
var
   matrix: array[1..3,1..4] of real;
   matrix2: array[1..3] of real;
   m, n, i: byte;
   max, min, t: real;
begin
     i := 1;
     Writeln ('!!!Заполняем массиВ!!!');
     Writeln ('!!!Вводите 3 строки по 4 значениЯ!!!');
     for m := 1 to 3 do
         begin for n := 1 to 4 do
                   Read (matrix[m,n]);
         end;
     for m := 1 to 3 do
         begin
              min := matrix[m,1];
              for n := 1 to 4 do
                   begin
                        if min < matrix[m,n] then
                           begin
                                matrix2[i] := min;
                                inc(i);
                           end
                        Else begin
                                  min := matrix[m,n];
                                  matrix2[i] := min;
                                  inc(i);
                             end;
                   end;
         end;
     t := matrix2[1];
     Writeln ('!!!Выводим массив меньших чисеЛ!!!');
     for i := 1 to 3 do
         write (matrix2[i]:2);
     for i := 2 to 3 do
         begin
              if t > matrix2[i] then
                 max := t
              Else
                  begin
                       t := matrix2[i];
                       max := t;
                  end;
         end;
     Writeln ('Maximum = ',max);
end.
Я заполняю массив! воожу
12 значений после которых прога стопорится
и вылетает такое сообщение
Процессор NTVDM обнаружил недопустимую инструкцию.
CS:0735 IP:00d9 OP:8d f3 03 b7 00 для завершения нажмите кнопку закрыть
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 14.10.2008, 23:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте вначале программы поставить директиву проверки диапазонов:
{$R+}

после этого Вы увидите ошибку RANGE CHECK Error
потому что алгоритм у Вас НИКУДА не годится ;-(
Вы погоняйте программу в отладке, увидите, что i у Вас постоянно наращивается и становится больше 3... (граница массива matrix2) после чего matrix2[i]:= начинает писать в область переменных, и наблюдается ПОЛНЫЙ кавардак ;-(

короче - алгоритм - в топку. Переделывайте!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.10.2008, 23:37   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

да спасибо!!!я уже понял сёдня утром!!!!!
вот код рабочей проги которую я переделал!!!
Код:
program Lab05;
Uses Crt;
var
   matrix: array[1..3,1..4] of real;
   matrix2: array[1..3] of real;
   m, n, i: byte;
   max, min, t: real;
begin
     clrscr;
     i := 1;
     Writeln ('!!!Заполняем массиВ!!!');
     Writeln ('!!!Вводите 3 строки по 4 значениЯ!!!');
     for m := 1 to 3 do
         begin for n := 1 to 4 do
                   Read (matrix[m,n]);
         end;
     for i := 1 to 3 do
         begin
              for m := 1 to 3 do
                  begin
                       min := matrix[m,1];
                       for n := 2 to 4 do
                           begin
                                if min <= matrix[m,n] then
                                begin
                                     matrix2[i] := min;
                                end
                                Else begin
                                   matrix2[i] := matrix[m,n];
                                   min := matrix2[i] ;
                                  end;
                           end;
                  end;
         end;
     t := matrix2[1];
     for i := 2 to 3 do
         begin
              if t > matrix2[i] then
                 max := t
              Else
                  begin
                       t := matrix2[i];
                       max := t;
                  end;
         end;
     Writeln ('Максимальное значение из минимальных значений строки = ',max:2:0);
end.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 15.10.2008, 00:00   #4
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

помоему слишком сложно исполняете задачу...
Роман Радер вне форума Ответить с цитированием
Старый 15.10.2008, 00:22   #5
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Роман Радер согласен. Есть похожая тема http://www.programmersforum.ru/showthread.php?t=27764 смотри и делай под свои нужды.
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивами mager JavaScript, Ajax 5 27.08.2008 22:02
Работа с массивами в C# MaskEdit Общие вопросы .NET 3 17.05.2008 17:59
прога и чюжая прога benjaminfran Общие вопросы Delphi 5 28.03.2008 15:07
Функция с массивами Nikki Помощь студентам 4 21.02.2008 12:43
Работа с массивами Hakman Общие вопросы C/C++ 1 19.02.2008 15:11