Pagini recente » Cod sursa (job #950463) | Cod sursa (job #1836258) | Cod sursa (job #1598219) | Cod sursa (job #2319430) | Cod sursa (job #584894)
Cod sursa(job #584894)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct joc
{
int nr;
joc *next;
};
joc *cap = NULL;
FILE *f,*g;
int insert(int nr);
joc* elimina(joc *e);
void afiseaza(joc *e);
void game();
int main()
{
f = fopen("order.in","r");
if ( f == 0 )
return -1;
g = fopen("order.out","w");
int z,i;
fscanf(f,"%d",&z);
for (i=1;i<=z;i++)
insert(i);
game();
fclose(f);
fclose(g);
return 0;
}
void game()
{
int n,i,k;
joc *p=cap,*p1;
srand ( time(NULL) );
n = 0;
//printf("Start: %d\n",n);
p1 = p;
while ( cap != NULL )
{
n++;
k = n;
if ( n == 1 )
k = k+1;
for (i=0;i<(k-1);i++)
{
p1 = p1->next;
}
p1 = elimina(p1);
}
}
void afiseaza(joc *e)
{
fprintf(g,"%d",e->nr);
}
joc* elimina(joc *e)
{
joc *p,*p1,*l;
if ( e->next == e )
{
afiseaza(e);
//printf("End\n");
free(e);
cap = 0;
return 0;
}
p = cap;
while (1)
{
p1 = p;
p = p->next;
if ( p == e )
{
if ( e == cap )
{
cap = cap->next;
}
p1->next = p->next;
l = p1->next;
afiseaza(e);
fprintf(g," ");
free(e);
return l;
}
}
return 0;
}
int insert(int nr)
{
joc *p,*p1,*in;
in = (joc *)malloc(sizeof(joc));
in->nr = nr;
if ( cap == NULL )
{
cap = in;
in->next = in;
return 1;
}
p = cap;
do
{
p1 = p;
p = p->next;
if ( p == cap )
{
p1->next = in;
in->next = p;
return 1;
}
}
while ( 1 );
return 0;
}