Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

563645 views
1
#include "defs.h"
2
3
# define NPT 2000
4
int npt,perm[NPT+1],had[NPT+1];
5
FILE *fopen(),*op;
6
7
int
8
main (int argc, char *argv[])
9
{ int arg,nb,nperms,i,j,k,l,n; char cyc,outf[80],err; int c;
10
/* Default outf=gpname.inperm */
11
err=0; arg=1; if (argc<=arg) {err=1; goto error;}
12
strcpy(outf,argv[arg]); strcat(outf,".");
13
arg++; if (argc<=arg) strcat(outf,"inperm"); else strcat(outf,argv[arg]);
14
op=fopen(outf,"w");
15
printf("Input npt, nperms, init. nb.\n");
16
scanf("%d%d%d",&npt,&nperms,&nb);
17
if (npt>NPT)
18
{ fprintf(stderr,"npt too big. Increase NPT.\n"); exit(1);}
19
fprintf(op,"%4d%4d%4d%4d\n",npt,nperms,nb,0);
20
if (nb!=0)
21
{ printf("Input initial base points.\n");
22
for (i=1;i<=npt;i++) had[i]=0;
23
for (i=1;i<=nb;i++)
24
{ scanf("%d",&n);
25
if (n<=0 || n>npt || had[n])
26
{ fprintf(stderr,"Invalid or repeated base point %d\n",n); exit(1);}
27
perm[i]=n; had[n]=1;
28
}
29
if (npt>=1000)
30
{ for (i=1;i<=nb;i++) fprintf(op,"%5d",perm[i]); fprintf(op,"\n");}
31
else
32
{ for (i=1;i<=nb;i++) fprintf(op,"%4d",perm[i]); fprintf(op,"\n");}
33
}
34
printf("Now input perms in cyclic not'n. End each perm with a '.'.\n");
35
for (i=1;i<=nperms;i++)
36
{ for (j=1;j<=npt;j++) { perm[j]=j; had[j]=0;}
37
while ((c=getchar()) != '.') if (c=='(')
38
{ cyc=1; j=0;
39
while (cyc)
40
{ scanf("%d",&l);
41
if (l<=0 || l>npt || had[l])
42
{ fprintf(stderr,"Invalid or repeated point %d\n",l); exit(1);}
43
had[l]=1;
44
if (j==0) {j=l;k=l;} else {perm[k]=l;k=l;}
45
while ((c=getchar())==' '); if (c==')') {cyc=0; perm[k]=j;}
46
}
47
}
48
if (npt>=1000)
49
{ for (j=1;j<=npt;j++) fprintf(op,"%5d",perm[j]);fprintf(op,"\n");}
50
else
51
{ for (j=1;j<=npt;j++) fprintf(op,"%4d",perm[j]);fprintf(op,"\n");}
52
}
53
error: if (err)
54
{ fprintf(stderr,"Usage makegp gpname [outf].\n"); exit(1);}
55
exit(0);
56
}
57
58