C Programming: Arrays

C Programming: Arrays

Photo by Mika Baumeister / Unsplash

Array Definition

  • เป็นตัวแปรชนิดหนึ่ง
  • สามารถเก็บข้อมูลหลายๆ ค่าได้ในตัวแปรเดียว
  • ต้องระบุชนิดของข้อมูลตอนประกาศ
  • ต้องระบุขนาดของข้อมูลที่ต้องเก็บ

Syntax

int num[];
int num[5];
int num[] = {1, 2, 3, 4, 5};

Type

  • สามารถใช้ type ได้เหมือนตัวแปรทั่วไแ
char text[] = { 'a', 'b', 'c' };
int num[] = { 1, 2, 4 };
float dec[] = { 1.00, 2.11, 4.14 };

Index of arrays

  • ใน Array สามารถเก็บข้อมูลเป็นชุดได้ โดยแต่ละตำแหน่งจะเก็บข้อมูลได้ตำแหน่งละ 1 ข้อมูล
  • และการเข้าถึงข้อมูล ต้องระบุเป็นตำแหน่ง (index) โดยเริ่มที่ 0 (ตำแหน่งแรก)
  • ตำแหน่งสุดท้าย คือ ขนาดของ Array - 1

sizeof()

  • Array จะมี function ช่วย สำหรับไว้หาขนาดของ array นั้น
  • แต่ sizeof(array) จะคืนค่าเป็นจำนวน Byte ทั้งหมดของ array นั้น
  • ดังนั้นต้องหารด้วยข้อมูลตำแหน่งใดๆก็ได้ (ส่วนมากใช้ตำแหน่ง 0)
int arr[] = { 1, 3, 4, 6, 7 };
print("%d", sizeof(arr));

int size = sizeof(arr) / sizeof(arr[0]);
print(size);

Array Loops

  • loop สามารถนำมาประยุกต์ใช้กับ array ได้
  • โดยการวนลูปจะเริ่มที่ index = 0 จนถึง index = ขนาดของ array - 1
  • สามารถดึงค่าของแต่ละตำแหน่งด้วยการระบุ index ที่ได้จากการวนลูปแต่ละรอบ เช่น arr[i]
#include <stdio.h>

int main() {
  int num[5] = {1, 2, 3, 4, 5};

  int size = sizeof(num) / sizeof(num[0]);
  printf("%d\n", size);

  // output
  for(int i = 0; i < SIZE; i++){
     printf("%d,", num[i]);
  }
  printf("\n");
}

Multidimensional Array

  • หลักการเดียวกับ Array 1 มิติ
  • มิติที่ 2 หรือมากกว่า จะเก็บข้อมูลเป็น Array เหมือนกัน
  • ถ้าภาษา c ต้องเข้าถึงข้อมูลที่เป็นค่า ไม่สามารถจะแสดงผล array ได้ ดังนั้นเราต้องวนลูปซ้อนข้างในอีกรอบเพื่อให้แสดงค่าของมิติที่ 1 และ 2 ได้
#include <stdio.h>

int main() {
  const int COLUMN = 3;
  const int ROW = 3;
  int table[COLUMN][ROW] = {
    {1, 2, 3},
    {2, 3, 4},
    {3, 4, 5}
  };
  for (int i = 0; i < COLUMN; i++) {
    for (int j = 0; j < ROW; j++) {
      printf("%d", table[i][j]); 
    }
  }
}

Exercise

  1. หาผลบวก, ค่ามากที่สุด, ค่าน้อยที่สุด ของตัวเลขใน array ต่อไปนี้
    1. { 4, 5, 12, 6, 7, 8 }
    2. { 3, 6 }
    3. { 0 }
  2. สร้างโปรแกรมรับ input ตัวเลข 5 ตัวจากนั้น
    1. แสดงผลตัวเลขตามลำดับที่ใส่เข้าไป
    2. แสดงผล reverse ของตัวเลขที่ใส่เข้าไป
  3. Symmetric Array 2d: รับค่า input ขนาดของ metrix เช่น 3 x 3, 4 x 4 จากนั้นรับค่าตัวเลขไปใส่ให้ครบจำนวนใน metrix เช่น 3 x 3 รับค่า 9 ตัวเลข 4 x 4 รับค่า 16 ตัวเลข จากนั้นให้คำนวณหาว่า Matrix นี้ Symmetric หรือไม่
💡
Symmetric Metrix คือ Metrix ที่ transpose แล้วมีค่าเท่าเดิม

Reference

Multidimensional Arrays in C - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
Symmetric & Skew Symmetric matrices - Definition with Examples
In a symmetric matrix,A’ = AAnd in a skew symmetric matrixA’ = −ANote:Here matrix should be a square matrixLet’s take some examplesForSince A = A’∴ A is a symmetric matrixForTherefore,B’ = −BSo, B is a skew symmetric matrixNote:In a skewsymmetricmatrix, diagonal elements arealways 0.