Здравствуйте! Посмотрите, пожалуйста, программу. Выдает ошибку, пересекать множества отказывается.
"Пересечение множеств
Time limit = 5 секунд(ы)
Memory limit = 33000 Kb
Вход — два множества натуральных чисел.
Выход — их пересечение (перечисление элементов через пробел в любом порядке без повторений) или слово empty, если пересечение пусто.
Множества
и
на входе представлены как последовательности натуральных чисел, разделенных пробелом, и завершающиеся числом
— идентификатором конца. Возможны повторения элементов, которые надо исключить. Размеры множеств меньше
. Сами числа меньше
. "
// Пересечение множеств.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
int a[1001], b[1001], c[1001];
int x,y,i,k,p,z,m;
x=0; y=0;
do
{
x=x+1; scanf("%d", &a[x]);
}while(a[x]>0); x=x-1;
do
{
y=y+1; scanf("%d", &b[y]);
}while(b[y]>0); y=y-1;
p=0;
for(i=1; i<x+y+1; y++)
{
c[i]=0;
}
for(i=1; i<x+1; i++)
{
for (k=1; k<y+1; k++)
{
if (b[k]==a[i])
{
m=1;
for (z=1; z<p+1; z++)
{
if (c[z]==b[k])
{
m=0;
}
}
if (m==1)
{
p=p+1;
c[p]=b[k];
}
}
}
}
for (i=1; i<p+1; i++);
{
printf("%d", c[i]); printf(" ");
}
getchar(); getchar();
return 0;
}
Программа простая, даже обидно:) Видимо, еще не разобрался в тонкостях языка. Спасибо!