Проблема с передачей массива в функцию

Тема в разделе "Общие вопросы по С и С++", создана пользователем GladiatoR24, 24 ноя 2010.

Статус темы:
Закрыта.
  1. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Нужно передать массив в функцию, вроде-бы всё описал но компилятор ругается...
    Объясните, пожалуйста, в чём ошибка.

    Код (C++):
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>


    int Random(int, int);
    int add_pos(TTurniket, int Kolvo_Turniketov, int Kolvo_Zriteley, int Ochered_Max);

    class TZriteli
    {
    public:
    int Status;
    int Time_In_Ochered;
    };

    class TTurniket
    {
    public:
    bool Status;
    int Time_Obsl;
    int Time_ObslChel;
    int Kol_Zayavok;
    int Time_Work;
    int Time_Prostoy;
    int Dlinna_Ocheredi;
    TZriteli *Masiv_Zriteley[100];
    };

    void main()
    {
    clrscr();
    int Kolvo_Zriteley;
    int Kolvo_Turniketov=10;
    TTurniket *Turn_Mas[10];
    int Ochered_Max=0;
    add_pos(Turn_Mas, Kolvo_Turniketov, Kolvo_Zriteley,Ochered_Max);
    cout<<"******";
    getch();

    }

    int add_pos(TTurniket* Turn_Mas[], int Kolvo_Turniketov, int Kolvo_Zriteley, int Ochered_Max)// Dobavlenie Posetitela v o4ered
    {
    int min, min_i, i;
    min=Turn_Mas[1].Dlinna_Ocheredi;
    min_i=1;
    for(i=2; i<=Kolvo_Turniketov; i++)
    {
    if(Turn_Mas[i].Dlinna_Ocheredi<min)
    {
    min=Turn_Mas[i].Dlinna_Ocheredi;
    min_i=i;
    }
    }
    Turn_Mas[min_i].Dlinna_Ocheredi++;
    
    if(Turn_Mas[min_i].Dlinna_Ocheredi>Ochered_Max)
    {
    Ochered_Max=Turn_Mas[min_i].Dlinna_Ocheredi;
    }

    for(i=Turn_Mas[min_i].Dlinna_Ocheredi; i<=2; i++)
    Turn_Mas[min_i].Masiv_Zriteley[i]=Turn_Mas[min_i].Masiv_Zriteley[i-1];
    Turn_Mas[min_i].Masiv_Zriteley[1].Status=1;
    Turn_Mas[min_i].Masiv_Zriteley[1].Time_In_Ochered=0;

    if(Turn_Mas[min_i].Status==False)
    {
    Turn_Mas[min_i].Time_Obsl=Random(Obslug_Min, Obslug_Max);
    Turn_Mas[min_i].Status=True;
    Kolvo_Zriteley++;
    }

    }

    int Random(int minr, int maxr)
    {
    return minr+rand()%(maxr-minr+1);
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Какой массив в какую функцию? И как компилятор ругается?
     
  3. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Нужно передать массив Turn_Mas[] в функцию add_pos

    Ошибки:

    [C++ Error] Unit1.cpp(16): E2147 'TTurniket' cannot start a parameter declaration
    [C++ Error] Unit1.cpp(16): E2303 Type name expected
    [C++ Error] Unit1.cpp(35): E2303 Type name expected
    [C++ Error] Unit1.cpp(35): E2139 Declaration missing ;
    [C++ Error] Unit1.cpp(45): E2268 Call to undefined function 'add_pos'
    [C++ Error] Unit1.cpp(71): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(71): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(72): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(73): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Warning] Unit1.cpp(82): W8070 Function should return a value
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    У тебя прототип функции не соответствует самой функции. У тебя прототип:
    Код (C++):
    int add_pos(TTurniket, int Kolvo_Turniketov, int Kolvo_Zriteley, int Ochered_Max);
    а должен быть:
    Код (C++):
    int add_pos(TTurniket *[], int, int, int );
    меняй и пиши что получилось.
     
  5. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Вот что получилось:
    Код (C++):
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>


    int Random(int, int);
    int add_pos(TTurniket*, int, int, int)

    class TZriteli
    {
    public:
    int Status;
    int Time_In_Ochered;
    };

    class TTurniket
    {
    public:
    bool Status;
    int Time_Obsl;
    int Time_ObslChel;
    int Kol_Zayavok;
    int Time_Work;
    int Time_Prostoy;
    int Dlinna_Ocheredi;
    TZriteli *Masiv_Zriteley[100];
    };

    void main()
    {
    clrscr();
    int Kolvo_Zriteley;
    int Kolvo_Turniketov=10;
    TTurniket Turn_Mas[10];
    int Ochered_Max=0;
    add_pos(Turn_Mas, Kolvo_Turniketov, Kolvo_Zriteley,Ochered_Max);
    cout<<"******";
    getch();

    }

    int add_pos(TTurniket *Turn_Mas[], int Kolvo_Turniketov, int Kolvo_Zriteley, int Ochered_Max)// Dobavlenie Posetitela v o4ered
    {
    int min, min_i, i;
    min=Turn_Mas[1]->Dlinna_Ocheredi;
    min_i=1;
    for(i=2; i<=Kolvo_Turniketov; i++)
    {
    if(Turn_Mas[i]->Dlinna_Ocheredi<min)
    {
    min=Turn_Mas[i]->Dlinna_Ocheredi;
    min_i=i;
    }
    }
    Turn_Mas[min_i]->Dlinna_Ocheredi++;
    if(Turn_Mas[min_i]->Dlinna_Ocheredi>Ochered_Max)
    {
    Ochered_Max=Turn_Mas[min_i]->Dlinna_Ocheredi;
    }

    for(i=Turn_Mas[min_i]->Dlinna_Ocheredi; i<=2; i++)
    Turn_Mas[min_i]->Masiv_Zriteley[i]=Turn_Mas[min_i]->Masiv_Zriteley[i-1];
    Turn_Mas[min_i]->Masiv_Zriteley[1]->Status=1;
    Turn_Mas[min_i]->Masiv_Zriteley[1]->Time_In_Ochered=0;

    if(Turn_Mas[min_i]->Status==False)
    {
    //  Turn_Mas[min_i]->Time_Obsl=Random(Obslug_Min, Obslug_Max);
    Turn_Mas[min_i]->Status=True;
    Kolvo_Zriteley++;
    }

    }

    int Random(int minr, int maxr)
    {
    return minr+rand()%(maxr-minr+1);
    }
    Ошибки:
    [C++ Error] Unit1.cpp(16): E2147 'TTurniket' cannot start a parameter declaration
    [C++ Error] Unit1.cpp(18): E2141 Declaration syntax error
    [C++ Error] Unit1.cpp(35): E2303 Type name expected
    [C++ Error] Unit1.cpp(35): E2139 Declaration missing ;
    [C++ Error] Unit1.cpp(45): E2034 Cannot convert 'TTurniket *' to 'int *'
    [C++ Error] Unit1.cpp(45): E2340 Type mismatch in parameter 1 (wanted 'int *', got 'TTurniket *')
    [C++ Error] Unit1.cpp(71): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(71): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(72): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(73): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Warning] Unit1.cpp(82): W8070 Function should return a value
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Сравнивай что я написал и как ты исправил.

    Добавлено:
     
  7. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Да я понял, исправил, но всё равно ошибки

    Код (C++):
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>


    int Random(int, int);
    int add_pos(TTurniket *[], int, int, int)

    class TZriteli
    {
    public:
    int Status;
    int Time_In_Ochered;
    };

    class TTurniket
    {
    public:
    bool Status;
    int Time_Obsl;
    int Time_ObslChel;
    int Kol_Zayavok;
    int Time_Work;
    int Time_Prostoy;
    int Dlinna_Ocheredi;
    TZriteli *Masiv_Zriteley[100];
    };

    void main()
    {
    clrscr();
    int Kolvo_Zriteley;
    int Kolvo_Turniketov=10;
    TTurniket Turn_Mas[10];
    int Ochered_Max=0;
    add_pos(Turn_Mas, Kolvo_Turniketov, Kolvo_Zriteley,Ochered_Max);
    cout<<"******";
    getch();

    }

    int add_pos(TTurniket *Turn_Mas[], int Kolvo_Turniketov, int Kolvo_Zriteley, int Ochered_Max)// Dobavlenie Posetitela v o4ered
    {
    int min, min_i, i;
    min=Turn_Mas[1]->Dlinna_Ocheredi;
    min_i=1;
    for(i=2; i<=Kolvo_Turniketov; i++)
    {
    if(Turn_Mas[i]->Dlinna_Ocheredi<min)
    {
    min=Turn_Mas[i]->Dlinna_Ocheredi;
    min_i=i;
    }
    }
    Turn_Mas[min_i]->Dlinna_Ocheredi++;
    if(Turn_Mas[min_i]->Dlinna_Ocheredi>Ochered_Max)
    {
    Ochered_Max=Turn_Mas[min_i]->Dlinna_Ocheredi;
    }

    for(i=Turn_Mas[min_i]->Dlinna_Ocheredi; i<=2; i++)
    Turn_Mas[min_i]->Masiv_Zriteley[i]=Turn_Mas[min_i]->Masiv_Zriteley[i-1];
    Turn_Mas[min_i]->Masiv_Zriteley[1]->Status=1;
    Turn_Mas[min_i]->Masiv_Zriteley[1]->Time_In_Ochered=0;

    if(Turn_Mas[min_i]->Status==False)
    {
    //  Turn_Mas[min_i]->Time_Obsl=Random(Obslug_Min, Obslug_Max);
    Turn_Mas[min_i]->Status=True;
    Kolvo_Zriteley++;
    }

    }

    int Random(int minr, int maxr)
    {
    return minr+rand()%(maxr-minr+1);
    }
    Ошибки:
    [C++ Error] Unit1.cpp(17): E2147 'TTurniket' cannot start a parameter declaration
    [C++ Error] Unit1.cpp(19): E2141 Declaration syntax error
    [C++ Error] Unit1.cpp(36): E2303 Type name expected
    [C++ Error] Unit1.cpp(36): E2139 Declaration missing ;
    [C++ Error] Unit1.cpp(46): E2034 Cannot convert 'TTurniket *' to 'int * *'
    [C++ Error] Unit1.cpp(46): E2340 Type mismatch in parameter 1 (wanted 'int * *', got 'TTurniket *')
    [C++ Error] Unit1.cpp(72): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(72): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(73): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Error] Unit1.cpp(74): E2316 'Masiv_Zriteley' is not a member of 'TTurniket'
    [C++ Warning] Unit1.cpp(83): W8070 Function should return a value
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    :welcome: точка с запятой в прототипе где?
     
  9. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Виноват исправил...


    ошибки:
    [C++ Error] Unit1.cpp(17): E2147 'TTurniket' cannot start a parameter declaration
    [C++ Error] Unit1.cpp(46): E2034 Cannot convert 'TTurniket *' to 'int * *'
    [C++ Error] Unit1.cpp(46): E2340 Type mismatch in parameter 1 (wanted 'int * *', got 'TTurniket *')
    [C++ Warning] Unit1.cpp(83): W8070 Function should return a value
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Я что-то тут по-внимательней присмотрелся... Она у тебя вся не правильная. Сейчас подумаю...
     
  11. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Если можешь, помоги, я уже не первый день пытаюсь её исправить:welcome:
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Мне кажется проще новую написать чем исправить эту... Даже если массив передать то она работать не будет. Что она вообще должна делать?
     
  13. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    По сути она добавляет человека в очередь и делает его первым в очереди, но это так в кратце:welcome:
    Вобще она должна работать так как переделывал её с примера
     
  14. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Кидай пример. Буду думать завтра с утра...
     
  15. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Вот пример, только он на Delphi.

    В примере это процедура Add_G
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Пример"</div></div><div class="sp-body"><div class="sp-content">Procedure TForm1. Show_Report;
    Var
    I: Integer;
    Begin
    If Form3. CheckBox1. Checked=true
    then begin
    Memo1. Clear;
    Form4. Memo1. Clear;
    end;
    if Form3. RadioButton2. Checked=true then
    BEGIN
    For i: =1 to Turn_Count Do
    Turnikets . Lab. Free;
    Memo1. Lines. Add ('Эксперимент №: '+IntToStr (Eksp));
    Memo1. Lines. Add ('Общее время моделирования: '+IntToStr (Time));
    Memo1. Lines. Add ('Прошло зрителей: '+IntToStr (Count_Of_F_People));
    Memo1. Lines. Add ('Из них гостей: '+ IntToStr (G_Count));
    Memo1. Lines. Add ('Максимальная длина очереди: '+IntToStr (Max_Queue));
    Memo1. Lines. Add ('Средняя длина очереди: '+FloatToStrF (AverageQueue,ffFixed,2,2));
    Memo1. Lines. Add (' ');
    Memo1. Lines. Add ('Количество заявок');
    For i: =1 to Turn_Count Do
    Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Zayavki));
    Memo1. Lines. Add (' ');
    Memo1. Lines. Add ('Время работы');
    For i: =1 to Turn_Count Do
    Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Rabota));
    Memo1. Lines. Add (' ');
    Memo1. Lines. Add ('Время простоя');
    For i: =1 to Turn_Count Do
    Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Prostoy));
    Memo1. Lines. Add ('***********************************');
    Memo1. Lines. Add (' ');
    Memo1. Visible: =True;
    Memo1. ReadOnly: =True;
    END
    else // вывод в отдельном окне
    BEGIN
    Form4. Show;
    For i: =1 to Turn_Count Do
    Turnikets . Lab. Free;
    Form4. Memo1. Lines. Add ('Эксперимент №: '+IntToStr (Eksp));
    Form4. Memo1. Lines. Add ('Общее время моделирования: '+IntToStr (Time));
    Form4. Memo1. Lines. Add ('Прошло зрителей: '+IntToStr (Count_Of_F_People));
    Form4. Memo1. Lines. Add ('Из них гостей: '+ IntToStr (G_Count));
    Form4. Memo1. Lines. Add ('Максимальная длина очереди: '+IntToStr (Max_Queue));
    Form4. Memo1. Lines. Add ('Средняя длина очереди: '+FloatToStrF (AverageQueue,ffFixed,2,2));
    Form4. Memo1. Lines. Add (' ');
    Form4. Memo1. Lines. Add ('Количество заявок');
    For i: =1 to Turn_Count Do
    Form4. Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Zayavki));
    Form4. Memo1. Lines. Add (' ');
    Form4. Memo1. Lines. Add ('Время работы');
    For i: =1 to Turn_Count Do
    Form4. Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Rabota));
    Form4. Memo1. Lines. Add (' ');
    Form4. Memo1. Lines. Add ('Время простоя');
    For i: =1 to Turn_Count Do
    Form4. Memo1. Lines. Add ('Турникет №'+IntToStr (I) +': '+IntToStr (Turnikets . Prostoy));
    Form4. Memo1. Lines. Add ('***********************************');
    Form4. Memo1. Lines. Add (' ');
    Form4. Memo1. Visible: =True;
    Form4. Memo1. ReadOnly: =True;
    END;
    End;
    Procedure TForm1. Add_G;
    Var
    i, Min,Min_i: Integer;
    Begin
    Min: =Turnikets [1]. Queue_Len;
    Min_i: =1;
    For i: =2 To Turn_Count Do
    Begin
    if Turnikets . Queue_Len<Min Then
    Begin
    Min: =Turnikets . Queue_Len;
    Min_i: =i;
    End;
    End;
    Inc (Turnikets [Min_i]. Queue_Len);
    If Turnikets [Min_i]. Queue_Len>Max_Queue Then Max_Queue: =Turnikets [Min_i]. Queue_Len;
    For i: =Turnikets [Min_i]. Queue_Len DownTo 2 do
    Begin
    Turnikets [Min_i]. Queue : =Turnikets [Min_i]. Queue [i-1] ;
    End;
    Turnikets [Min_i]. Queue [1]. Status: =1; // 1-ый в очереди
    Turnikets [Min_i]. Queue [1]. T_in_Queue: =0;
    if Turnikets [Min_i]. Status=False Then
    Turnikets [Min_i]. R_Obsl: =TimeRandom (G_ServeMin,G_ServeMax);
    Turnikets [Min_i]. Status: =True;
    Inc (G_Count);
    End;
    Procedure TForm1. Add_4el;
    Var
    i, Min,Min_i: Integer;
    Begin
    Min: =Turnikets [1]. Queue_Len;
    Min_i: =1;
    For i: =2 To Turn_Count Do
    Begin
    if Turnikets . Queue_Len<Min Then
    Begin
    Min: =Turnikets . Queue_Len;
    Min_i: =i;
    End;
    End;
    Inc (Turnikets [Min_i]. Queue_Len);
    If Turnikets [Min_i]. Queue_Len>Max_Queue Then Max_Queue: =Turnikets [Min_i]. Queue_Len;
    Turnikets [Min_i]. Queue [Turnikets [Min_i]. Queue_Len]. Status: =0;
    Turnikets [Min_i]. Queue [Turnikets [Min_i]. Queue_Len]. T_in_Queue: =0;
    if Turnikets [Min_i]. Status=False Then
    Turnikets [Min_i]. R_Obsl: =TimeRandom (ServeMin,ServeMax);
    Turnikets [Min_i]. Status: =True;
    End;
    Function TForm1. TimeRandom;
    Begin
    Result: =Random (Max-Min+1) +Min;
    End;
    Procedure TForm1. Refresh;
    Var
    I: Integer;
    Begin
    For i: = 1 to Ap_Cnt do
    Begin
    Turnikets . Queue_Len: =0;
    Turnikets . T_Obsl: =0;
    Turnikets . R_Obsl: =0;
    Turnikets . Status: =False;
    Turnikets . Zayavki: =0;
    Turnikets . Rabota: =0;
    Turnikets . Prostoy: =0;
    Turnikets [i]. Lab: =TLabel. Create (PageControl1);
    Turnikets [i]. Lab. Left: =7;
    Turnikets [i]. Lab. Top: =140+i*20;
    (PageControl1 as TPageControl). Pages [0]. InsertControl (Turnikets [i]. Lab);
    End;
    End;
    Function TForm1. Zna4_Read;
    Var
    Zn: Integer;
    Begin
    Try
    Zn: =StrToInt (ET. Text);
    Except
    ShowMessage ('Значение поля некорректно!!! ');
    End;
    if Zn<Min Then Zn: =Min;
    if Zn>Max Then Zn: =Max;
    ET. Text: =IntToStr (Zn);
    Result: =Zn;
    End;
    procedure TForm1. Timer1Timer (Sender: TObject);
    Var
    I,J: Integer;
    // s: string;
    begin
    Chart1. Series [0]. Clear;
    Inc (Time);
    Label17. Caption: ='Время моделировния '+IntToStr (Time);
    Inc (Time_4el);
    Inc (Time_Guest);
    inc (k);
    // kartinka
    if (k=100) and (change=true) then
    begin
    inc (kartinka);
    Image1. Picture. LoadFromFile (s+inttostr (kartinka) +'. jpg');
    k: =0;
    if kartinka=11 then
    kartinka: =1;
    end;
    if Time_4el=Random_4el Then // Зритель пришел
    Begin
    Add_4el;
    Random_4el: =TimeRandom (ComeMin,ComeMax);
    Time_4el: =0;
    End;
    if Time_Guest=Random_Guest Then // Гость пришел
    Begin
    Add_G;
    Random_Guest: =TimeRandom (G_ComeMin,G_ComeMax);
    Time_Guest: =0;
    End;
    For I: =1 to Turn_Count Do
    Begin
    Full_Queue_Len: =Full_Queue_Len+Turnikets [i]. Queue_Len;
    If Turnikets [i]. Status Then
    Begin
    Inc (Turnikets [i]. Rabota);
    Turnikets [i]. Lab. Caption: ='ТУРНИКЕТ №'+IntToStr (i) +' занят ';
    Turnikets [i]. Lab. Caption: =Turnikets [i]. Lab. Caption+' '+'Очередь '+IntToStr (Turnikets [i]. Queue_Len-1);
    End
    Else
    Begin
    Inc (Turnikets [i]. Prostoy);
    Turnikets [i]. Lab. Caption: ='ТУРНИКЕТ №'+IntToStr (i) +' свободен ';
    Turnikets [i]. Lab. Caption: =Turnikets [i]. Lab. Caption+' '+'Очередь '+IntToStr (Turnikets [i]. Queue_Len);
    End;
    If Turnikets [i]. Status Then
    Begin
    Inc (Turnikets [i]. T_Obsl);
    If Turnikets [i]. T_Obsl=Turnikets [i]. R_Obsl Then // Закончено время обслуживания
    Begin
    Inc (Turnikets [i]. Zayavki);
    Turnikets [i]. T_Obsl: =0;
    Inc (Count_Of_F_People);
    Dec (Turnikets [i]. Queue_Len);
    For J: =1 To Turnikets [i]. Queue_Len Do
    Turnikets [i]. Queue [j]: =Turnikets [i]. Queue [j+1] ;
    if Turnikets [i]. Queue_Len=0 Then // больше никого нет. Ожидание
    Begin
    Turnikets [i]. Status: =False;
    Turnikets [i]. R_Obsl: =0;
    End
    Else
    Begin
    If Turnikets [i]. Queue [1]. Status=0 Then
    Begin
    Turnikets [i]. R_Obsl: =TimeRandom (ServeMin,ServeMax);
    End
    Else
    Begin
    Turnikets [i]. R_Obsl: =TimeRandom (G_ServeMin,G_ServeMax);
    End;
    End;
    End;
    End;
    Chart1. Series [0]. Add (turnikets [i]. Zayavki,'');
    if Edit12. Visible=true then
    ProgressBar1. Position: =Time;
    End;
    If ( (Edit12. Visible=true) and (Time=SetTime)) or // КОНЕЦ!!!
    (Count_Of_F_People=People_Count) Then
    Begin
    Timer1. Enabled: =False;
    Button2. Enabled: =false;
    ToolButton1. Enabled: =false;
    ToolButton2. Enabled: =true; // Save
    N21. Enabled: =true;
    Button3. Enabled: =true;
    AverageQueue: =Full_Queue_Len/ (Time*Turn_Count);
    Show_Report;
    End;
    Label_Count_4el. Font. Color: =ClBlue;
    Label_Count_4el. Caption: ='Прошло человек '+IntToStr (Count_Of_F_People);
    end;
    procedure TForm1. FormCreate (Sender: TObject);
    begin
    Randomize;
    Time: =0;
    G_Count: =0;
    Turn_Count: =0;
    Count_Of_F_People: =0;
    Max_Queue: =0;
    Full_Queue_Len: =0;
    AverageQueue: =0;
    Time_4el: =0;
    Random_4el: =0;
    Time_Guest: =0;
    Random_Guest: =0;
    PageControl1. Pages [1]. TabVisible: =false;
    PageControl1. TabIndex: =0;
    end;
    procedure TForm1. MenuItem4Click (Sender: TObject);
    begin
    Close;
    end;
    procedure TForm1. ToolButton3Click (Sender: TObject);
    begin
    Close;
    end;
    procedure TForm1. N1Click (Sender: TObject);
    begin
    Change: =true;
    N1. Checked: =true;
    N1. Default: =true;
    N2. Checked: =false;
    N2. Default: =false;
    end;
    procedure TForm1. N2Click (Sender: TObject);
    begin
    change: =false;
    N2. Checked: =true;
    N2. Default: =true;
    N1. Checked: =false;
    N1. Default: =false;
    end;
    procedure TForm1. CheckBox1Click (Sender: TObject);
    begin
    if CheckBox1. Checked=true
    then
    begin
    Edit12. Visible: =true;
    ComboBox1. Visible: =true;
    end
    else
    begin
    Edit12. Visible: =false;
    ComboBox1. Visible: =false;
    end;
    end;
    procedure TForm1. Na4aloExecute (Sender: TObject);
    begin
    Inc (Eksp);
    FormCreate (Button1. NewInstance);
    ComeMin: =Zna4_READ (Edit2,1, 20);
    ComeMax: =Zna4_Read (Edit3,ComeMin,ComeMin+50);
    ServeMin: =Zna4_READ (Edit4,1, 20);
    ServeMax: =Zna4_Read (Edit5,ServeMin,ServeMin+50);
    G_ComeMin: =Zna4_READ (Edit6,1, 200);
    G_ComeMax: =Zna4_Read (Edit7,ComeMin,ComeMin+200);
    G_ServeMin: =Zna4_READ (Edit9,1,100);
    G_ServeMax: =Zna4_Read (Edit8,ServeMin,ServeMin+100);
    Turn_Count: =Zna4_Read (Edit10,1,100);
    People_Count: =Zna4_Read (Edit1,10,10000);
    Speed: =Zna4_Read (Edit11,1,1000);
    Timer1. Interval: =1000 div Speed;
    Refresh (Turn_Count);
    Random_4el: =TimeRandom (ComeMin,ComeMax);
    Random_Guest: =TimeRandom (G_ComeMin,G_ComeMax);
    Timer1. Enabled: =True;
    change: =true;
    if Edit12. Visible=true then
    begin
    if ComboBox1. ItemIndex=0 then
    SetTime: =Zna4_READ (Edit12,10,43200);
    if ComboBox1. ItemIndex=1 then
    SetTime: =Zna4_READ (Edit12,1,720) *60;
    if ComboBox1. ItemIndex=2 then
    SetTime: =Zna4_READ (Edit12,1,12) *3600;
    end;
    ProgressBar1. Position: =0;
    if Edit12. Visible=true then
    ProgressBar1. Max: =SetTime
    else
    ProgressBar1. Max: =0;
    ToolButton2. Enabled: =false;
    Button3. Enabled: =false;
    N21. Enabled: =false;
    ToolButton1. Enabled: =true;
    Button2. Enabled: =true;
    end;
    procedure TForm1. StopExecute (Sender: TObject);
    begin
    Timer1. Enabled: =false;
    show_report;
    ToolButton2. Enabled: =true;
    Button3. Enabled: =true;
    N21. Enabled: =true;
    ToolButton1. Enabled: =false;
    Button2. Enabled: =false;
    end;
    procedure TForm1. MenuItem11Click (Sender: TObject);
    begin
    Form2. Show;
    end;
    procedure TForm1. SaveExecute (Sender: TObject);
    begin
    If SaveDialog1. Execute then
    Memo1. Lines. SaveToFile (SaveDialog1. FileName);
    end;
    procedure TForm1. createExecute (Sender: TObject);
    var
    i: byte;
    begin
    if Button2. Enabled=true then
    for i: =1 to Turn_Count do
    Turnikets [i]. Lab. Free;
    // Turnikets [i]. Lab. Caption: ='';
    Label17. Caption: ='';
    Label_Count_4el. Caption: ='';
    Randomize;
    Time: =0;
    G_Count: =0;
    Turn_Count: =0;
    Count_Of_F_People: =0;
    Max_Queue: =0;
    Full_Queue_Len: =0;
    AverageQueue: =0;
    Time_4el: =0;
    Random_4el: =0;
    Time_Guest: =0;
    Random_Guest: =0;
    Refresh (Turn_Count);
    Timer1. Enabled: =false;
    for i: =1 to Turn_Count do
    Turnikets [i]. Lab. Visible: =false;
    ProgressBar1. Position: =0;
    Chart1. Series [0]. Clear;
    end;
    procedure TForm1. SpeedButton1Click (Sender: TObject);
    begin
    PageControl1. Pages [1]. TabVisible: =false;
    PageControl1. ActivePage: =PageControl1. Pages [0] ;
    end;
    procedure TForm1. SettingsExecute (Sender: TObject);
    begin
    Form3. Show;
    end;
    procedure TForm1. VisibleSettingsExecute (Sender: TObject);
    begin
    PageControl1. Pages [1]. TabVisible: =true;
    PageControl1. TabIndex: =1;
    end;
    procedure TForm1. FormShow (Sender: TObject);
    begin
    s: =GetCurrentDir+'\';
    end;
    procedure TForm1. HelpExecute (Sender: TObject);
    begin
    winhelp (Form1. Handle,'справка. hlp',help_context,1);
    end;
    end.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
     
  16. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Что-то тут слишком муторно все. В общем покопай в сторону двусвязных списков. Классы тебе тут вообще не нужны как я понял, используй структуры. И не забудь инициализировать Turn_Mas[10] и остальные переменные.
     
  17. GladiatoR24

    GladiatoR24 Гость

    Репутация:
    0
    Спасибо за помочь, думаю разберусь:)
     
Загрузка...
Похожие Темы - Проблема передачей массива
  1. lemuriez
    Ответов:
    25
    Просмотров:
    4.328
  2. _alexis_
    Ответов:
    4
    Просмотров:
    71
  3. Lisenok
    Ответов:
    19
    Просмотров:
    258
  4. thunder
    Ответов:
    1
    Просмотров:
    119
  5. SevenEight
    Ответов:
    0
    Просмотров:
    117
Статус темы:
Закрыта.

Поделиться этой страницей