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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2014, 18:23   #1
КонстантинКомИН
Новичок
Джуниор
 
Регистрация: 15.01.2014
Сообщений: 2
По умолчанию Помогите БД Делфи

Очень прошу помощи у людей которые смогут мне помочь! Я на 1 курсе комп инженерии .. учу как могу ..но с етой програмой у меня запара !...
Выдает ошибку при сортировке я не знаю что я делаю не так (("...raised too many consecutive exceptions...."
Оч прошу помочь ) делаю уже 4 день вот код
Код:
program cod1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,windows;
const
 n=7;
type
 mak = record
   KodDysc    :string[5];   //KodDysc
  NazvDysc   :string[50];  //NazvDysc
   ObsDysCred :real;        //ObsDysCred
   KodCycl   :real;     //KodCycl
   LabRob    :boolean;     //LabRob
 
 end;
osb = array[1..n]of mak;
osn= array of mak;
const
 y:osb=((kodDysc:'4';  NazvDysc:'Філософія';                                    ObsDysCred:2.0; KodCycl:1;LabRob:False;),
        (kodDysc:'40'; NazvDysc:'Теорія систем управлння';                      ObsDysCred:2.0; KodCycl:5;LabRob:True;),
        (kodDysc:'203';NazvDysc:'Методи обчислень';                            ObsDysCred:2.0; KodCycl:6;LabRob:False;),
        (kodDysc:'13'; NazvDysc:'Вища математика';                              ObsDysCred:10.0;KodCycl:2;LabRob:False;),
        (kodDysc:'18'; NazvDysc:'Основи програмування та алгоритмчні мови';     ObsDysCred:6.0; KodCycl:2;LabRob:True; ),
        (kodDysc:'25'; NazvDysc:'Системне програмування та операційні системи ';ObsDysCred:4.0; KodCycl:3;LabRob:False;),
        (kodDysc:'38'; NazvDysc:'Теорія прийняття рішень ';                     ObsDysCred:2.5; KodCycl:4;LabRob:False;));
 
//-------------------------------------------------------------------------
Procedure Output(var md:osn);
{Вывод массива дисциплин на екран где
 md - динамичиский масив строк}
var
 i:integer;
Begin
  for i:=0 to Length(md)-1 do
     writeln('|Код диципліни - ',md[i].kodDysc,'| Назва диципліни - ',md[i].NazvDysc,'   |Обсягу кредитах - ',md[i].ObsDysCred:1:1,' |Код циклу - ' ,md[i].KodCycl:1:1,' | ЛабРоб - ',md[i].LabRob ,'|/');
    writeln;writeln;
End;
 
 
//-------------------------------------------------------------------------
procedure sorting(N:integer;Osn :array of mak);
  
   var
    b:array of mak;
    i,j,l:integer;
    u:string;
    u2,u3:real;
    u4:boolean;
 
  procedure insert(idx:integer;str:string);
    var j:integer;
    begin
      for j:=N downto idx do
        osn[j+1].NazvDysc:=osn[j].NazvDysc;
        osn[idx].NazvDysc:=str;
    end;
 
  procedure delete(idx:integer);
    var j:integer;
    begin
      for j:=idx to n do
      osn[j].NazvDysc:=osn[j+1].NazvDysc;
    end;
 
  procedure sort;
   var i,x:integer;
    begin
      for i := 0 to (n) do
        for x := 0 to (N ) do
          if (osn[x].NazvDysc < osn[i].NazvDysc) and (x > i) then
          begin
            Insert(i, osn[x].NazvDysc);
            Delete(x+ 1);
          end;
    end;
 
begin
    for i:=0 to n do
      b[i]:=osn[i];
  sort;
  for i:=0 to N do
     for j:=0 to N do
        begin
          if b[i].NazvDysc = osn[j].NazvDysc then
            begin
              u:=b[i].kodDysc;
              b[i].kodDysc:=osn[j].kodDysc;
              osn[j].kodDysc:=u;
              u2:=b[i].ObsDysCred;
              b[i].ObsDysCred:=osn[j].ObsDysCred;
              osn[j].ObsDysCred:=u2;
              u3:=b[i].KodCycl;
              b[i].KodCycl:=osn[j].KodCycl;
              osn[j].KodCycl:=u3;
              u4:=b[i].LabRob;
              b[i].LabRob:=osn[j].LabRob;
              osn[j].LabRob:=u4;
          end;
        end;
   for l:=1 to N do
    begin
      writeln('|Код дисципліни - ',osn[l].kodDysc,'| Назва дисципліни - ',osn[l].NazvDysc,'| Обсяг у кредитах - ',osn[l].ObsDysCred:1:1,'| Код циклу - ' ,osn[l].KodCycl:1:1,'| ЛабРоб - ',osn[l].LabRob ,'|/');
      writeln;
    end;
  end;
//-------------------------------------------------------------------------
 
var
 md:osn;
 i:integer;
 ch:char;
BEGIN
  setconsoleoutputcp(1251);
  setconsolecp(1251);
  for i:=0 to n-1 do
    begin
      SetLength(md,i+1);
      md[i].KodDysc:=y[i+1].KodDysc;
      md[i].NazvDysc:=y[i+1].NazvDysc;
      md[i].ObsDysCred:=y[i+1].ObsDysCred;
      md[i].KodCycl:=y[i+1].KodCycl;
      md[i].LabRob:=y[i+1].LabRob;
    end;
 
  while ch<>'0' do
    Begin
      writeln('Введите номер следующего действия: ');
      writeln('1 - Вывод на екран');
      writeln('2 - Сортировка');
      write('Ваш выбор:');
      readln(ch);
      writeln;
      case ch of
        '1':Output(md);
        '2':sorting(length(md),md);
      end;
     end;
end.
КонстантинКомИН вне форума Ответить с цитированием
Старый 15.01.2014, 19:57   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Массив Osn переданный в процедуру имеет размерность [0..N-1]
А что с ним делаете например в этом цикле для j=N:
Код:
for j:=N downto idx do
        osn[j+1].NazvDysc:=osn[j].NazvDysc;
osn[N], а тем более osn[N+1] за пределами массива. Дальше мельком глянул - сплошь и рядом выход за пределы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.01.2014, 20:16   #3
КонстантинКомИН
Новичок
Джуниор
 
Регистрация: 15.01.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Массив Osn переданный в процедуру имеет размерность [0..N-1]
А что с ним делаете например в этом цикле для j=N:
Код:
for j:=N downto idx do
        osn[j+1].NazvDysc:=osn[j].NazvDysc;
osn[N], а тем более osn[N+1] за пределами массива. Дальше мельком глянул - сплошь и рядом выход за пределы
программа сортировки не моя ношел просто .. и не смог розобраться ..если кто может обьясните .... не серчайте просто до универа прогу вообще не изучал ..( та и тут все приходится самому...(Снимок.jpg как с этим бороться ( символы )0?

Последний раз редактировалось КонстантинКомИН; 15.01.2014 в 20:28.
КонстантинКомИН вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с программой делфи efim Фриланс 3 10.06.2009 13:36
Помогите с классами в делфи((( PRIVIDENIE18 Помощь студентам 8 14.05.2009 09:07