12161542   6달 전

컴파일해서 숫자 81개 복붙하면

첫번째줄 숫자 9개만 입력되고

출력은 5100이나오네요..

이 코드가 잘못된 부분이 있으면 고쳐주시고, 혹은 정상적으로 돌아가는 코드를 알고계시면

알려주시면 감사드리겠습니다!!

taewony   6달 전

입출력에 대해 더 공부 필요하겠어요...

입력은 아래와 같이 하는 것 좋겠습니다.

for (int i = 0; i < 9; i++)
  for (int j = 0; j < 9; j++)
   scanf("%d", &a[i][j]);


그리고 maximum구하는 법도 이상합니다...

for (int i = 0; i < 9; i++) {
  for (int j = 0; j < 9; j++) {
   if (a[i][j] > maximum) {
    maximum = a[i][j];
    b = i;
    c = j;
   }
  }
 }
 printf("%d\n", maximum);
 printf("%d %d\n", b, c);

12161542   6달 전

감사합니다!!
근데 하나 궁금한 것이 있는데요!


10798문제에서는#include <stdio.h>
int main()
{
 char board[5][15] = { 0 };
 int i, j;
 for (i = 0; i < 5; i++)
  scanf("%s", board[i]);

 for (j = 0; j < 15; j++)
  for (i = 0; i < 5; i++)
   if (board[i][j] != '\0')
    printf("%c", board[i][j]);
 return 0;
}

이런식으로 string으로 입력받는 것이 가능했는데,

2566번 문제에서도 똑같이 해봤는데..

#include <stdio.h>
int main()
{
 int a[9][9] = { 0 };
 for (int i = 0; i < 9; i++)
  scanf("%s", a[i]);

 int maximum = 0;
 int b, c;
 for (int i = 0; i < 9; i++) {
  for (int j = 0; j < 9; j++) {
   if (a[i][j] > maximum) {
    maximum = a[i][j];
    b = i;
    c = j;
   }
  }
 }
 printf("%d\n", maximum);
 printf("%d %d\n", b, c);
 return 0;
}


컴파일이 안되더라구요ㅠㅠ 왜그럴까요??




taewony   5달 전

음.. 앞으로 프로그래밍 공부하면서 변수/인자들의 Type(데이터 형 혹은 틀) 의 중요성에 대해 배우게 될텐데요,

C/C++는 compile시에 Type을 서로 맞추도록 문법 체크를 합니다.


질문에 답을 하려면 2가지를 파악해야 합니다. 혹은 배워야 합니다.

1) char board[5][15] = { 0 }; 선언과 scanf()내의 %s는 서로 Type이 맞습니다.

    그런데 int a[9][9] = { 0 };는 scanf()내의 %s와는 맞지 않죠.

2) C 배열에서 예를들어 int a[5];로 선언하고 int *pa = a;로 사용하면 Type이 맞습니다.

    배열에서 [] 괄호 안에 index를 넣는데, 이걸 아예 빼버리면 그 배열의 시작 주소가 됩니다.

    결국 int *pa = a; 로 짜는 것은 int *p = &a[0];로 길게 써주는 것의 약식 표현이라 볼 수 있죠.

    숙달되기 전까지는 너무 짧게 작성하는 기교는 피하는 게 좋습니다.


결론적으로 Type와 입출력에 대해 스스로 공부해 가며 재미를 찾아 보세요...

누구에게 물어서 해결될 것 같지 않아요. ^^;;;


댓글을 작성하려면 로그인해야 합니다.