배열질문입니다 ...
알찬마루
/* 3행 3열 의 두 행렬의 합과 차를 계산하여 출력
하는 프로그램을 작성하시오.
( 단 행렬의 입력은 키보드로 부터 입력 할것.
합구하는 부분 / 차를 구하는 부분은
별도의 두개의 함수로 작성할것 )
3 3 3 1 1 1 4 4 4
3 3 3 + 1 1 1 = 4 4 4
3 3 3 1 1 1 4 4 4
3 3 3 1 1 1 2 2 2
3 3 3 - 1 1 1 = 2 2 2
3 3 3 1 1 1 2 2 2
(위와 같이 계산이 되도록 프로그램을 작성할것.
출력화면은 위와 같이 하지 않아도 됩니다.
프로그램 작성하기 편한 방법으로 출력 하시면 됩니다. )
*/
#include stdio.h
void sum(int ***, int ***);
void cha(int ***, int ***);
void main()
{
int number1[3][3];
int number2[3][3];
int i, j;
int ***num1=number1;
int ***num2=number2;
printf(첫번째 행렬의 입력입니다.\n);
printf(-------------------------------------\n);
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%d행의 %d번째 숫자를 입력하세요 : , i+1, j+1);
scanf(%d, &number1[i][j]);
}
}
printf(-------------------------------------\n);
printf(두번째 행렬의 입력입니다.\n);
printf(-------------------------------------\n);
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%d행의 %d번째 숫자를 입력하세요 : , i+1, j+1);
scanf(%d, &number2[i][j]);
}
}
printf(-------------------------------------\n);
sum(num1, num2);
cha(num1, num2);
}
void sum(int ***num1, int ***num2)
{
int i, j;
printf(두 행렬의 합\n);
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num1[i][j]);
}
printf(\n);
}
printf( + );
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num2[i][j]);
}
printf(\n);
}
printf( = );
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num1[i][j]+num2[i][j]);
}
printf(\n);
}
printf(\n);
}
void cha(int ***num1, int ***num2)
{
int i, j;
printf(두 행렬의 차\n);
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num1[i][j]);
}
printf(\n);
}
printf( + );
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num2[i][j]);
}
printf(\n);
}
printf( = );
for(i=0; i3; i++){
for(j=0; j3; j++){
printf(%5d , num1[i][j]-num2[i][j]);
}
printf(\n);
}
printf(\n);
}
이 프로그램의 어디가 잘못된건가요
오류를 못잡겠어요 도와주세요
-
집1어치워 2023-05-05
음;; 자꾸 행과 열이 헷갈리는군요;;
암튼 int arr[2][4] 을 가리키고 싶은 포인터를 선언하시려면
int (*pArr)[4] = arr; 이런 식으로 정의하시면 됩니다. -
길가온 2023-05-05
2차원 배열을 가리키는 포인터의 선언이 잘못되었습니다..
2차원 배열이라고 해서, 가리키는 포인터가 더블 포인터가 되는 것이 아니라
int (*num1)[3]=number1; -- 이런식으로 행의 갯수를 알려줘야 됩니다.