Программа для построения БЛОК-СХЕМ!!!
смо с ожиданием - Бесплатно сделаю блок-схему
Меню сайта

Форма входа

Друзья сайта

  • Программа Ростовщик 1.04

  • Программа расчета кредита

  • Курсовые по информатике

  • Старый, но живой ГОСТ для Блок-Схем

  • Сервис заполнения бланков аттестатов

  • Библиотека VBA для сервиса AntiGate.com

  • Статистика

    Locations of visitors to this page

    Приветствую Вас, Гость · RSS 02.05.2024, 22:56

    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: diamFC  
    Бесплатно сделаю блок-схему » Блок-схемы по просьбам » Главное - ВЕРИТЬ (© Didme) » смо с ожиданием (помогите пожалуйста составить блок схему)
    смо с ожиданием
    madi29Дата: Воскресенье, 08.06.2014, 10:37 | Сообщение # 1
    Рядовой
    Группа: Пользователи
    Сообщений: 1
    Репутация: 0
    Статус: Offline
    program Project1;

    {$APPTYPE CONSOLE}

    uses
    SysUtils;

    VAR que:array[1..100] of integer; {массив очереди}
    chan:array[1..100] of integer; {массив квналов}
    tsk:array[1..100] of real; {массив суммарного времени пребывания в соответствующем состоянии}
    tq,ts:real;
    nq,ns:integer;
    m,a,b:integer;
    niu,lambda,qua,i,tnext:real;
    time:integer;
    j:integer;
    flg:boolean;
    tm:integer;

    procedure compressque(ind:integer); {Cжимает очередь, начиная с ячейки № ind}
    var i:integer;

    begin
    i:=ind;
    while (i<100) do
    begin
    que:=que[i+1];
    i:=1+i;
    end;
    // writeln('query compressed'); {запрос сжатый}
    end;

    function add2chan(ind:integer):boolean; {Заявку из ячейки очереди № ind добавляет в канал}
    var flag:boolean;
    i:integer;
    begin
    flag:=true;
    i:=1;
    while ((i<=m)and flag) do
    begin
    if chan=0 then
    begin
    tsk[ind]:=0;
    chan:=ind;
    flag:=false;
    // writeln('zadacha ',ind,' kanal dobawlen ',i); {задача добавлен канал}
    end;
    i:=i+1;
    end;
    add2chan:=not(flag);
    end;

    function canstop(t:real;par:real):boolean; {Определяет вре-мя нахождения каждой заявки в очереди}
    var x:real;
    y:real;
    begin
    x:=1-exp(-par*t);
    y:=random;
    if y<x then canstop:=true
    else canstop:=false;
    end;

    function add2sys(ind:integer):boolean; {Добавляет завку в систему.}
    var flag:boolean;
    i:integer;
    begin
    flag:=true;
    i:=1;
    while ((i<=m)and flag) do
    begin
    if chan=0 then
    begin
    tsk[ind]:=0;
    chan:=ind;
    flag:=false;
    ns:=ns+1;
    // writeln('zadacha ',ind ,' kanal dobawlen ',i); {добавлен канал}
    end;
    i:=i+1;
    end;
    if flag then
    begin
    i:=1;
    while ((i<=100)and flag) do
    begin
    if que=0 then
    begin
    que:=ind;
    flag:=false;
    nq:=nq+1;
    ns:=ns+1;
    // writeln('zadacha ',ind,' zapros dobawlen'); {добавлен запрос}
    end;
    i:=i+1;
    end;
    end;
    if flag then
    begin
    //writeln('zapros perepolnen!!!'); {запрос переполнен}
    halt(0);
    end;
    end;

    procedure processchan; {Обслуживание заявки в канале}
    var i:integer;
    begin
    for i:=1 to m do
    begin
    if chan<>0 then
    if canstop(tsk[chan],lambda) then
    begin
    //writeln('task ',chan,' left the channel ',i); {левый канал}
    tsk[chan]:=-1;
    chan:=0;
    end
    else
    begin
    ts:=ts+qua;
    tsk[chan]:=tsk[chan]+qua;
    end;
    end;
    end;

    procedure processque;
    var i:integer;
    begin
    for i:=1 to 100 do
    begin
    if que<>0 then
    if add2chan(que) then compressque(i);
    end;

    for i:=1 to 100 do
    begin
    if que<>0 then
    if canstop(tsk[que],niu) then
    begin
    // writeln('task ',que,' left the query'); {оставил запрос}
    tsk[que]:=-1;
    que:=0;
    compressque(i);

    end
    else
    begin
    tq:=tq+qua;
    tsk[que]:=tsk[que]+qua;
    end;
    end;
    end;

    begin
    randomize;
    writeln('wwedite parametri rawnomernogo raspredelenija'); {закон распределения характеризующий моменты времени поступления требований в систему}
    readln(a,b);
    writeln('wwedite intensiwnost postuplenija zajawok i intensiwnost obsluziwanija');
    readln(niu,lambda);
    writeln('wwedite chislo kanalow'); {введите число каналов}
    readln(m);
    writeln('uslowie'); {введите время непременное условие}
    readln(qua);
    writeln('wwedite wremja rassmotrenija'); {введите время рассмотрения}
    readln(time);
    for j:=1 to 100 do
    tsk
    :=-1;

    i:=0;
    while(i<time) do {main time cycle} {основное время цикла}
    begin
    // writeln(' > wremja ',i:3:4,' iz ',time);

    { readkey; }

    if i=0 then {first time} {первый раз}
    begin
    tsk[1]:=0;
    add2sys(1);
    tnext:=random*(b-a)+a; {формула нахождения равномерного расспределения на а и б}
    writeln('srednjaja dlinna zajawok w ocheredi ',tnext:4:1); {следующая задача должна находиться в}
    end

    else
    begin
    if i>tnext then {add new task} {добавление новой задачи}
    begin
    tnext:=i+random*(b-a)+a; {формула нахождения равномерного расспределения на а и б}
    // writeln('next task should appear at ',tnext:4:4); {следующая задача должна находиться в}
    flg:=true;
    j:=1;
    while((j<=100) and flg) do
    begin
    if tsk=-1 then
    begin
    tsk
    :=0;
    add2sys(j);
    flg:=false;
    end;
    j:=j+1;
    end;
    if flg then
    begin
    // writeln('system overflow!!!'); {система перелива}
    halt(0);
    end;
    end;

    processchan;
    processque;
    end;
    i:=i+qua;
    end;
    if nq<>0 then
    // writeln('srednee wremja zaprosa',tq/nq:4:4) {среднее время запроса}
    else
    // writeln('srednee wremja zaprosa',tq/nq:4:4); {среднее время запроса}
    // writeln('nikakih zadach ne bilo w zaprose'); {никакие задачи не были в запросе }
    //writeln('srednee wremja sistemi',ts/ns:4:4); {среднее время системы}
    readln;
    end.
     
    diamFCДата: Понедельник, 09.06.2014, 11:50 | Сообщение # 2
    Полковник
    Группа: Администраторы
    Сообщений: 207
    Репутация: 11
    Статус: Offline
    Блок-схема в архиве.
    Блок-схемы сделаны с помощью программы diamFC, которую вы можете скачать по этой ссылке: http://diamfc.ucoz.ru/load/0-0-0-1-20
    Программа БЕСПЛАТНО сделает блок-схемы для задач, в которых меньше 30 строк кода.

    Прикрепления: 6506008.zip (253.4 Kb) · 5572847.jpg (51.1 Kb)
     
    Бесплатно сделаю блок-схему » Блок-схемы по просьбам » Главное - ВЕРИТЬ (© Didme) » смо с ожиданием (помогите пожалуйста составить блок схему)
    • Страница 1 из 1
    • 1
    Поиск:

    Copyright MyCorp © 2024
    Конструктор сайтов - uCoz