Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28613

Matching - rozszerzone porównanie dwóch posortowanych list

Path csiph.com!news.mixmin.net!news.unit0.net!news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From Borneq <borneq@antyspam.hidden.pl>
Newsgroups pl.comp.programming
Subject Matching - rozszerzone porównanie dwóch posortowanych list
Date Fri, 20 May 2016 15:46:17 +0200
Organization ATMAN - ATM S.A.
Lines 58
Message-ID <nhn4f9$d67$1@node2.news.atman.pl> (permalink)
NNTP-Posting-Host 91.239.205.105
Mime-Version 1.0
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 8bit
X-Trace node2.news.atman.pl 1463751977 13511 91.239.205.105 (20 May 2016 13:46:17 GMT)
X-Complaints-To usenet@atman.pl
NNTP-Posting-Date Fri, 20 May 2016 13:46:17 +0000 (UTC)
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0
X-Mozilla-News-Host news://news.atman.pl:119
Xref csiph.com pl.comp.programming:28613

Show key headers only | View raw


Mam fazę przygotowania:
	vector<int> vecA;
	vector<int> vecB;
	srand(1000);
	for (int i = 0; i < 16; i++) vecA.push_back(rand() % 20);
	for (int i = 0; i < 12; i++) vecB.push_back(rand() % 20);
	sort(vecA.begin(), vecA.end());
	sort(vecB.begin(), vecB.end());

Algorytm:
int i1 = 0, i2 = 0;
	while (i1 < vecA.size() && i2 < vecB.size())
	{
		if (vecA[i1] < vecB[i2])
		{
			printf("w pierwszym %d\n", vecA[i1]);
			i1++;
		}
		else if (vecA[i1] > vecB[i2])
		{			
			printf("w drugim %d\n", vecB[i2]);
			i2++;
		}
		else
		{
			printf("w obu %d\n", vecA[i1]);
			i1++;
			i2++;
		}
	}
	printf("dokończenie A\n");
	while (i1 < vecA.size())
	{		
		printf("w pierwszym %d\n", vecA[i1]);
		i1++;
	}
	printf("dokończenie B\n");
	while (i2 < vecB.size())
	{
		printf("w drugim %d\n", vecB[i2]);
		i1++;
	}

Dobre do porównywania czy w obu katalogach te same pliki na przykład, 
ale: gdy mamy: 0 0 1 2 4 4 7 oraz 1 4 5 5 6 8
to wtedy wypisze:
w pierwszym 2
w obu 4
w pierwszym 4
w drugim 5

pierwszą czwórkę kwalifikując do "w obu", drugą do "w pierwszym", a mi 
tym razem chodzi o to by wypisywać tylko w obu, wszystkie powtarzające 
się elementy, czyli ma wypisać:
w obu 4
w obu 4

Jak należy zmodyfikować algorytm?

Back to pl.comp.programming | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Matching - rozszerzone porównanie dwóch posortowanych list Borneq <borneq@antyspam.hidden.pl> - 2016-05-20 15:46 +0200
  Re: Matching - rozszerzone porównanie dwóch posortowanych list Borneq <borneq@antyspam.hidden.pl> - 2016-05-20 17:13 +0200
    Re: Matching - rozszerzone porównanie dwóch posortowanych list "M.M." <mmarszik@gmail.com> - 2016-05-20 08:20 -0700
      Re: Matching - rozszerzone porównanie dwóch posortowanych list Borneq <borneq@antyspam.hidden.pl> - 2016-05-20 17:55 +0200
        Re: Matching - rozszerzone porównanie dwóch posortowanych list Borneq <borneq@antyspam.hidden.pl> - 2016-05-20 19:14 +0200
          Re: Matching - rozszerzone porównanie dwóch posortowanych list "M.M." <mmarszik@gmail.com> - 2016-05-20 13:18 -0700

csiph-web