PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/03/18 10:18:12
Name BloodElf
Subject C 프로그래밍 질문입니다.
#include<stdio.h>

void main()
{
        float a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;
        printf("***********************************************************\n");
        printf("*            [a b c]                    [j k l]           *\n");
        printf("*        A = [d e f]                B = [m n o]           *\n");
        printf("*            [g h i]                    [p q r]           *\n");
        printf("***********************************************************\n\n");
        printf("Input A (as a,b,c,d...,h,i): ");
        scanf("%f,%f,%f,%f,%f,%f,%f,%f,%f",&a,&b,&c,&d,&e,&f,&g,&h,&i); //receives the component of matrix for A and B
        printf("Input B (as j,k,l,....,q,r): ");
        scanf("%f,%f,%f,%f,%f,%f,%f,%f,%f",&j,&k,&l,&m,&n,&o,&p,&q,&r);
        printf("\n");
        printf("************************  Results  ************************\n");
        printf("          [%5.1f %5.1f %5.1f]         [%5.1f %5.1f %5.1f]     \n",a,b,c,j,k,l); //the overview of the input matrices
        printf("      A = [%5.1f %5.1f %5.1f]     B = [%5.1f %5.1f %5.1f]     \n",d,e,f,m,n,o);
        printf("          [%5.1f %5.1f %5.1f]         [%5.1f %5.1f %5.1f]   \n\n",g,h,i,p,q,r);

        printf("          [%5.1f %5.1f %5.1f]                              \n",a+j,b+k,c+l); //the sum of matrices
        printf("  A + B = [%5.1f %5.1f %5.1f]                              \n",d+m,e+n,f+o);
        printf("          [%5.1f %5.1f %5.1f]                            \n\n",g+p,h+q,i+r);
        
        printf("          [%5.1f %5.1f %5.1f]                              \n",a-j,b-k,c-l); //the subtraction of matrices
        printf("  A - B = [%5.1f %5.1f %5.1f]                              \n",d-m,e-n,f-o);
        printf("          [%5.1f %5.1f %5.1f]                            \n\n",g-p,h-q,i-r);
        
        printf("          [%5.1f %5.1f %5.1f]                              \n",a*j+b*m+c*p,a*k+b*n+c*q,a*l+b*o+c*r);
        printf("     AB = [%5.1f %5.1f %5.1f]                              \n",d*j+e*m+f*p,d*k+e*n+f*q,d*l+e*o+f*r);
        printf("          [%5.1f %5.1f %5.1f]                              \n",g*j+h*m+i*p,g*k+h*n+i*q,g*l+h*o+i*r); //the multiple of matrices
/* END of code*/
}

이게 유저가 주는 값은 n,n,n,n,...꼴로 받아서 행렬에 대입한 다음에 행렬의 연산을 해주는 프로그램인데요

그냥 한자리수만 주면 깔끔한데 막 9178173와 같은 큰 숫자를 넣으면 행렬의 형태가 일그러집니다.. 한 숫자만 많은 공간을 차지해서 상자가 찌그러져요 ㅠㅠ

그러려면 %5.1f에서 자릿수 선언이 가변적이어야 하는데 어떻게 해야할지 고민입니다. 도와주세요

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/03/18 10:30
수정 아이콘
그냥 숫자 사이사이에 \t 넣어서 대충 정렬시키면 되지않을까요 ?
11/03/18 11:19
수정 아이콘
printf 의 첫번째 포맷 문자열은 말 그대로 문자열입니다.

char buffer[256];
int digitNumber = 5;
/* digitNumber를 계산합니다. 더 늘려줄 값으로... 자릿수는 상용 log 로 구하면 나오지 않을까 하구요. */
...
/* 포맷 식이기 때문에 %를 찍기 위해 %% 를 사용하고 스트링이기 때문에 \ 를 찍기 위해 \\를 사용합니다. digitNumber는 한 번만 써도 알아서 채울 것 같은데(맞는지 모르겠구요) 예의상 다 씁니다.
*/
sprintf(buffer, " [%%%d.1f %%%d.1f %%%d.1f] [%%%d.1f %%%d.1f %%%d.1f] \\n", digitNumber, digitNumber, digitNumber, digitNumber, digitNumber, digitNumber);
...
printf(buffer,a,b,c,j,k,l);

실제 컴파일은 안해봤습니다. 에러가 날지도 모르겠지만 개념은 이렇다는거...
11/03/18 16:11
수정 아이콘
윗분 말씀처럼 해도 되긴한데, 이문제에 있어서는 좀더 쉬운 해결법이 있습니다.
잘쓰지는 않지만 printf 에 쓰는 포멧에 특이한게 몇개 있거든요 그중에 하나로 %*d 처럼 길이에 *을 넣는 것입니다.
이렇게 하면 길이가 뒤에 파라메터를 받아서 결정되지요
예제를 보면 아래와 같습니다.
for(int i=1; i<=10; i++)
printf("%0*d\n",i,i);

워낙 잘안쓰는 경우라 저도 가물가물하네요, 아무튼 위처럼하면 길이는 i, 이고 비는자리는 0으로 채워질 겁니다. 물론 %*d라고 써도 되구요.
다른 특이한 놈들도 있던데 한번 찾아보시면 재미있을 거에요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
101158 내일 생애 첫 오프를 뛰려고 합니다!!! (유경험자분들 도와주세요) [4] Shiningday871623 11/03/18 1623
101157 영문폰트 추천 부탁드립니다. [4] 소르바스의 약속2190 11/03/18 2190
101156 혹시 테크핏 상의, 헬스장에서 입으시는분 있나요?? [5] 석호필3304 11/03/18 3304
101155 헬스 질문 올립니다. [2] [fOr]-FuRy2108 11/03/18 2108
101153 혹시 웹상에서 어플 다운받을 수 있는 사이트 아시는 분 있을까요 [2] 눈물이 추적추적1821 11/03/18 1821
101151 서울 신사동에서 경기도 성남시 분당구 판교세븐벤처벨리 가는 방법 알려주세요 [5] 그리운 지구인2325 11/03/18 2325
101150 한의원 추천 부탁드립니다. 레드나이1657 11/03/18 1657
101149 폰 1년썼는데 뽐뿌에서 스마트폰 바꾸면.. [4] Bikini2343 11/03/18 2343
101148 컴 조립 후 증상 질문입니다 [9] 생선가게 고양이1808 11/03/18 1808
101147 C 프로그래밍 질문입니다. [3] BloodElf1617 11/03/18 1617
101144 컴퓨터 수리에 관해서 질문이 있습니다. [3] 운차이1657 11/03/18 1657
101143 외장하드가 살아서 돌아왔어요. [3] 현상2001 11/03/18 2001
101142 히로시마 원자폭탄 질문입니다. [4] 학교얘들2892 11/03/18 2892
101141 요오드 구해서 드시는 분 계신가요...? [4] nexon2248 11/03/18 2248
101140 crazyremote에 대한 질문입니다. [2] 맨투맨1539 11/03/18 1539
101138 엔화가 미친듯이 올라가고 있습니다. 이유가 뭘까요? [8] 스웨트3490 11/03/18 3490
101137 디자이어 문자 글씨 크게 볼 수 없나요?? [5] ibakow2706 11/03/18 2706
101135 외장하드 추천 부탁드립니다. [2] marchrabbit1815 11/03/17 1815
101133 용산 전자상가에 매직기 있나요 민주2154 11/03/17 2154
101132 워3 유즈맵 추천해주세요~~ [8] 화잇밀크러버2320 11/03/17 2320
101131 TV에 나오는 연예인 의상,악세사리 정보 얻으려면? [2] RealWorlD2646 11/03/17 2646
101130 컴퓨터 케이스 구매 하려는데 고민이랑 질문이 있습니다. [3] 괴도키드1580 11/03/17 1580
101129 일본은 대체 뭘믿고 전기를 민영화 했는지.. [9] bins4812 11/03/17 4812
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로