eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytmiczny problem lamera... :-)Re: Algorytmiczny problem lamera... :-)
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl
    !209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!69.16.185.1
    11.MISMATCH!peer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.hig
    hwinds-media.com!post01.iad.highwinds-media.com!fx25.iad.POSTED!not-for-mail
    From: A.L. <a...@a...com>
    Newsgroups: pl.comp.programming
    Subject: Re: Algorytmiczny problem lamera... :-)
    Message-ID: <v...@4...com>
    References: <1...@g...com>
    User-Agent: ForteAgent/7.00.32.1200
    MIME-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    Lines: 43
    X-Complaints-To: a...@e...com
    Organization: Forte - www.forteinc.com
    X-Complaints-Info: Please be sure to forward a copy of ALL headers otherwise we will
    be unable to process your complaint properly.
    Date: Sun, 05 Oct 2014 15:13:08 -0500
    X-Received-Bytes: 2344
    X-Received-Body-CRC: 2919110001
    Xref: news-archive.icm.edu.pl pl.comp.programming:206689
    [ ukryj nagłówki ]

    On Sun, 5 Oct 2014 12:26:42 -0700 (PDT), m...@g...com wrote:

    >Pomóżcie, bo spać nie mogę.
    >
    >Po paru latach przerwy dopadła mnie konieczność napisania programu.
    >Problem był dość banalny: Na wejściu dostajemy paręnaście tysięcy list składających
    się z kilkudziesięciu elementów (stringów), listy są posortowane, elementy list mogą
    się powtarzać i robią to nagminnie - zadaniem programu jest "odfiltrowanie"
    powtórzonych elementów i zapisanie tak wyczyszczonych list do pliku.
    >
    >Zadanie jest już rozwiązane, ale gnębi mnie mało elegancki sposób jego rozwiązania.
    >Kod "filtrujący":
    >
    >
    >c = 1; // A)
    >
    >for (i = 0; i < nElem; i++)
    >{
    > for (k = 0; k < i; k++)
    > {
    > c = strcmp(Tab[i], Tab[k]);
    > if (c == 0) // B)
    > break;
    > }
    > if (c != 0) // C)
    > MyOutFile << Tab[i] << ...
    >}
    >
    >
    >Pomijając kwestię optymalizacji dostępu do tablic i skorzystania ze "zbicia"
    powtarzających się elementów - jak to to ucywilizować?
    >Zestawienie instrukcji C i B, niestety, kłuje w oczy...
    >Tak samo, jak "sztuczna" instrukcja A.
    >
    >Da się coś z tym zrobić?
    >Jedyne, co mi przychodzi do głowy, to posłużenie się instrukcją goto, ale to - jak
    wiadomo - samo zło...

    Jak listy sa posortowane, to powtarzajace sie elementy sa jeden za
    drugim. Wystarczy wiec "jechac" po liscie z indeksem i, i porownywac
    element [i] z [i+1]. Jezeli sa takie same, usunac element [i+1].
    Reszta to szczegoy

    Jezeli listy sa nieduze, moana ja konwertowac do struktury Set, ktora
    jak wiadomo nie ma duplikatow, a potem Set z powrotem do listy jezeli
    potzrebne jest sortowanie

    A.L.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: