Wątek przeniesiony 2015-03-03 16:42 z C/C++ przez ŁF.

Szukanie tych samych liczb w tablicach...

0

Mam błahy problem. Nie potrafię wyszukać powtarzających się liczb w tablicach. Gdzie popełniam błąd?

#include <iostream>

using namespace std;
int tablica1[5], tablica2[5];
int main()
{
cout << "Podaj liczby: " << endl;
for(int i=0; i<=5; i++)
{

cin>>tablica1[i];
}
cout << "Podaj liczby 2: " << endl;
for(int j=0;j<=5; j++)
{


cin>>tablica1[j];
}

for(int i=0; i<=5; i++)
{
for(int j=0;j<=5; j++)
{
if(tablica1[i]==tablica2[j])
cout<<"Powtarzajace sie liczby to: "<<tablica1[i]<<endl;

}

}

return 0;

}

0

Wrzuć kod w tagi. Zapisujesz w obydwu pętlach wartości do jednej tablicy.

0

cout < "Podaj liczby: " < endl;

Pierwszy błąd popełniasz tutaj. << zamiast < .

Spójrz do jakich tablic wczytujesz. W dwóch pętlach wpisujesz do tablica1.

Indeksy [numery] tablic zapisujemy od 0. Jeśli tworzysz tablicę o wielkości 5, to indeksy są następujące: 0, 1, 2, 3, 4. Dlatego musisz poprawić warunki pętli.

0
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int a[] = {1, 2, 3, 4}, b[] = {2, 4};
	for(int num : a)
		if(binary_search(begin(b), end(b), num))
			cout << num;
	return 0;
}
0

Ponadto wychodzisz poza zakres tablicy.
int x[5]; tworzy tablicę z pięcioma elementami z indeksami 0..4, a nie 0..5.

0

Już działa. Dzięki za odp. Teraz mam drugi problem, a mianowicie:przepisać z tablicy A do tablicy B tylko te elementy które się nie powtarzają. Nie mam pomysłu jak to zrobić.

0

Wystarczy że rozszerzysz kod @spartanPAGE o 1 else, pomyśl troche :>
skoro if wykonuje sie dla elementów które się powtarzają, to else dla jakich?

0
zduninho88 napisał(a):

Już działa. Dzięki za odp. Teraz mam drugi problem, a mianowicie:przepisać z tablicy A do tablicy B tylko te elementy które się nie powtarzają. Nie mam pomysłu jak to zrobić.

CHOLERNA NEGACJA

czy znalazłeś? w takim razie...

czy NIE znalazłeś? w takim razie...

2

Najlepiej byłoby obie kolekcje posortować i użyć odpowiednio: std::set_intersection i std::set_symmetric_difference.

0
satirev napisał(a):

Najlepiej byłoby obie kolekcje posortować i użyć odpowiednio: std::set_intersection i std::set_symmetric_difference.

A to już zależy od wielkości - przy małej kolekcji porównywalnej raz, sortowanie wydłuży znacznie działanie programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1