Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

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

kostek13_88

Czyszczenie Tablicy W C/c++...

Rekomendowane odpowiedzi

wrzuc ta tablice jako private w klasie

potem bedziesz mogl robic rzeczy typu

function nazwa()

{

///tutaj cos

{

klasa z_tablica ; // tu tworzenie takiej tablicy

//operacje

}

/// a tu sie robi destroj obiektu razem z tablica

}

// wyczyszczone

 

 

edit:

chociaz ... dlaczego ta tablica musi byc 10-cio wymiarowa ? co sprawia ze taki wymiar jest Ci potrzebny ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tu nie chodzi żeby ją zniszcyć....tu chodzi o to żeby w każde możliwe miejsce wstawić 0... potrzebne mi jest do oi...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sorry, ale nie wierze ze trzeba tablice 10-cio wymiarowa

podaj tresc zadania

 

bo tak to for( ) for( ) for( ) ... i jazda z wpisywaniem 0 :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

bankomaty na oi... wypisałem wszystkie możliwe kombinacje, ale za długie było, więc wstawiłem generator odrazu do programu, i trezeba teraz takiej długiej tablicy....jakbyś mógł napisać ten algorytm to byłbym Ci wdzięczny...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jesli tablica jest tab[1][2][3][4][5][6][7][8][9][10] to

for( int a = 0 ; a < rozmiar_1 ; a++ )

...

for( int j = 0 ; j < rozmiar_10 ; j++ )

tab[a][c][d][e][f][g][h][j] = 0 ;

 

a moze miales na mysli tab[10] ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mam tablice t[10000][10]... potrzebuje ja wyczyscic=>wyzerowac ja... jak najszybciej sie da... co proponujecie??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to nie jest tablica 10-cio wymiarowa, tylko 2 wymiarowa

for( int a = 0 ; a < 10000 ; a++ )

for( int b = 0 ; b < 10 ; b++ )

tab[a] = 0 ;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z kumplem robimy te zadanie, i przyszedł i powiedział mi że nie idzie zerowanie tablicy 10-cio wymiarowej....jak to usłyszałem myślałem że pi*****nę... no i nie miałem pomysłu więc walnąłem to na forum...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sprobujcie ten kod co podalem (oczywiscie nazwa tablicy ma byc taka, jak macie zdefiniowana)

 

tablica[10000][10] jest tablica 2-wymiarowa o szerokosci 10000 i wysokosci 10 ; przypuszczalnie jej wymiar jest i tak niepotrzebnie "rozdymany"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pętla nie jest najszybsza. Najszybszy będzie memset:

 

memset(tablica, 0, rozmiarX*rozmiarY*sizeof(typ_elementu_tablicy));

 

np.:

 

memset(tablica, 0, 10000*10*sizeof(int));.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak już będziesz pisał te pętle do "zerowania" tablicy to nie używaj operatorów indeksowania ( [ ] ), tylko odwołuj się do elementów tablicy używając ich adresów - będzie szybciej chodziło a o szybkość Ci chyba chodzi.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

pytanie nie powinno brzmiec "jak szybko wyzerowac" a "dlaczego ta tablica musi byc tak wielka, coz to za dane wymagaja 100kb*3b(lub 4b) pamieci na starcie ?"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jesli zadeklarujesz tablice jako zmienna globalna, C++ sam ci ja wyzeruje :-).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po co ją wogule zerować? Ja po wygenerowaniu pinów ze wszystkich sekwencji poprostu je porównuje ze sobą i tylko zliczam te które się powtarzają a calą tablicę zostawiam w spokoju. Druga sprawa że te wygenerowane piny nie powinny ci zajmować więcej jak 4,000,000 bajtów (wynika to z treści zadania), więc przy dostępnych 32Mb jest sens usuwać z pamięci ~ 4Mb? To ci tylko spowolni program.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

czy moglbym prosic o tresc zadania ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pietrucha ten twój memset z teoretycznego punktu widzenia jest błędny:) Działa tylko dlatego, że wypełniasz tablicę zerami. Drugi parametr memset jest rzutowany na unsigned char. Wypełnienie tablicy np 5 zadziała tylko w przypadku kiedy rozmiar char będzie równy int.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

masz tablice t[10000][10]

 

to

 

t jest wskaznikiem na pierwszy element tablicy.

 

int rozmiar = 10000*10;

for (int k=0;k<rozmiar;k++) *(t+k)=0;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bankomat

Etap I. Plik źródłowy ban.*

Dostępna pamięć: 32MB.

 

Bajtocki Bank Bitowy ( w skrócie BBB) ma największą w Bajtocji śieć bankomatów. Klienci BBB wypłacają z bankomatów na podstawie karty bankomatowej i 4-cyfrowego kodu PIN. Niedawno, w celu zwiększenia bezpieczeństwa swoich klientów, BBB zainstalował przy każdym bankomacie kamerę. Kamery przesyłają rejestrowany obraz do BBB drogą radiową. Niestety, sygnał wysyłany przez kamery jest przechwytywany przez szajkę złodziejaszków komputerowych. Złodzieje starają się odkryć 4-cyfrowe kody PIN klientów BBB, którym następnie kradną karty bankomatowe. Wiedząc o tym, klienci BBB, prowadzając PIN i przesuwając palec nad klawiaturą, starają sie wykonywać nadmiarowe ruchy. Kamera nie jest w stanie wychwycić naciskania klawiszy, rejestruje jedynie przesunięcia palca. Tak więc, jednoznaczne wyznaczenie wprowadzanego kodu PIN jest zazwyczaj niemożliwe. Przykładowo, klient przesuwając swój palec najpierw nad klawiszem 1, a potem 5, mógł wprowadzić następujące kody PIN: 1111, 1115, 1155, 1555 lub 5555. Zdesperowani złodziejaszkowie gromadzą nagrania z kamer, licząc na to, że być może na podstawie wielu nagrań tego samego klienta będą w stanie wyznaczyć wprowadzany przez niego PIN, lub choćby ograniczyć liczbę możliwych kodów. Zebrawszy sekwencje wprowadzone przez pewnego bogategoklienta BBB, złożyli Ci propozycję "nie do odrzucenia".

 

Zadanie:

Napisz program który:

- wczyta ze standardowego wejścia opis zerejestrowanych sekwencji ruchów palca, jakie klient banku wykonywał wprowadzając swój PIN,

- wyznaczy liczbę różnych kodów PIN, jakie może mieć klient (czyli liczbę tych 4-cyfrowych kodów PIN, które mogły być wprowadzone do bankomatu przy wykonywani zadanych sekwencji ruchów palca),

- wypisze znalezione rozwiązanie na standardowe wyjście.

 

Wejście:

Pierwszy wiersz wejścia zawiera jedna dodatnią liczbę całkowitą n równa liczbie zarejestrowanychscen wprowadzania kodu PIN przez klienta, 1 <= n <= 1000. W kolejnych n wierszach znajdują się opisy tych scen, po jednej w wierszu. Opis każdej sceny składa się z dwóch dodatnich liczb całkowitych oddzielonych pojedynczym odstępem, Pierwsza z tych liczb, t, to długość sekwencji ruchów, 1 <= t <= 10000. Druga z tych liczb to t- cyfrowa liczba, której kolejne cyfry reprezentują kolejne klawisze, nad którymi klient przsuwał palec. Łącznadługość wszystkich sekwencji nie przekracza 1000000.

 

Wyjście:

W pierwszym i jedynym wierszu wyjścia powinna znależć się jedna dodatnia liczba całkowita równa liczbie możliwych kodów PIN klienta.

 

Przykład:

Dla danych wejściowych:

2

3 123

3 234

poprawnym wynikiem jest:

5

 

 

Sorki za ewentualne literówki.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To jest zadanie z jakieś olimpiady? Coś mi się zdaje, że to już gdzieś widziałem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Te zadanie akurat jest z Olimpiady Informatycznej organizowanej już chyba poraz XXII pozatym na MWPZ zadanie też są w takiej formie, to chyba jakiś standart jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Pietrucha ten twój memset z teoretycznego punktu widzenia jest błędny:) Działa tylko dlatego, że wypełniasz tablicę zerami.  Drugi parametr memset jest rzutowany na unsigned char.  Wypełnienie tablicy np 5 zadziała tylko w przypadku kiedy rozmiar char będzie równy int.

Ale pytanie nie dotyczyło piątek, tylko zer.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Pętla nie jest najszybsza. Najszybszy będzie memset:

 

memset(tablica, 0, rozmiarX*rozmiarY*sizeof(typ_elementu_tablicy));

 

np.:

 

memset(tablica, 0, 10000*10*sizeof(int));.

najlepsze rozwiazanie z tych ktore tutaj zaproponowano

 

masz tablice t[10000][10]

 

to

 

t jest wskaznikiem na pierwszy element tablicy.

 

int rozmiar = 10000*10;

for (int k=0;k<rozmiar;k++) *(t+k)=0;

tez calkiem niezle rozwiazanie tyle ze niezupelnie poprawne, powinno byc:

 

for (int k=0;k<rozmiar;k++) *((int *)t+k)=0;

 

OT: nie wiem jak Was ale mnie troche przeraza jak za programowanie bierze sie ktos kto nie wie nawet co to 10-wymiarowa tablica....

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

  • Tematy

  • Odpowiedzi

    • Cześć all Znajomy chce złożyć nowego kompa Prosiłbym coś doradzić na temat tego zestawu  Przedział to 5500-6000zł wraz z monitorem  MSI B550-A PRO AMD Ryzen 5 5600X Cooler Master MWE GOLD-V2. 750W 80 Plus Gold Kingston FURY 32GB (2x16GB) 3200MHz CL16 Beast Black Genesis IRID 505F Gigabyte GeForce RTX 4060 Ti Eagle 8G GDDR6 Silver Monkey X STORMY 120mm Lexar 1TB M.2 PCle Gen4 NVMe NQ790 BenQ ZOWIE XL254OK czarny https://ibb.co/3WRkpmk ( zdjęcie zestawu )
    • Siedem to jeszcze niedużo. Są osoby, które mają na przykład ponad setkę latarek. Ja zgromadziłem tylko kilkanaście.
    • Siedem multimetrów.... okeeejjjjjjjjjjjj........ https://i.giphy.com/HoCPpVFKfvK5HRugp3.webp
    • Hmmmm, tak się zastanawiałem jaki ja mam fetysz i opanować się nie mogę. Wyszło na to, że to multimetry. Mam ich chyba z siedem nie licząc zabawek z biedry. Jak nie mam już co mierzyć to biorę sondy w łapę i straszę dzieciaki uważające, że w domu to tylko ojciec jest dziadersem. Dziadersem, który nie rozumie współczesnej młodzieży.  No, kuźwa... nie rozumiem i tyle. 
    • Weź sprzedaj tego Phenoma i kup FX 8300  Będzie na pewno sporo lepiej, a teraz ludzie chcą za te procki grosze. W dodatku na Twojej płycie na spokojnie go podkręcisz wyżej niż na 4GHz, nawet przy chłodzeniu pokroju Spartana Pro - a zegar to właściwie jedyna przewaga wyższych modeli nad tym.  P.S. Normalnie nikomu w życiu nie proponowałbym FX'a, ale skoro chłop zaszalał na tyle by kupić 32GB RAM'u i ma jedną z lepszych płyt to co ma do stracenia  Jakiś czas temu widziałem 8300 z Spartanem 3 Pro ARGB za 7 dych, jak poszuka to sam procek za 50/60 upoluje, a na Phenoma może za te 40 zł znajdzie jelenia Co do NVMe w razie czego służę pomocą, modułami w UEFI bawiłem się już nie raz.
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...