Страница 1 из 1

разбивка по видам спорта(списки)

Добавлено: 14 апр 2010, 18:51
Евгений Александрович
Состав спортивного соревнования с разбивкой по видам спорта. Для фрагмента модели, являющегося одномерным списком, составить модуль формирования нового списка спортсменов, содержащего фамилии каждого второго спортсмена.
Как это можно реализовать?

Код: Выделить всё

struct spis{
char c[20];// вид спорта
int size;
    spis *next;
}*p,*cur,*prev,*top;

void push(int n);
void show();
	
void main()
{
	int n;
	printf("razmer:\n");scanf("%i",&n);
    top=0;
	push(n);
	show();
	getch();
}
void push(int n)
{
printf("Input some sport and size:\n");
for(;n;n--)
{
p=new spis;
printf("[%i]sport and size:\n",n);
scanf("%s",&p->c);
scanf("\n%i",&p->size);
p->next=NULL;
if(top==NULL) top=p;
cur=top;
prev=NULL;
while(cur && p->c > cur->c && p->size>cur->size)
{
prev=cur;
cur=cur->next;
}
if(cur==NULL) prev->next=p;
else if(prev)
{
p->next=cur;
prev->next=p;
}
else
{
top=p;
p->next=top==cur?NULL:cur;
}
}
}
void show()
{
p=top;
if(p==NULL)
printf("\n Spisok is empty\n");
else
printf("\nSpisok^^:\n");
while(p){
printf("%2s %4i\n",p->c,p->size);
p=p->next;
}
}

Re: разбивка по видам спорта(списки)

Добавлено: 14 апр 2010, 19:49
BulldozerBSG
Ну а где же хранятся фамилии?

Re: разбивка по видам спорта(списки)

Добавлено: 14 апр 2010, 21:13
Евгений Александрович
вот теперь. Каждый вид спорта содержит своего представителя. Как быть теперь?

Код: Выделить всё

struct spis{
    char c[20];// вид спорта
	char fio[300];
    spis *next;
}*p,*cur,*prev,*top;

void push(int n);
void show();
int i;
	
void main()
{
	int n;
	printf("razmer:\n");scanf("%i",&n);
    top=0;
	push(n);
	show();
	getch();
}
void push(int n)
{
	printf("Input some sport and size:\n");
	for(;n;n--)
{
	p=new spis;
	printf("[%i]sport :\n",n);
	scanf("%s",&p->c);
	printf("input predstavitelya:\n");
	printf("[%i]fio:\n",n);
	scanf("\n%s",&p->fio);
p->next=NULL;
if(top==NULL) top=p;
cur=top;
prev=NULL;
while(cur && p->c > cur->c && p->fio>cur->fio)
{
	prev=cur;
	cur=cur->next;
}
if(cur==NULL) prev->next=p;
else if(prev)
{
	p->next=cur;
	prev->next=p;
}
else
{
	top=p;
	p->next=top==cur?NULL:cur;
}
}
}
void show()
{
	
	p=top;
	if(p==NULL)
		printf("\n Spisok is empty\n");
	else
		printf("\nSpisok^^:\n");
	while(p){
		
		printf("%2s %4s\n",p->c,p->fio);
			
		p=p->next;
	}
}