Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Arrays
Nithi Thanon
Computer Science
Prince of Songkla University
2
Bubble Sort
การโปรแกรมภาษา C
นิธิ ทะนนท์
3
#include <stdio.h>
#define MAX 5
void main()
{
int number[MAX] = {1, 5, 4, 5, 2};
int temp, bottom, i;
bool exchanged = true;
bottom = MAX - 2;
while ( exchanged )
{
exchanged = false;
for (i = 0; i <= bottom; i++)
{
if (number[i] > number[i+1])
{
temp = number[i];
//exchange
number[i] = number[i+1];
number[i+1] = temp;
exchanged = true; //exchange is made
}
}
bottom--;
}
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
4
#include <stdio.h>
#define MAX 5
void BubbleSort(int number[], int max) {
int temp, i;
bool exchanged = true;
int bottom = max - 2;
while (exchanged) {
exchanged = false;
for (i = 0; i <= bottom; i++) {
if (number[i] > number[i+1]) {
temp = number[i];
//exchange
number[i] = number[i+1];
number[i+1] = temp;
exchanged = true;
//exchange is made
}
}
bottom--;
}
}
void main() {
int arr[MAX] = {1, 5, 4, 5, 2};
BubbleSort(arr, 5);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
5
Binary Search
Search 44
low
#1 0
#2 5
#3 5
high
8
8
5
mid
4
6
5
high
8
8
5
5
mid
4
6
5
Search 45
#1
#2
#3
#4
low
0
5
5
6
การโปรแกรมภาษา C
นิธิ ทะนนท์
6
#include <stdio.h>
#define MAX 10
void main() {
int number[MAX] = {2, 5, 12, 17, 23, 38, 44, 77, 84, 90};
int low = 0;
int high = MAX - 1;
int mid = (low + high) / 2;
int searchValue = 45;
while ( (low <= high) && (number[mid] != searchValue) ) {
if (number[mid] < searchValue) {
low = mid + 1;
}
else { //number[mid] > searchValue
high = mid - 1;
}
mid
= (low + high) / 2; //integer division will truncate
}
if ( low > high) {
printf("NOT_FOUND");
}
else {
printf("Index: %d, Data: %d", mid, number[mid]);
}
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
7
#include <stdio.h>
#define MAX 10
int BinarySearch(int number[], int max, int searchValue) {
int low = 0;
int high = max - 1;
int mid
= (low + high) / 2;
while ( (low <= high) && (number[mid] != searchValue) ) {
if (number[mid] < searchValue) {
low = mid + 1;
}
else { //number[mid] > searchValue
high = mid - 1;
}
mid
= (low + high) / 2; //integer division will truncate
}
if ( low > high) {
return -1;
}
else {
return mid;
}
}
void main()
{
int arr[MAX] = {2, 5, 12, 17, 23, 38, 44, 77, 84, 90};
printf("%d", BinarySearch(arr, 10, 78));
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
8
Arrays of Structures
struct bin {
char name[30]; /* name of the part */
int quantity;
/* how many are in the bin */
int cost;
/* The cost of a single part (in cents) */
};
struct bin printer_cable_bin;
strcpy(printer_cable_bin.name, "Printer Cables");
printer_cable_bin.quantity = 12;
printer_cable_bin.cost = 1000;
int total_cost = printer_cable_bin.cost * printer_cable_bin.quantity;
การโปรแกรมภาษา C
นิธิ ทะนนท์
9
struct time {
int hour;
int minute;
int second;
};
/* 0-24 */
/* 0-59 */
/* 0-59 */
const int MAX_LAPS = 4;
struct time lap[MAX_LAPS];
lap[0].hour = 10;
lap[0].minute = 20;
lap[0].second = 30;
struct time start_stop[2] = {
{10, 10, 10},
{12, 12, 12}
};
การโปรแกรมภาษา C
นิธิ ทะนนท์
10
Array and Function
// Pass by value
void swap(int a, int b) {
int t;
t = a;
a = b;
b = t;
}
void main() {
int x = 1;
int y = 2;
swap(x, y); // x:1, y:2
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
11
// Pass by reference
void swap(int &a, int &b) {
int t;
t = a;
a = b;
b = t;
}
void main() {
int x = 1;
int y = 2;
swap(x, y); // x:2, y:1
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
12
// Pass by Reference
void func(int a[]) {
a[0] = 4;
a[1] = 5;
a[2] = 6;
}
void main() {
int arr[3] = {1, 2, 3};
func(arr); // {4, 5, 6}
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
13
#include <stdio.h>
#define MAX 5
void printarr(int a[MAX]) {
for(int i=0; i<5; i++) {
printf("value in array %d\n", a[i]);
}
}
void main() {
int a[MAX];
for(int i=0; i<MAX; i++) {
a[i]=i;
}
printarr(a);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
14
#include <stdio.h>
#define ROW 3
#define COL 2
void printarr(int a[ROW][COL]) {
for (int i=0; i<ROW; i++) {
for (int j=0; j<COL; j++) {
printf("array[%d][%d]: %d ", i, j, a[i][j]);
}
printf("\n");
}
}
void main() {
int a[ROW][COL];
for(int i=0; i<ROW; i++) {
for(int j=0; j<COL; j++) {
a[i][j] = i*10+j;
}
}
printarr(a);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
15
Text File
Write file
FILE *fp;
// fp = fopen("array_data.txt", "r+t");
// fp = fopen("array_data.txt", "a+t");
fp = fopen("array_data.txt", "w+t");
if (fp ==NULL) {
printf("File not found !");
}
else {
fprintf(fp, "%d \n", 100);
fclose(fp);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
16
Read File
FILE *fp;
fp = fopen("array_data.txt", "r+t");
if (fp ==NULL) {
printf("File not found !");
}
else {
int data = 0;
fscanf(fp, "%d", &data);
fclose(fp);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
17
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 1000
int Random(int min, int max) {
return (int)( ((double)rand() / (RAND_MAX + 1)) * (max - min) + min );
}
int main() {
// Seed
srand(unsigned(time(NULL)));
// File
FILE *fp;
fp = fopen("array_data.txt", "w+t");
if (fp ==NULL) {
printf("File not found !");
}
else {
for (int i=1; i<=MAX_SIZE; i++) {
fprintf(fp, "%d \n", Random(1, 100));
}
fclose(fp);
}
return (0);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
18
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 1000
int Random(int min, int max) {
return (int)( ((double)rand() / (RAND_MAX + 1)) * (max - min) + min );
}
int main() {
// File
FILE *fp;
fp = fopen("array_data.txt", "r+t");
if (fp ==NULL) {
printf("File not found !");
}
else {
int data = 0;
for (int i=0; i<MAX_SIZE; i++) {
fscanf(fp, "%d", &data);
printf("%d\n", data);
}
fclose(fp);
}
return (0);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์
19
#include <stdio.h>
#define MAX 2000
int main() {
int numbers[MAX];
int count=0;
FILE *fp;
fp = fopen("BubbleSort.txt", "r+t");
if (fp == NULL) {
printf("File not found!");
}
else {
while (!feof(fp)) {
fscanf(fp, "%d", &numbers[count]);
count++;
}
fclose(fp);
}
return (0);
}
การโปรแกรมภาษา C
นิธิ ทะนนท์