Problem z pseudo kodem

Problem z pseudo kodem
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:34
0

Cześć, tak wygląda pseudo kod:

Kopiuj
Test(p, k, n)
begin
A := {1};
j := 1;
for i := 2 to n do
    if p[i] ≥ k[j] then
      begin
          A := A ∪ {i};
          j := i;
    end;
  return A;
end;

A moj kod tak:

Kopiuj
int Test(int p[],int k[], int n){
   int A={1};
   int j=1;
   int i;
   for(i=2; i<n; ++i){
        if(p[i]>=k[j]){
            // tu nie wiem
            j=i;
        }
   }
    return A;
}

Jak mogę uporać się z tą linijką z pseudo kodu: A := A ∪ {i}; w moim kodzie?

edytowany 1x, ostatnio: Kondzio33
M9
  • Rejestracja:około 4 lata
  • Ostatnio:około 4 lata
  • Postów:42
2

Zgaduje, że to suma zbiorów, a A jest zainicjolizowane jednym elementem, więc jej rozmiar to 1, zrób z A vector i pushuj do niego.

Kopiuj
#include <vector>

using namespace std;

int* test(int p[],int k[], int n){
   vector<int> A(1,1);
   int j=1;
   int i;
   for(i=2; i<n; ++i){
        if(p[i]>=k[j]){
            A.push_back(i);
            j=i;
        }
   }
   return A.data();
}
edytowany 2x, ostatnio: m94
K3
Nie za bardzo rozumiem, mógłbyś napisać fragment kodu lub chociaż bardziej wytlumaczyc?
M9
zedytowalem musisz sprawdz czy to robi to co chciales osiagnac
K3
Niestety nie bo teraz nie moge zwrocic. "return A;"
M9
Zmieniłem troche, zobacz czy teraz działa o ile masz C++11. Jak nie to do rozwiązania będzie informacja co ta funkcja ma robić lub zwracać, bo Twój kod zwraca int, a A wydaje się zbiorem
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:33 minuty
  • Postów:4935
0

Pytanie, co znaczy, w tym pseudokodzie, to: A ∪ {i};?


MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
3

Najwyraźniej A to zbór (lub inny kontener).
Trzeba jeszcze uważać, że pseudo kod jest indeksowany po humanistycznemu.

Kopiuj
auto Test(const std::vector<int>& p, const std::vector<int>& k) // n ukrywa się jako rozmiar p
{
    std::set<int> A{0};
    auto j = 0;
    for (auto i = 1; i < p.size(); ++i) {
        if (p[i] >= k[j]) {
             A.insert(i);
             j = i;
        }
    }
    return A;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22
lion137
Powiedz coś po humanistycznemu xD
_13th_Dragon
@lion137, po humanistycznemu się nie mówi, po humanistycznemu się indeksuje.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.