[CS 50トレーナー]第5週
第一題
デュアルポインタ:2 D配列(6 x 5)を宣言し、ポインタを使用して順番に出力します。
[ソースコード]
/*
이중 포인터
arr[i] = *(arr+i) -> P = *(arr+i)로 치환
p[j] = *(p+j) = *(*(arr+i)+j)
*/
#include <stdio.h>
int main()
{
int arr[6][5] =
{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
{26, 27, 28, 29, 30}
};
int col = sizeof(arr[0]) / sizeof(int);
int row = sizeof(arr) / sizeof(arr[0]);
printf("[ 출력값 ]\n");
for (int i = row-1; i >= 0; i--)
{
for(int j = 0; j < col; j++)
{
printf("%d\t", *(*(arr+i)+j));
}
printf("\n");
}
return 0;
}
[結果画面]
[参考資料]
[Developer Rhino]二重ポインタと二次元配列の関係(Rhino)https://lsoovmee-rhino.tistory.com/24
第三題
ポインタを使用したバブルソートプログラム
[ソースコード]
// 포인터를 활용한 버블 정렬 프로그램
#include void sort(int n, int *arr);
int main()
{
int n = 7;
int arr[7] = { 0, 25, 10, 17, 6, 12, 9 };
sort(n, arr);
return 0;
}void sort(int n, int *arr)
{
int temp = 0;
for (int i = 0; i < n; i++)
{
for (int j = i+1; j < n-1; j++)
{
if (*(arr+i) > *(arr+j))
{
temp = *(arr+i);
*(arr+i) = *(arr+j);
*(arr+j) = temp;
}
}
}
printf("출력값 :");
for (int i = 0; i < n; i++)
{
printf(" %d", *(arr+i));
if (i == n-1) break;
printf(",");
}
printf("\n");
}
Reference
この問題について([CS 50トレーナー]第5週), 我々は、より多くの情報をここで見つけました https://velog.io/@_ddaezi/CS50-코칭스터디-5주차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol