C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[51830] Re:Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요..
말라리아 [] 1424 읽음    2008-01-08 15:01
그런데 왜 i 변수선언에서 for문에서 변수 초기화 하는뎅
왜 변수선언시 초기화 하시는지,,,,,
이중 초기화하셨넹
옥의티네요 ㅡ.ㅡ

장성호 님이 쓰신 글 :
: 샘플을 만들어 봅니다.
: 전산을 전공하지도 않았고 알고리즘같은 것을 공부해 본적도 없기에
: 누가보면 소스가 허접할지도 모르겠네요
:
: [샘플1]
:  1. TStringList 에 DelimitedText 기능을 이용하여
:      전체 문자열에서 space를 기준으로 짜릅니다.
:  2. 전체 N개 문자열중에서  n번째 문자열이 중복되는지 확인하기 위해서는
:      0번째 부터 n-1번째 까지 체크해서 문제 없으면 넘어가고
:      0~ n-1 번째까지 중에 n번째랑 같은것이 있으면 n번째 string을 delete합니다.
:
:     //---------------------------------------------------------------------------
:     void __fastcall TForm1::Button5Click(TObject *Sender)
:     {
:
:         String sStr=Edit1->Text;
:         //String sStr="문자열1    문자열2  ans  문자열1  문자열3  문자열2   문자열2 ";
:
:         TStringList *sLst=new TStringList;
:         sLst->Delimiter=' ';
:         sLst->DelimitedText=sStr;
:
:         int idx=0;
:         int i=0;
:         while(idx<sLst->Count)
:         {
:             for(i=0;i<idx;i++)
:             {
:                 if(sLst->Strings[i]==sLst->Strings[idx])
:                 {
:                     sLst->Delete(idx);
:                     break;
:                 }
:             }
:             if(i>=idx)idx++;
:         }
:
:         Memo1->Lines->Assign(sLst);
:         delete sLst;
:     }
:     //---------------------------------------------------------------------------
:
:    
: [샘플2]
: 문자열을 하나씩 짜르면서 리스트에 담긴것과 같은것이 없으면
: 리스트에 추가합니다.
:     void __fastcall TForm1::Button4Click(TObject *Sender)
:     {
:
:         String sStr=Edit1->Text;
:        // String sStr="문자열1    문자열2  ans  문자열1  문자열3  문자열2   문자열2 ";
:
:         char *cSTmp,*cPTmp;
:
:         cSTmp=sStr.c_str();
:         TStringList *sLst=new TStringList;
:         String sTmp;
:         while(true)
:         {
:             cPTmp=AnsiStrPos(cSTmp," ");
:             if(cPTmp)
:             {
:                 sTmp.SetLength(cPTmp-cSTmp);
:                 strncpy(sTmp.c_str(),cSTmp,cPTmp-cSTmp);
:                 int i=0;
:                 for(;i<sLst->Count;i++)
:                     if(sTmp==sLst->Strings[i])break;
:
:                 sTmp=sTmp.Trim();
:                 if(i>=sLst->Count&&sTmp.Length()>0)sLst->Add(sTmp);
:                 cSTmp=cPTmp+1;
:
:             }
:             else
:             {
:                 break;
:             }
:         }
:
:         Memo1->Lines->Assign(sLst);
:         delete sLst;
:
:     }
:     //---------------------------------------------------------------------------
:
:  [샘플3] - 추가한것
:   ; 샘플1에서처럼 문자열을 짜르기에 TStringList 를 이용할뿐 아니라
:     중복된것 찾는것 또한 TStringList 에 IndexOf 기능을 이용하여 구현하였다.
:
:    void __fastcall TForm1::Button3Click(TObject *Sender)
:     {
:         String sStr=Edit1->Text;  //String sStr="문자열1    문자열2  ans  문자열1  문자열3  문자열2   문자열2 ";
:
:         TStringList *sLst=new TStringList;
:         TStringList *sPasLst=new TStringList;
:         sLst->Delimiter=' ';
:         sLst->DelimitedText=sStr;
:
:         for(int i=0;i<sLst->Count;i++)
:         {
:             if(sPasLst->IndexOf(sLst->Strings[i])<0)
:                 sPasLst->Add(sLst->Strings[i]);
:         }
:
:         Memo1->Lines->Assign(sPasLst);
:         delete sLst;
:         delete sPasLst;
:     }
:     //---------------------------------------------------------------------------
:
:
: Delphi나 C++Builder로 한다면 .. 샘플3이 개중 좋을듯 싶네요
:
:
: 더 좋은 알고리즘도 많을것 입니다.
:
: 그럼..
:
: 이용태 님이 쓰신 글 :
: : 제가 예를 잘못 들었나 봅니다.
: :
: : 문자 배열이 아니고요... 문자열 배열입니다.
: :
: :
: : 문자열1 = "우리나라"
: : 문자열2 = "대한민국"
: : 문자열3 = "단일민족"
: :
: :  -------   -------  -------  -------  ------- -------
: :   문자열1    문자열2   문자열1  문자열3  문자열2   문자열2
: :  -------   -------  -------  -------  ------- -------
: : 
: : 이것을 중복된 값을 제외하여 다음과 같이 만들고 싶습니다.
: :
: :  -------   -------  ------- 
: :  문자열1    문자열2   문자열3
: :  -------   -------  ------- 
: :
: : 방법 아시는 분 알려주십시요...
: :
: :
: : 김상면 님이 쓰신 글 :
: : : 아주 기초적인 질문이라 대충 알고리즘만 적습니다.
: : :
: : :     char src[9] = "aaabbacbc";
: : :     int dst[9] = {0,};
: : :     int i = 0;
: : :
: : :     while (i<10)
: : :     dst[src[i++] - 'a']++;
: : :
: : :     i = 0;
: : :     while (i < 10)
: : :     {     if (dst[i])
: : :            cout << char(i + 'a');
: : :     i++;
: : :     }
: : :
: : : 실행 파일을 만들려면 좀 손을 봐야 하지만 알고리즘을 이해하는데는 문제가 없으리라 생각합니다.
: : : 그럼
: : :
: : :
: : : 이용태 님이 쓰신 글 :
: : : : 다음과 같은 배열이 있습니다.
: : : :
: : : : char a[9];
: : : : --- --- --- --- --- --- --- --- ---
: : : :  a     a    a    b     b    a    c     b    c
: : : : --- --- --- --- --- --- --- --- ---
: : : :
: : : : 이 배열에서 중복된 값을 제외한 새로운 배열을 만들고 싶습니다.
: : : :
: : : : 즉.. 요렇게 말이죠..
: : : : --- --- ---
: : : :  a     b    c
: : : : --- --- ---
: : : :
: : : : 머리를 계속 굴려보는데... 퍼뜩이는 아이디어가 떠오르지 않습니다...;;;
: : : :
: : : : 아시는 분... 답변 부탁드립니다...

+ -

관련 글 리스트
51809 배열에서 중복된 데이터를 제외하고 싶은데요.. 이용태 1453 2008/01/05
51810     Re:배열에서 중복된 데이터를 제외하고 싶은데요.. 김상면 1879 2008/01/05
51811         Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요.. 이용태 1522 2008/01/06
51814             Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요..(자답) 이용태 1790 2008/01/07
51817                 Re:Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요..(자답) 슬.강슬기 6730 2008/01/07
51818                     Re:Re:Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요..(자답) 장성호 3378 2008/01/07
51815                 Re:Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요..(자답) 이현진 1332 2008/01/07
51813             Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요.. 장성호 1760 2008/01/06
51830                 Re:Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요.. 말라리아 1424 2008/01/08
51812             Re:Re:Re:배열에서 중복된 데이터를 제외하고 싶은데요.. 김상면 1654 2008/01/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.