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


Groups > pl.comp.programming > #28617

Re: Matching - rozszerzone porównanie dwóch posortowanych list

From Borneq <borneq@antyspam.hidden.pl>
Newsgroups pl.comp.programming
Subject Re: Matching - rozszerzone porównanie dwóch posortowanych list
Date 2016-05-20 19:14 +0200
Organization ATMAN - ATM S.A.
Message-ID <nhngm6$p2c$1@node2.news.atman.pl> (permalink)
References <nhn4f9$d67$1@node2.news.atman.pl> <nhn9j8$i1r$1@node2.news.atman.pl> <41188837-396f-41ff-983d-fd516cb6bd3e@googlegroups.com> <nhnc15$khu$1@node2.news.atman.pl>

Show all headers | View raw


W dniu 20.05.2016 o 17:55, Borneq pisze:
> Zrobiłem tak:
>     while (i1 < vecA.size() && i2 < vecB.size())

Ale potrzebne wersja strumieniowa, która jednak się różni, bo każdy 
odczyt ze strumienia oznacza zwiększenie indeksu.
Potrzebne flagi , czy bufor aktualny czy pusty.

	int i1 = 0, i2 = 0;
	int valueBoth = 0;
	bool lastBoth = false;
	int recA; int recB;
	bool recAEmpty = true;//get ustawia na false, odczyt z bufora na true
	bool recBEmpty = true;
	while ((i1 < vecA.size() || !recAEmpty) && (i2 < vecB.size() || 
!recBEmpty) )
	{
		if (recAEmpty)
		{
			recA = vecA[i1]; i1++;
			recAEmpty = false;
		}
		if (recBEmpty)
		{
			recB = vecB[i2]; i2++;
			recBEmpty = false;
		}
		if (recA < recB)
		{
			if (lastBoth)
			{
				if (recA == valueBoth)
					printf("match - pierwsza lista %d\n", recA);
				else
					lastBoth = false;
			}
			recAEmpty = true;
		}
		else if (recA > recB)
		{
			if (lastBoth)
			{
				if (recB == valueBoth)
					printf("match - druga lista %d\n", recB);
				else
					lastBoth = false;
			}
			recBEmpty = true;
		}
		else
		{
			printf("match - dwie listy %d\n", recA);
			valueBoth = recA;
			lastBoth = true;
			recAEmpty = true;
			recBEmpty = true;
		}
	}
	printf("dokończenie A\n");
	while (i1 < vecA.size())
	{
		
		recA = vecA[i1]; i1++;		
		if (lastBoth)
		{
			if (recA == valueBoth)
				printf("match - pierwsza lista %d\n", recA);
			else
				lastBoth = false;
		}
		i1++;
	}
	printf("dokonczenie B\n");
	while (i2 < vecB.size())
	{
		recB = vecA[i2]; i2++;
		if (lastBoth)
		{
			if (recB == valueBoth)
				printf("match - druga lista %d\n", recB);
			else
				lastBoth = false;
		}
		i2++;
	}

Back to pl.comp.programming | Previous | Next — Previous in thread | 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