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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 20:23   #1
GladiatoR24
 
Регистрация: 08.05.2010
Сообщений: 4
По умолчанию Передача массива в функцию

Подскажите что я неправильно описал Не как не могу передать массив в функцию.

Код:
#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);
}
GladiatoR24 вне форума Ответить с цитированием
Старый 24.11.2010, 20:50   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Передаете вы все правильно, но:
Код:
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; // Turn_Mas[1]->Dlinna_Ocheredi
	// ...
Turn_Mas - это массив указателей TTurniket*, соответственно Turn_Mas[1] - указатель, а вы используете оператор прямого доступа к члену ('.'), надо '->'.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 24.11.2010, 21:13   #3
GladiatoR24
 
Регистрация: 08.05.2010
Сообщений: 4
По умолчанию

вот что получилось:

Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int Random(int, int);
int add_pos(TTurniket*, Kolvo_Turniketov, Kolvo_Zriteley, 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);
}
Ошибки компилятора:
[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
GladiatoR24 вне форума Ответить с цитированием
Старый 24.11.2010, 22:51   #4
GladiatoR24
 
Регистрация: 08.05.2010
Сообщений: 4
По умолчанию

Исправил, свел до 4 ошибок
Вот ошибки:
[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

Код программы:

Код:
#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);
}
GladiatoR24 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача двумерного массива в функцию StudentPolitech Общие вопросы .NET 9 30.10.2010 22:20
Си++. Передача массива в функцию. Diamond2107 Помощь студентам 7 03.12.2009 20:15
Передача массива в функцию D[I]K Общие вопросы C/C++ 4 13.09.2009 21:31
передача массива в функцию JOFRIF Общие вопросы C/C++ 8 02.08.2009 12:46
Передача массива в функцию Vistar Общие вопросы C/C++ 1 27.04.2009 08:08