LINUX.ORG.RU

Помогите разобраться


0

0

С языком С начал разбиарться недавно.Возникла следущаяя пробема:
если в функции main объявить структуру

struct airplane
 {
    
 };

потом массив структур

struct airplane masairp[MAXNUMB];

а затем попытаться объявить функцию вида

void initairp(struct airplane mas[],int a,int b,int c);

то компилятор говорит, что struct типа airplane не существует - 
может так нельзя передавать массивы структур?
anonymous

Странно. У меня всё работает.
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char** argv)
{
   struct airplane {
      int a,b,c;
   };
   struct airplane planes[90];
   void f(struct airplane arp[],int t1,int t2, int t3)
   {
      printf("%d\n",arp[0].a);
   }
   planes[0].a=97;
   f(planes,0,0,0);
   exit(0);
}

> 97

seiken ★★★★★
()

typedef struct {

} airplane;

airplane masairp[MAXNUMB];

void initairp(airplane mas[], int a, int b, int c);

legk
()
Ответ на: комментарий от seiken

немного странно - объявлять функции внутри main, вам так не кажется =))

legk
()
Ответ на: комментарий от seiken

Вот мой код

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

#define MAXNUMB 1000
#define MAXSTRNUMB 30

/*Function Section*/
void initairp(struct airplane mas[],int a,int b,int c);

/*------*/
int main(void)
{
 struct airplane
  {
   int gas;
   int time;
   int weight;
   int ground;
   int type;
  };
 struct strip
  {
   int t1,t2,t3;
   int maxweight;
  };
  struct airplane masairp[MAXNUMB];
  struct strip mstrip[MAXSTRNUMB];
  int n,p,m;
  int t1n,t2n,t3n;

  /* Main program */
  clrscr();
  printf("Enter total number of Airplanes\n");
  scanf("%d",&n);
  while( n<3 || n> MAXNUMB)
    n = scanf("%d",&n);
 /*Randomizing t1n,t2n,t3n */
 randomize();
 t1n = 0.5 * n;
 t1n = random(t1n);
 t2n = 0.3 * (n-t1n);
 t2n = random(t2n);
 t3n = n - (t1n + t2n);
 /*--------*/
 initairp(masairp,t1n,t2n,t3n);
 return 0;
}
void initairp(struct airplane mas[],int a,int b,int c)
{
  int i,t,w;
  randomize();
  t = random(500);
  w = random(700) + 1;
  for(i = a;i<b;i++)
   {
     mas[i].gas = random(100) + 1;
     mas[i].time = t;
     mas[i].weight = w;
     mas[i].ground = 0;
     mas[i].type = 1;
   }
  t = random(500);
  w = random(700) + 1;
 for( ;i<a+b;i++){
   mas[i].gas = random(100) + 1;
     mas[i].time = t;
     mas[i].weight = w;
     mas[i].ground = 0;
     mas[i].type = 2;
  }
  t = random(500);
  w = random(700) + 1;
 for( ;i<=a+b+c;i++){
     mas[i].gas = random(100) + 1;
     mas[i].time = t;
     mas[i].weight = w;
     mas[i].ground = 0;
     mas[i].type = 3;
  }
}

не работает :(




anonymous
()
Ответ на: комментарий от anonymous

p.s. "прога" под DOS, поэтому копилятор TC++3.0

anonymous
()
Ответ на: комментарий от legk

legk

я не против критики - где "ужас" ?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.