Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[POMOC]


ushera7

Rekomendowane odpowiedzi

Opublikowano

Proszę napisać algorytm, który sprawdza czy dwie tablice o wartościach całkowitych są

anagramami, tzn. czy w każdej z nich można poprzestawiać tak elementy, aby była identyczna

z drugą. Np. A={1,1,2,4,4}, B={1,2,2,4,5} nie są anagramami, natomiast A={1,2,2,6,1) i

B={2,6,1,1,2} są.

 

Jeśli ktoś byłby w stanie to zrobić byłby chyba moim Bogiem od dzisiaj...

k7IyKRZ.jpg?1?3060
Pomogłem ? Kliknij Lubię to <3

Opublikowano

Wskazówka

zrób sobie mapę (std::map) zawierającą wartości i ilości ich wystąpień. Najlepiej posortowaną według wartości. Później porównaj te mapy.

tfu.

Wskazówka v2.0

posortuj tablice jakimś algorytmem (mnóstwo tego) i wtedy je porównaj

Opublikowano

Nie mógłbyś jakiegoś gotowca zrobić ? : ) Byłabym wdzięczna :*

k7IyKRZ.jpg?1?3060
Pomogłem ? Kliknij Lubię to <3

Opublikowano
Opublikowano

Kod w c++ napisany na szybko:

 

int CzyAnagram(int A[], int B[], int wielkoscA, int wielkoscB)
{
if (wielkoscA != wielkoscB) return 0;
for (int i = 0; i < wielkoscA - 1; i++)
{
 for (int j = i + 1; j < wielkoscA; j++)
 {
  if (A[i] > A[j])
  {
   int tmp = A[i];
   A[i] = A[j];
   A[j] = tmp;
  }
  if (B[i] > B[j])
  {
   int tmp = B[i];
   B[i] = B[j];
   B[j] = tmp;
  }
 }
}
for (int i = 0; i < wielkoscA; i++)
{
 if (A[i] != B[i]) return 0;
}
return 1;
}

 

Funkcja najpierw porównuje wielkości tablic A i B jeśli są różne nie mogą być anagramami i zwraca 0 - fałsz. Później sortuje tablice A i B najłatwiejszą metodą jaką się da, następnie porównuje ze sobą kolejno każdy z elementów tablicy A i B. Jeśli tablice są takie samy zwraca 1 - prawde, jeśli przeciwnie zwraca 0 - fałsz.

 

Powinno działać :)

Opublikowano

Kod w C++, też napisany na szybko

bool isAnagram( std::string slowoA, std::string slowoB) {
 std::sort(slowoA.begin(), slowoA.end());
 std::sort(slowoB.begin(), slowoB.end());
 return slowoA == slowoB;
}

Ta sygnatura jest pusta.

Opublikowano

Zaraz sprawdzę czy działa i dam edit : )

 

Problem polega na tym teraz że nie mogę skompilować chociaż kompilator nie pokazuje już błędu w kodzie po moich poprawkach ale teraz czepia sie o biblioteke i nie daje dokończyć kompilacji

k7IyKRZ.jpg?1?3060
Pomogłem ? Kliknij Lubię to <3

Opublikowano

int CzyAnagram(int A[], int B[], int wielkoscA, int wielkoscB)
{
if (wielkoscA != wielkoscB) return 0;
for (int i = 0; i < wielkoscA - 1; i++)
{
for (int j = i + 1; j < wielkoscA; j++)
{
if (A[i] > A[j])
{
int tmp = A;
A[i] = A[j];
A[j] = tmp;
}
if (B[] > B[j])
{
int tmp = B;
B[i] = B[j];
B[j] = tmp;
}
}
}
for (int i = 0; i < wielkoscA; i++)
{
if (A[i] != B[i]) return 0;
}
return 1;
}

i

Co jest nie tak?

k7IyKRZ.jpg?1?3060
Pomogłem ? Kliknij Lubię to <3

Opublikowano

Po pierwsze, daj w code, i w miare sformatuj.

Po drugie, rozumiem, że to co napisałeś, to jest kompletny kod? Bo nie ma funkcji main()?


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Jeśli chodzi o moją funkcję:

 

1. Jest to gotowa funkcja, wystarczy kopiuj wklej do swojego programu. Nie wymaga dodatkowych bibliotek.

2. Nie to nie jest gotowy program. Trzeba sobie te 5 linijek entry point main samemu napisać.

 

Jeśli chodzi o samą idee algorytmu czyli nie potrzebujesz własnoręcznie napisanego sortowania i porównywania tablic - tak jak jest w mojej funkcji - możesz skorzystać z wersji 4ggr35510n czyli import bibliotek oraz użycie gotowych funkcji i przeciążonych operatorów.

  • 3 tygodnie później...
Opublikowano

Nie mógłbyś jakiegoś gotowca zrobić ? : ) Byłabym wdzięczna :*

 

Płeć:

Mężczyzna

 

I ze stopki :

 

Pomogłem ? Kliknij Lubię to <3

 

Rozdwojenie jaźni?

  • 3 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...