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

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

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

    GladiatoR24 Гость

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

    Код (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

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

    GladiatoR24 Гость

    Нужно передать массив 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

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    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 Гость

    Вот что получилось:
    Код (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

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

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

    GladiatoR24 Гость

    Да я понял, исправил, но всё равно ошибки

    Код (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

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

    GladiatoR24 Гость

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


    ошибки:
    [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

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

    GladiatoR24 Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

    GladiatoR24 Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

    GladiatoR24 Гость

    Вот пример, только он на 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

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

    GladiatoR24 Гость

    Спасибо за помочь, думаю разберусь:)
     
Загрузка...
Похожие Темы - Проблема передачей массива
  1. lemuriez
    Ответов:
    25
    Просмотров:
    4.072
  2. AgniXRudra
    Ответов:
    0
    Просмотров:
    0
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    12
  4. c0de3r
    Ответов:
    5
    Просмотров:
    134
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    139
Статус темы:
Закрыта.

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