-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Algorytmiczny problem lamera... :-)
Date: Sun, 05 Oct 2014 22:11:26 +0200
Organization: ATMAN - ATM S.A.
Lines: 81
Message-ID: <m0s8le$lfc$1@node2.news.atman.pl>
References: <1...@g...com>
NNTP-Posting-Host: 89-73-81-145.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1412539886 21996 89.73.81.145 (5 Oct 2014 20:11:26 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 5 Oct 2014 20:11:26 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101
Thunderbird/31.1.2
In-Reply-To: <1...@g...com>
Xref: news-archive.icm.edu.pl pl.comp.programming:206688
[ ukryj nagłówki ]On 05.10.2014 21:26, 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
> jegorozwią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...
Nie mówiłeś czasem, że lista jest posortowana?
Skoro jest posortowana, to powtarzające się elementy
są obok siebie.
BTW, chyba to nie listy, skoro mają dostęp przez indeks.
int i=0;
while ( i<nElem )
{
MyOutFile << Tab[i] << ...;
int j=i+1;
while( (j<nElem) && (strcmp(Tab[j],Tab[i])==0) ) j++;
i=j;
}
Widzę, że używasz c++, (znaczki <<).
To czemu nie użyjesz stringów. Tab to wtedy
vector<string>.
while ( i<nElem )
{
MyOutFile << Tab[i] << ...;
int j=i+1;
while( (j<nElem) && ( Tab[j] == Tab[i] ) ) j++;
i=j;
}
Już wygląda lepiej.
Można też użyć od razu użyć unique
http://www.cplusplus.com/reference/algorithm/unique/
pzdr
bartekltg
Następne wpisy z tego wątku
- 05.10.14 22:13 A.L.
- 06.10.14 21:04 m...@g...com
- 06.10.14 22:20 bartekltg
- 07.10.14 07:31 slawek
- 07.10.14 15:18 firr
- 10.10.14 15:28 M.M.
- 10.10.14 15:39 M.M.
- 10.10.14 16:01 bartekltg
- 11.10.14 10:07 M.M.
- 11.10.14 16:27 A.L.
- 11.10.14 17:31 M.M.
- 12.10.14 01:17 bartekltg
- 12.10.14 02:31 M.M.
- 12.10.14 12:52 M.M.
- 12.10.14 12:53 bartekltg
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-25 Wrocław => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-25 Warszawa => Sales Assistant <=
- 2024-12-25 Kraków => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-25 Lublin => System Architect (Java background) <=
- 2024-12-25 Szczecin => Specjalista ds. public relations <=
- 2024-12-25 Wrocław => Key Account Manager <=
- 2024-12-25 Kraków => Full Stack .Net Engineer <=
- 2024-12-25 Kraków => Programista Full Stack .Net <=
- 2024-12-25 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-25 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-25 Białystok => Delphi Programmer <=
- 2024-12-25 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-25 Kraków => Ekspert IT (obszar systemów sieciowych) <=
- 2024-12-25 Mińsk Mazowiecki => Spedytor Międzynarodowy <=
- 2024-12-24 Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie