"представление множеств в памяти ЭВМ"
Добавлено: 26 янв 2010, 23:32
Здравствуйте.
есть такая задачка:
написать программу, которая по заданным множествам А, B, С, D десятичных цифр вычисляет множество(E), содержащее все цифры множества А, за исключением цифр из B и из С, а так же все цифры множества D. Измерить время решения задачи..
всё работает кроме самого главного: множество Е не вычисляется((..
помогите плиз найти ошибку...
вот текст программы:
есть такая задачка:
написать программу, которая по заданным множествам А, B, С, D десятичных цифр вычисляет множество(E), содержащее все цифры множества А, за исключением цифр из B и из С, а так же все цифры множества D. Измерить время решения задачи..
всё работает кроме самого главного: множество Е не вычисляется((..
помогите плиз найти ошибку...
вот текст программы:
Код: Выделить всё
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <time.h>
//********************** struct type ******************
typedef struct l
{
int z;
struct l *next;
}BASE;
//********************** vvod ************************
BASE* vvod()
{
BASE *work=NULL,*h=NULL;
int i,s;
scanf("%d",&s);
work=(BASE*)malloc(sizeof(BASE));
work->next=h;
h=work;
work->z=s;
return work;
}
//********************* vivod ************************
void vivod (BASE *work)
{
printf("\n");
do
{
printf("%d",work->z);
work=work->next;
}
while(work!=NULL);
}
//*********************** free ***********************
BASE* osvob (BASE *sp)
{
BASE *g;
do
{
g=sp;
sp=sp->next;
free(g);
}
while(sp!=NULL);
return sp;
}
//*********************** main ***********************
void main(void)
{
BASE *a,*b,*c,*d,*a1,*c1,*b1,*d1,*e=NULL,*h=NULL;
int fl1,fl2;
long kh;
clock_t start, end;
clrscr();
puts("vvedite mnogestvo A:\n");
a1=a=vvod();
puts("\nvvedite mnogestvo B:\n");
b1=b=vvod();
puts("\nvvedite mnyuogestvo C:\n");
c1=c=vvod();
puts("\nvvedite mnogestvo D:\n");
d1=d=vvod();
start=clock();
for(kh=0;kh<1000 ;kh++)
{
if(e!=NULL)
{
e=osvob(e);
h=NULL;
}
d=d1;
do
{
fl2=1;
if(fl1)
{
do
{
if(a->z==b->z)
fl2=0;
a=a->next;
}
while(fl2&&a!=NULL);
if(fl2)
{
do
{
if(a->z==c->z)
fl2=0;
b=b->next;
}
while(fl2&&b!=NULL);
}
}
a=a1;
b=b1;
c=c1;
if(fl2==0)
{
e=(BASE*)malloc(sizeof(BASE));
e->next=h;
h=e;
e->z=a->z;
}
d=d->next;
}
while(d!=NULL);
}
end=clock();
puts("\npoluchivsheesa mnogestvo:\n");
if(e!=NULL)
vivod(e);
else
puts("net podhodashih elementov");
printf("\n\nThe time was: %f\n", (end - start) / CLK_TCK);
getch();
}