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

Zadanie C++ - 2...


Rekomendowane odpowiedzi

Opublikowano

Zadeklaruj sobie tablice 50000 elementowa. Zrób licznik do unikalnych liczby. Jeśli unikalna to dodaj do tablicy. Czy unikalna sprawdzasz przez iterator w C++11. Jeśli ci zależy na pamięci to zrób vectora, aczkolwiek bardziej ci powinno zależeć na czasie

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Zadeklaruj sobie tablice 50000 elementowa. Zrób licznik do unikalnych liczby. Jeśli unikalna to dodaj do tablicy. Czy unikalna sprawdzasz przez iterator w C++11. Jeśli ci zależy na pamięci to zrób vectora, aczkolwiek bardziej ci powinno zależeć na czasie

???

To nie ma tylko unikalnych, tylko wszystkie dodawać . Jedyna różnica jest taka, że te ktore sie powtarzaja ma dodac tylko raz.

//

 

swoja droga, czemu 50000 elementowa, skoro moge zadeklarowac N, do tego jest od -50k do 50k wiec anyway 100000 elementowa

Hello there.

Opublikowano

Ponieważ dopóki N nie jest określone w trakcie kompilacji jako const, każdy nowszy kompilator wywali ci błąd. A do tego praca na stałych tablicach a nie dynamicznych jest szybsza. Dodajesz do tablicy dana liczbę tylko raz - po co ładować kilka razy ta sama wartość? Iterator tylko będzie miał więcej roboty i więcej czasu to zajmie

 

Swoją droga, unikalna = pojawiająca się tylko raz

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Ponieważ dopóki N nie jest określone w trakcie kompilacji jako const, każdy nowszy kompilator wywali ci błąd. A do tego praca na stałych tablicach a nie dynamicznych jest szybsza. Dodajesz do tablicy dana liczbę tylko raz - po co ładować kilka razy ta sama wartość? Iterator tylko będzie miał więcej roboty i więcej czasu to zajmie

Nie umiem używać 'Iterator'a' czymkolwiek on jest ;p

 

btw.

 

czemu 50000 elementow a nie 100000?

Hello there.

Opublikowano

Poczytaj o std::iterator. Nie wiem czy oig wszystko obsługuje z C++11 (np emplace_back nie działa). Jeśli nie chce ci ze to zrób pętle przez tablice od 0 do ilości unikalnych

 

50K ponieważ w zadaniu masz od 0 > N > 50K

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Poczytaj o std::iterator. Nie wiem czy oig wszystko obsługuje z C++11 (np emplace_back nie działa). Jeśli nie chce ci ze to zrób pętle przez tablice od 0 do ilości unikalnych

 

50K ponieważ w zadaniu masz od 0 > N > 50K

Moglbym jakis konkretny przyklad z tym kodem? 

 i racja, zle spojrzalem .

Hello there.

Opublikowano

Będę w domu napisze coś. Przez ten czas sam kombinuj. Stosuj się do wskazówek. W międzyczasie może wypowie się ktoś inny z jeszcze lepszym pomyslem

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Będę w domu napisze coś. Przez ten czas sam kombinuj. Stosuj się do wskazówek. W międzyczasie może wypowie się ktoś inny z jeszcze lepszym pomyslem

#include <iostream>
#include <iterator>

using namespace std;
int liczby[50000], unikalne[50000], current = 0;

class MyIterator : public std::iterator<std::input_iterator_tag, int>
{
  int* p;
public:
  MyIterator(int* x) :p(x) {}
  MyIterator(const MyIterator& mit) : p(mit.p) {}
  MyIterator& operator++() {++p;return *this;}
  MyIterator operator++(int) {MyIterator tmp(*this); operator++(); return tmp;}
  bool operator==(const MyIterator& rhs) {return p==rhs.p;}
  bool operator!=(const MyIterator& rhs) {return p!=rhs.p;}
  int& operator*() {return *p;}
};

int main(){

int N = 0; cin >> N;

for(int i = 0; i<N; i++){
    cin >> liczby[i];
}


MyIterator from(liczby);
MyIterator until(liczby+N);
for(MyIterator it=from; it!=until; it++){
    // nwm co robic 
}


}

mam cos takiego ale dalej nie wiem co robic.

Hello there.

Opublikowano

Rozumiesz co napisałeś? Za pół godziny wyślę kod

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Do zamkniecia, rozwiazane w ten sposob:

#include <iostream>
#include <set>
using namespace std;
 
int main()
{
    int n;
    cin >> n;
 
    set<int> aset;
    for(int i = 0; i < n; ++i)
    {
        int t;
        cin >> t;
        aset.insert(t);
    }
 
    cout << aset.size() << endl;
}

Hello there.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...