2016-06-05 3 views
1

처음 두 글자가 같은지 확인하는 코드를 작성했습니다.이 두 글자가 같으면 하나만 제거하고 단어를 수정합니다. 그러나 그것은 문제가되는 것이 아닙니다.중복 된 문자 제거 - 단어 수정

char word[4]; 
int i; 
cout<<"Enter Word:"; 
for(i=0;i<5;i++) cin>>word[i]; 


for(int y=0;y<5;y++){ 
if(word[i]==word[i+1]){ 
for(int k=y;k<5;k++){ 
    word[i]=word[i+1]; 
} 
    for(int g=0;g<5;g++) 
cout<<word[i]; 
} 

}

+0

에 액세스하려고하기 때문에 (INT Y = 0, y를 <** 5 **, Y ++) - 당신이 5 4. 또한 다음에 변경해야 루프! – STF

답변

0

당신은 배열의 끝까지 루프가 필요하지 않습니다. 마지막 장소 이전까지 가야합니다.

또한 인덱스의 i을 루프로 변경해야합니다.

char word[4]; 
    int i; 
    cout<<"Enter Word:"; 
    for(i=0;i<5;i++) 
     cin>>word[i]; 



for(int y=0;y<4;y++){ 
if(word[y]==word[y+1]){ 
for(int k=y;k<4;k++){ 
    word[k]=word[k+1]; 
} 
for(int g=0;g<5;g++) 
    cout<<word[g]; 
} 
} 
+0

감사합니다 :) 게다가 내가 설정하면 배열 크기는 루프 인덱싱보다 15가되어야합니까? –

+0

@ Smärtßõý 그러면 5에서 12로, 4에서 13으로 바뀝니다. 좋은 대답이라면 대답으로 표시하고 – STF

1

라인 :

if(word[i]==word[i+1]){ 

은 할 필요가 : 사실, 거의 i에 대한 모든 참조는 해당 루프 변수에 있어야합니다

if(word[y]==word[y+1]){ 

.

또한 문자 그대로 5의 대부분은 4 일 필요가 있습니다.()는 존재하지 않는다 (당신은 값 0, 1, 2를 반복 할, 그리고 3. 당신은 word[4]에 액세스하지 않으

마지막으로 라인 :.

for(int y=0;y<5;y++){ 

것은해야한다 :

for(int y=0;y<3;y++){ 

당신을 위해 word[y+1]

+0

Thanks Buddy를 투표 해주세요 :) 게다가 배열 크기를 15보다 크게 설정하면 루프가 인덱싱 되나요? –

+0

거의 모든 색인은'sizeof (word)'이어야합니다. 하나는'sizeof (word) -1'이어야합니다. 그렇게 쓰면, 카운트를 마음의 내용으로 바꿀 수 있습니다. –

+0

좋아요, 마지막 하나 Pls, 사용자가 원하는 길이의 문자열을 입력하고 싶습니다. 어떻게 설정할 수 있습니까? –