조건 출력 질문

익명 사용자의 이미지

int coo_coo(int start, int end, int dan)
{
 int i,j,k=0;
 
 for(j=1; j<=9; j++)
 {
  for(i=start; i<=end; i++)
  {
   printf("%d * %d = %d\t",i,j,i*j);
   k++;
   if(k==dan)
   {
    printf("\n");
    k=0;
    break;
   }
  }
 }
 
 return 0;
}

구구단을 출력하는 함수입니다.
start부분에는 시작 단, end부분에는 끝 단, dan부분에는 몇단씩 끊을것인지의 숫자입니다.
제가 원하는 것은
시작 단: 3단 끝 단 : 5단 나타날 단 : 2
이렇게 했을때

3*1=3 4*1=4
3*2=6 4*2=8
.... ....
3*9=27 4*9=36

5*1=5
5*2=10
....
5*9=45

이렇게 나타내고 싶습니다.
하지만 위와 같은 소스로 했을경우 5단은 나오지 않고 4단까지만 나오네요.
소스가 난잡하지만 다른 방법이나 해결책좀 말씀해주세요

snowall의 이미지

i*j, (i+1)*j, ..., (i+dan)*j
i*(j+1), (i+1)*(j+1), ..., (i+dan)*(j+1)
...
(i+dan+1)*j, (i+dan+2)*j, ... , (i+dan+dan)*j
...

이런 식으로 나오면 되겠군요.

for(k=start;k+=dan;k<=end){
  for(j=1;j++,j<=9){
    for(i=k,i++,i<=dan){
      print(i*j)
    }
   print("\n")
  }
}

이런 구조로 짜면 될 것 같은데요.

테스트 해 보진 않았습니다..

피할 수 있을때 즐겨라! http://melotopia.net/b

kalevala의 이미지

짜고나니 snowall 님의 것과 같네요 :( 늦었군요.

int coo_coo(int start, int end, int dan)
{
    while(start <= end){
        for(int i=1; i<=9; i++){
            for(int j=0; j<min(dan, end-start+1); j++){
                printf("%d * %d = %d\t", start+j, i, (start+j)*i);
            }
            puts("");
        }
        start += dan;
    }
    return 0;
}
익명 사용자의 이미지

:( 늦었군요. 54분이나.