느낀점 및 설명

보면 알 수 있지만, 연산부분을 나눌 수 있는데도 불구하고 나누지 않았다.
이유는 속도때문.. (알고리즘따위 버려버리고 단지 오버헤드를 줄임으로써 속도를 높이려는 대마왕의 수작..;;ㅁ;;)
그나저다 이 cpu_clocks라는거.. 너무 안정확하잖아!!!!
입력을 받는 부분을 포함시켜 버리면.. 늦게 입력하면 걸린시간이 많은걸로 나오고, 빨리 입력하면 걸린시간이 짧은걸로 나온다.
그래서 일단 그부분을 제외하긴 했는데..(입력부를 위에두어서 계산에 제외한게 현재소스).. 그러니까 0초.. 대략 할말 없음..
킁..;;ㅁ;;

소스

~cpp 
// CPU_CLOCKS 구하는 법. 
#include <time.h> 
#include <stdio.h>
#include <iostream>
const int BAE_YOL_SU=2;
int size_x[BAE_YOL_SU];
int size_y[BAE_YOL_SU];
int *baeyol[BAE_YOL_SU];

void input_data();

int main() 
{ 
	input_data();// 기본 변수들 
		int time_in;   // 초기 시작 시간. 
	time_in = clock();   // 초기 시작 시간을 입력한다. 
	if (size_x[0]!=size_x[1] || size_y[0]!=size_y[1])
		printf("불가능\n");
	else
	{
		for (register int i=0; i<size_y[0]; ++i)
		{
			for (register int j=0; j<size_x[1]; ++j)
			{
				printf("%d ",*(baeyol[0]+i*size_x[0]+j)+*(baeyol[1]+i*size_x[1]+j));
			}
			printf("\n");
		}
	}
	if (size_x[0]!=size_y[1])
		printf("불가능\n");
	else
	{
		for (register int i=0; i<size_y[0]; ++i)
		{
			for (register int j=0; j<size_x[1]; ++j)
			{
				int temp=0;
				for (register int k=0; k<size_x[0]; ++k)
					temp+=(*(baeyol[0]+i*size_x[0]+k))*(*(baeyol[1]+k*size_x[1]+j));
				printf("%d ",temp);
			}
			printf("\n");
		}
	}
	for (register int i=0; i<BAE_YOL_SU; ++i)
		free(baeyol[i]);
	printf("CPU CLOCKS = %d\n", clock() - time_in);   // 끝났을때 시간 - 초기 시작시간 = 프로그램 실행 시간 
	return 0;    // 프로그램 종료. 
} 

void input_data()
{
	for (register int i=0; i<BAE_YOL_SU; ++i)
	{
		printf("배열의 세로길이를 입력해주세요.>>");
		scanf("%d",&size_y[i]);
		printf("배열의 가로길이를 입력해주세요.>>");
		scanf("%d",&size_x[i]);
		printf("\n");
		baeyol[i]=(int*)malloc(sizeof(int)*size_x[i]*size_y[i]);
		for (register int j=0; j<size_y[i]; ++j)
		{
			for (register int k=0; k<size_x[i]; ++k)
			{
				printf("%d행 %d열의 숫자를 입력해주세요.>>",j+1,k+1);
				scanf("%d",baeyol[i]+j*size_x[i]+k);
			}
			printf("\n");
		}
	}
	printf("\n");
}

나에게할말

Retrieved from http://wiki.zeropage.org/wiki.php/수학의정석/행렬/조현태
last modified 2021-02-07 05:30:15