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

C/C++ Q/A
[32] 매직스퀘어 다했는데 텍스트파일로 출력하는 방법~글구
황정옥 [] 2901 읽음    2001-11-24 01:16
리포트인데 마감일이 지났는데두 아직두 못내구 있네여.
제실력으로는...ㅠ.ㅠ 혼자 해볼려구 했는데 안되네여 도와주세요...
볼렌드 c++로 수업하거든여 매직 스퀘어인데..
#include<stdio.h>
 
  #define MaxSize 77               //최대 스퀘어 크기 지정
  int square[MaxSize][MaxSize];
  void main()
  {

    int n,k,l,j,key;          //변수 지정

                //아래코드는 신상정보 표시
    printf("____________________________________________________________________________\n");
    printf("\n                                 자료구조\n");
    printf("                                         동의공업대학 인터넷정보과\n");
    printf("                                                     200153319 황정옥”);
    printf("\n___________________________________________________________________________\n");
    printf("매직 스퀘어 크기 입력 [01-77] : ");
    scanf("%d",&n);

    if ((n>(MaxSize))||(n<1)) {        //범위가 넘었을때 메세지
        printf("\n[도우미] : 범위가 넘었습니다.\n");
        printf("           범위는 1에서 77까지입니다.\n");
        }

    else if (!(n%2)) {                 //짝수일때 메세지
        printf("\n[도우미] : 짝수입니다. \n");
        printf("           짝수는 매직스퀘어 형식에 안 맞아요.\n" );
        }
    else {

        for (int i=0;i< n;i++)             //변수 i 초기화
                for(int j=0;j< n;j++)
            square[i][j]=0;
    square[0][(n-1)/2]=1;   //맨처음위치. 즉 맨위가운데 시작위치.

    key=2;
    i=0;
    j=(n-1)/2;
    while(key<=n*n){
                if (i-1< 0) k=n-1;else k=i-1;    //현 위치에서 왼쪽위로 옮김
                if (j-1< 0) l=n-1;else l=j-1;
        if (square[k][l]) i=(i+1)%n;   //만일 왼쪽위에 값이 있으면 아래로 옮김
        else {
            i=k;
            j=l;
        }
        square[i][j]=key;      //실제로 대입될 수
        key++;
        }

    printf("\n매직 스퀘어 결과 출력   \n\n");   //출력화면
        for (i=0;i< n;i++){
                for (j=0;j< n;j++)
            if (square[i][j] < 10) printf("  %d  ",square[i][j]);  //화면맞추기위해
            else if (square[i][j] < 100) printf(" %d  ",square[i][j]);  //화면맞추기위해
            else printf("%d  ",square[i][j]);

            if (!(j%n)) printf("\n");


    }
     }
   printf("\n아무키를 누르시면 끝나요.");
 
  }

이까지했는데 이걸 파일로 출력하려면 fprintf 이걸 쓰라구 하던데, 아직 그건안배웠거든여  그리고 지금 소스는 결과값이 합계가 안나와요! 이렇게 나와야 하는데..
3x3의 경우
                     합
         값1 값2 값3 합
         값4 값5 값6 합
         값7 값8 값9 합
         합  합  합  합     이런식으로 나와야 하거든여 그럼 어케 고쳐야하나여? 이시간까지 눈빠져라 이러구 있습니다.. 낮에는 회사서 일하고, 밤에는 학교가고 ~ 무자게 힘드네여...아직 씨에는 무지 초보라서 잘아시는분들 갈켜주세여~
제발 ㅠ.ㅠ

+ -

관련 글 리스트
32 매직스퀘어 다했는데 텍스트파일로 출력하는 방법~글구 황정옥 2901 2001/11/24
33     Re:매직스퀘어 다했는데 텍스트파일로 출력하는 방법~글구 박지훈.임프 3497 2001/11/24
35         Re:Re:매직스퀘어 다했는데 텍스트파일로 출력하는 방법~글구 태즈 3408 2001/11/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.