2015-01-22 2 views
0

누군가가 여러 if 문을 사용하지 못하게하는 해결책을 제시 할 수 있는지 궁금합니다. 그래서 나의 요청은 분명하다. 두 세트의 코드가 제공되었다. 첫 번째 코드 집합은 작업 코드이고 두 번째 코드 집합은 우아한 솔루션의 목적을 수행하는 루프를 작성하려는 시도입니다 (즉, 일반 대답으로 사용되는 패턴을 일반 알고리즘으로 표현). 은 if 루프가 반복 된 방법을 일반화하기C 언어 if 문 :보다 세련된 솔루션을위한 루프를 작성 하시겠습니까?

string is: copy000001 
string is: copy000002 
string is: copy000003 
string is: copy000004 
string is: copy000005 
string is: copy000006 
string is: copy000007 
string is: copy000008 
string is: copy000009 
string is: copy000010 
string is: copy000011 
string is: copy000012 
string is: copy000013 

시도 솔루션 :

:

for (c = 0; c < 5; c++) 
    { 
    if (str[d] == ':') 
     { 
     str[d] = '0'; 
     str[d-1]++; 
     d++; 
     } 
    } 

양식의 출력을 생성

#include <stdio.h> 
#include <string.h>  

int main()  
{ 
    char str[10] = "copy000000"; 
    int i = 9; 
    int a,b,c; 


    for (a = 0; a < 10; a++) 
    {   

    str[i]++; 

    for (b = 0; b < 6; b++) 
    {  
    if (str[5] == ':') 
     { 
     str[5] = '0'; 
     str[4]++; 
     } 

    if (str[6] == ':') 
     { 
     str[6] = '0'; 
     str[5]++; 
     } 

    if (str[7] == ':') 
     { 
     str[7] = '0'; 
     str[6]++; 
     } 

    if (str[8] == ':') 
     { 
     str[8] = '0'; 
     str[7]++; 
     } 

    if (str[9] == ':') 
     { 
     str[9] = '0'; 
     str[8]++; 
     } 
    } 

    printf("string is: %s\n", str);  
    b = 0;   
    }  

return 0; 
} 

이 코드는 형식의 출력을 생성

string is: copy000001 
string is: copy000002 
string is: copy000003 
string is: copy000004 
string is: copy000005 
string is: copy000006 
string is: copy000007 
string is: copy000008 
string is: copy000009 
string is: copy00000: 
string is: copy00000; 
string is: copy00000< 
string is: copy00000= 

모든 ID eas 감사하겠습니다.

+0

당신이 ['에게 STR을 의미합니까 세미콜론을 놓친 d] = '\ 0'; 대신에? 현재 시도가 문자열을 9- 종료하지 못했습니다 ... –

답변

0

그냥이 같은 B 변수로 사이클 내부를 확인하고 그것을 작동합니다 :

for(b=9; b > 4; b--){ 
    if(str[b]==':'){ 
     str[b] = '0'; 
     str[b-1]++; 
    } 
} 

당신은 단순히 처음에 이동 마지막 자리에서 숫자를 증가. 당신은 인쇄이 필요한 경우

가, 정수 또는 장기의 수를 유지하고 C/C++ reference

편집에 설명 된대로의 printf % d의 옵션을 사용하여 인쇄 고려해