//Key
#include <stdio.h>
#include <string.h>
#include <math.h>
void problem1A()
{
// ให้เขียนโปรแกรมเพื่อคำนวณระยะเวลา (time) ที่ต้องใช้ในการเดินทางจากการขับรถตามความเร็ว (speed)
// และระยะทาง (distance) ที่กำหนด
// โดยสมมุติว่ารถที่ขับมีตัววัดความเร็วเป็นหน่วยไมล์ต่อชั่วโมง แต่ระยะทางในการเดินทางวัดเป็นหน่วยกิโลเมตร
// สำหรับระยะทาง 1 ไมล์ จะมีค่าเท่ากับ 1.609 กิโลเมตร
// ให้โปรแกรมมีรูปแบบการทำงานดังตัวอย่างนี้
// Enter speed (miles/hour): 90
// Enter distance (kilometer): 445
// Time to destination is 3.07 hour(s)
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศตัวแปร สำหรับเก็บค่าระยะทางและความเร็วเป็นจำนวนเต็ม
// และเวลาที่ใช้ในการเดินทางเป็นจำนวนจริง (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int disrance, speed;
float time;
// รับค่าความเร็วเป็นหน่วยไมล์ต่อชั่วโมง (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter speed (miles/hour): ");
scanf("%d", &speed);
// รับค่าระยะทางเป็นหน่วยกิโลเมตร (** 1.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter distance (kilometer): ");
scanf("%d", &disrance);
// คำนวณเวลาที่ใช้ในการเดินทาง (** 1.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
time = (float)(disrance / 1.609) / speed;
// แสดงผลเวลาที่ใช้ในการเดินทางโดยให้มีเลขทศนิยม 3 หลัก (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Time to destination is %.2f hour(s)", time);
printf("\n");
}
void problem2A()
{
// ให้เขียนโปรแกรมเพื่อคำนวณดอกเบี้ยเงินฝากสำหรับการฝากเงินไม่เกิน 1 ปี โดยมีอัตราดังนี้
// ฝากไม่ถึง 3 เดือน ให้ดอกเบี่้ย 0.75%
// ฝากครบ 3 เดือนขึ้นไป แต่ไม่ถึง 6 เดือน ให้ดอกเบี้ย 1.25%
// ฝากครบ 6 เดือนขึ้นไป แต่ไม่ถึง 9 เดือน ให้ดอกเบี้ย 1.75%
// ฝากครบ 9 เดือนขึ้นไป ให้ดอกเบี้ย 2%
// ให้โปรแกรมมีรูปแบบการทำงานดังตัวอย่างนี้
// Enter deposit amount: 1500
// Enter duration (1-12): 6
// Your interest is 26.25 and your total balance is 1526.25
// หรือ
// Enter deposit amount: 1500
// Enter duration (1-12): 13
// Duration is not valid.
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศตัวแปร สำหรับเก็บค่าเงินฝาก (deposit) และระยะเวลาฝาก (duration) เป็นจำนวนเต็ม
// และค่าดอกเบี้ย (interest) เป็นจำนวนจริง (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int deposit, duration;
float interest;
// รับค่าเงินฝากและระยะเวลา (** 0.75 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter deposit amount: ");
scanf("%d", &deposit);
printf("Enter duration (1-12): ");
scanf("%d", &duration);
// ถ้าระยะเวลาน้อยกว่า 1 หรือมากกว่า 12 ให้แสดงข้อความ "Duration is not valid." (** 1 คะแนน **)
// แต่ถ้าระยะเวลาอยู่ในช่วง 1-12 ก็ให้คำนวณหาดอกเบี้ย และแสดงผลค่าดอกเบี้ย (interest) ที่จะได้รับ
// รวมทั้งค่ายอดเงินที่บวกดอกเบี้ยแล้วโดยให้มีเลขทศนิยม 2 หลัก ซึ่งจะมีประกอบด้วยการทำงานดังนี้
// เช็คเงื่อนไขสำหรับแต่ละอัตรา (** 2 คะแนน **)
// ในแต่ละเงื่อนไข คำนวณค่าดอกเบี่้ย (** 1 คะแนน **)
// แสดงผลลัพธ์จากดอกเบี้ยที่คำนวณได้ (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
if (duration >=1 && duration <= 12)
{
if (duration < 3) interest = (float)(deposit*0.75)/100;
else if (duration < 6) interest = (float)(deposit*1.25) / 100;
else if (duration < 9) interest = (float)(deposit*1.75) / 100;
else if (duration >= 9) interest = (float)(deposit*2.00) / 100;
printf("Your interest is %.2f and your total balance is %.2f",interest,interest+deposit);
}
else
{
printf("Duration is not valid.");
}
printf("\n");
}
void problem3A()
{
// ให้เขียนโปรแกรมที่รับค่าตัวเลขจำนวนเต็ม 1 ตัว ทีมีค่าตั้งแต่ 2 ขึ้นไปแต่ไม่เกิน 15 แทนค่าความกว้างครึ่งหนึ่งของรูป
// แล้วทำการแสดงผลเป็นรูปสามเหลี่ยมแบบตะแคงขวาตามความกว้างที่กำหนด ดังตัวอย่างต่อไปนี้
// Enter half of width: 4
// *
// *
// *
// *
// *
// *
// *
// *
// จากตัวอย่างข้างต้น
// บรรทัดแรกจะแสดงช่องว่าง 0 ตำแหน่ง ตามด้วยดอกจัน
// บรรทัดที่สองจะแสดงช่องว่าง 2 ตำแหน่ง ตามด้วยดอกจัน
// บรรทัดที่สามจะแสดงช่องว่าง 4 ตำแหน่ง ตามด้วยดอกจัน
// บรรทัดที่สี่จะแสดงช่องว่าง 6 ตำแหน่ง ตามด้วยดอกจัน
// ...
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรสำหรับเก็บค่าความกว้างครึ่งหนึ่ง (width) เป็นจำนวนเต็ม
// และตัวแปรสำหรับวน loop (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int width, i, j;
// รับค่าความกว้างที่แทนครึ่งหนึ่งของความกว้างของรูป (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter half of width: ");
scanf("%d", &width);
// วาดครึ่งบนของสามเหลี่ยม (hint: ใช้ loop ซ้อนกัน 2 ชั้น) โดยมีการดำเนินการที่เกี่ยวข้องดังนี้
// วน loop นอกสำหรับแต่ละบรรทัด (** 1.5 คะแนน **)
// วน loop ในสำหรับแสดงช่องว่าง (** 1.5 คะแนน **)
// แสดงค่าช่องว่างและดอกจัน (** 0.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = width; i >0; i--)
{
for (j = i; j < width; j++)
{
printf(" ");
}
printf("*\n");
}
// วาดครึ่งล่างของสามเหลี่ยม (ใช้หลักการเดียวกับครึ่งบน)
// วน loop นอกสำหรับแต่ละบรรทัด (** 1 คะแนน **)
// วน loop ในสำหรับแสดงช่องว่าง (** 0.5 คะแนน **)
// แสดงค่าช่องว่างและดอกจัน (** 0.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = 0; i < width; i++)
{
for (j = i; j < width - 1; j++)
{
printf(" ");
}
printf("*\n");
}
printf("\n");
}
void problem4A()
{
// ให้เขียนโปรแกรมที่รับคำภาษาอังกฤษ 1 คำที่มีความยาวไม่เกิน 15 ตัวอักษร
// จากนั้นให้แปลงข้อความดังกล่าวให้เป็นตัวอักษรตัวใหญ่ทั้งหมด โดยให้มีรูปแบบดังนี้
// Enter word: Elephant
// Upper-case word is ELEPHANT
// สำหรับการแปลงค่าตัวอักษรตัวเล็กไปเป็นตัวใหญ่ให้ลบออกด้วย 32 เช่น 'b' - 32 จะได้ค่าเป็น 'B'
// แต่จะต้องตรวจสอบก่อนว่าตัวอักษรนั้นเป็นตัวอักษรตัวเล็กหรือไม่ หากไม่ใช่ก็ไม่ต้องแปลงค่า (แสดงผลด้วยค่าเดิม)
// โดยที่ตัวอักษรตัวเล็กจะมีค่าระหว่าง 97 ถึง 122 เช่น 'b' จะมีค่า 98
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรสำหรับเก็บค่าคำ (word) และตัวแปรสำหรับวน loop (** 0.75 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
char word[16];
int i,len;
// รับคำภาษาอังกฤษ (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter word: ");
scanf("%s", word);
len = strlen(word);
// แสดงข้อความ "Upper-case word is " (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Upper-case word is ");
// วน loop แปลงตัวอักษรแต่ละตัวให้เป็นตัวใหญ่ โดยมีการดำเนินการที่เกี่ยวข้องดังนี้
// วน loop (** 1 คะแนน **)
// ในแต่ละรอบ ตรวจสอบว่าเป็นตัวอักษรตัวเล็กหรือไม่ (** 1 คะแนน **)
// ในแต่ละรอบ หากเป็นตัวอักษรตัวเล็กให้แปลงค่าตัวอักษรเป็นตัวใหญ่ (** 1 คะแนน **)
// ในแต่ละรอบ แสดงค่าตัวอักษรผลลัพธ์ (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = 0; i < len;i++)
if (word[i] >= 97 && word[i] <= 122)
{
word[i] = word[i] - 32;
printf("%c", word[i]);
}
else printf("%c", word[i]);
printf("\n");
}
void problem5A()
{
// เขียนโปรแกรมเพื่อใช้แปลงจำนวนเงินบาทไปเป็นจำนวนเงินในสกุลเงินต่างๆ ได้แก่ USD, EUR และ CNY
// โดยที่ 1 USD = 32.68 บาท
// 1 EUR = 44.94 บาท
// 1 CNY = 5.41 บาท
// ให้โปรแกรมทำงานในรูปแบบดังนี้
// Convert from Thai Baht to
// 1. US Dollar (USD)
// 2. Eurozone (EUR)
// 3. Chinese Yuan (CNY)
// Select 1, 2 or 3: 3
// Enter money (Baht): 1000
// 1000.00 Baht = 184.84 CNY
// Enter 0 to exit or other number to convert again: 1
// Convert from Thai Baht to
// 1. US Dollar (USD)
// 2. Eurozone (EUR)
// 3. Chinese Yuan (CNY)
// Select 1, 2 or 3:
// ...
// ให้โปรแกรมแสดง menu ให้เลือก เพื่อแปลงเงินบาทไปเป็นเงินในสกุล USD, EUR หรือ CNY
// โดยจะรับค่าเป็นค่า 1-3 จากนั้นให้รับค่าเงินบาท แล้วจึงทำการคำนวณค่าเงินและแสดงผลลัพธ์
// จากนั้นให้โปรแกรมถามว่าจะทำการแปลงอีกหรือไม่ ถ้าใส่ตัวเลขใดๆ ที่ไม่ใช่ 0 ก็จะวนกลับไปเริ่มต้นใหม่
// แต่ถ้าใส่ค่า 0 ก็จะจบการทำงานของโปแกรม
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรที่เก็บค่า choice ที่เลือก (1-3) เป็นจำนวนเต็ม, ตัวแปรที่เก็บค่าเงินบาทเป็นจำนวนจริง,
// และตัวแปรที่เก็บค่าสำหรับเช็คว่าจะจบโปรแกรม (exit) หรือไม่เป็นจำนวนเต็ม (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int choice, exit;
float baht;
// กำหนด loop เพื่อควบคุมการให้โปรแกรมสามารถแปลงค่าต่อได้เรื่อยๆ หากยังใส่ค่า exit ที่ไม่ใช่ 0
// โดยให้เลือกใช้ loop ที่เหมาะสมจาก for, while หรือ do-while (** 1 คะแนน **)
// สำหรับภายใน loop ให้มีการดำเนินการดังนี้
// แสดงค่า menu (** 1 คะแนน **)
// รับค่าตัวเลือกสกุลเงิน (1-3) (** 0.25 คะแนน **)
// รับค่าเงินบาท (** 0.25 คะแนน **)
// ใช้คำสั่ง switch-case หรือ if-else เพื่อแยกคำนวณตามสกุลเงิน (** 1 คะแนน **)
// ในแต่ละกรณี คำนวณค่าเงินตามสกุลเงินที่เลือกพร้อมทั้งแสดงผลโดยให้แสดงทศนิยม 2 หลัก (** 2 คะแนน **)
// รับค่าสำหรับเช็คว่าจะทำการแปลงค่าเงินต่อหรือออกจากโปรแกรม (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
do
{
printf("Convert from Thai Baht to\n");
printf("1. US Dollar (USD)\n");
printf("2. Eurozone (EUR)\n");
printf("3. Chinese Yuan (CNY)\n");
printf("Select 1, 2 or 3: ");
scanf("%d", &choice);
printf("Enter money (Baht): ");
scanf("%f", &baht);
switch (choice)
{
case 1: {printf("%.2f Baht = %.2f USD\n", baht, baht/32.68); break; }
case 2: {printf("%.2f Baht = %.2f EUR\n", baht, baht/44.94); break; }
case 3: {printf("%.2f Baht = %.2f CNY\n", baht, baht/5.41); break; }
}
printf("Enter 0 to exit or other number to convert again: ");
scanf("%d", &exit);
} while (exit != 0);
printf("\n");
}
void problem1B()
{
// ให้เขียนโปรแกรมเพื่อคำนวณความหนาแน่น (density) ของของเหลว ที่วัดจากน้ำหนัก (weight) เป็นกิโลกรัม
// หารด้วยปริมาตร (volume) เป็นลูกบาศก์เมตร ซึ่งหน่วยของความหนาแน่นจะเป็น กิโลกรัมต่อลูกบาศก์เมตร
// โดยสมมุติว่าภาชนะที่ใส่ของเหลวสามารถวัดหาปริมาตรได้ในหน่วยลูกบาศก์เมตร
// แต่เครื่องชั่งของเหลวมีหน่วยเป็นปอนด์ ซึ่ง 1 ปอนด์ จะมีค่าเท่ากับ 0.45359 กิโลกรัม
// ให้โปรแกรมมีรูปแบบการทำงานดังตัวอย่างนี้
// Enter weight (pound): 2204.62
// Enter volume (cubic meter): 1.5
// Density = 666.6624 kilograms/cubic meter
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศตัวแปร สำหรับเก็บค่าน้ำหนัก ปริมาตร และความหนาแน่นเป็นจำนวนจริง (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
float density, weight, volume;
// รับค่าน้ำหนักเป็นหน่วยปอนด์ (** 1.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter weight (pound): ");
scanf("%f", &weight);
// รับค่าปริมาตรเป็นหน่วยลูกบาศก์เมตร (** 1.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter volume (cubic meter): ");
scanf("%f", &volume);
// คำนวณความหนาแน่น (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
density = (float)(weight*0.45359) / volume;
// แสดงผลค่าความหนาแน่นให้มีเลขทศนิยม 4 หลัก (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Density = %.4f kilograms/cubic meter", density);
printf("\n");
}
void problem2B()
{
// ให้เขียนโปรแกรมเพื่อคำนวณค่าเช่าเก็บสินค้าในโกดังตามปริมาตร (volume) และระยะเวลาเช่า (duration)
// โดยมีอัตราที่แตกต่างกันดังนี้
// ปริมาตรไม่ถึง 10 ลูกบาศก์เมตร ให้คิดค่าเช่า 500 บาทต่อลูกบาศก์เมตรต่อวัน
// ปริมาตรตั้งแต่ 10 ลูกบาศก์เมตรขึ้นไป แต่ไม่ถึง 50 ลูกบาศก์เมตร ให้คิดค่าเช่า 450 บาทต่อลูกบาศก์เมตรต่อวัน
// ปริมาตรตั้งแต่ 50 ลูกบาศก์เมตรขึ้นไป แต่ไม่ถึง 100 ลูกบาศก์เมตร ให้คิดค่าเช่า 400 บาทต่อลูกบาศก์เมตรต่อวัน
// ปริมาตรตั้งแต่ 100 ลูกบาศก์เมตรขึ้นไป ให้คิดค่าเช่า 350 บาทต่อลูกบาศก์เมตรต่อวัน
// สำหรับระยะเวลาเช่านั้น ให้มีระยะเวลาขึ้นต่ำ 15 วันขึ้นไปแต่ไม่เกิน 180 วัน
// ให้โปรแกรมมีรูปแบบการทำงานดังตัวอย่างนี้
// Enter volume (cubic meter): 80
// Enter duration (15-180 days): 120
// Cost for inventory is 386400 Baht, by the rate 400 Baht/cubic meter/day
// หรือ
// Enter volume (cubic meter): 80
// Enter duration (15-180 days): 10
// Duration is not valid.
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศตัวแปรสำหรับเก็บค่าระยะเวลาเช่า (duration) และอัตราค่าเช่า (rate) เป็นจำนวนเต็ม
// ตัวแปรสำหรับเก็บค่าปริมาตร (volume) เป็นจำนวนจริง (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int duration, rate;
float volume;
// รับค่าปริมาตรและระยะเวลาเช่า (** 0.75 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter volume (cubic meter): ");
scanf("%f", &volume);
printf("Enter duration (15-180 days): ");
scanf("%d", &duration);
// ถ้าระยะเวลาอยู่ในช่วง 15-180 ก็ให้คำนวณค่าเช่าและแสดงผลค่าเช่าที่คำนวณได้ในลักษณะไม่มีเลขทศนิยม
// โดยที่ประกอบด้วยการทำงานดังนี้
// เช็คเงื่อนไขตามปริมาตรเพื่อหาอัตราค่าเช่า (rate) (** 2 คะแนน **)
// กำหนดอัตราค่าเช่าสำหรับแต่ละเงื่อนไข (** 1 คะแนน **)
// คำนวณค่าเช่าพร้อมทั้งแสดงผลลัพธ์ค่าเช่าในรูปแบบไม่มีทศนิยม (** 1 คะแนน **)
// แต่ถ้าระยะเวลาน้อยกว่า 1 หรือมากกว่า 12 ให้แสดงข้อความ "Duration is not valid." (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
if (duration >= 15 && duration <= 180)
{
if (volume < 10) rate = 500;
else if (volume < 50) rate = 450;
else if (volume < 100) rate = 400;
else if (volume >= 100) rate = 350;
printf("Cost for inventory is %d Baht, by the rate %d Baht / cubic meter / day", (int)volume*rate*duration, rate);
}
else
{
printf("Duration is not valid.\n");
}
printf("\n");
}
void problem3B()
{
// ให้เขียนโปรแกรมที่รับค่าตัวเลขจำนวนเต็ม 1 ตัว ทีมีค่าตั้งแต่ 2 ขึ้นไปแต่ไม่เกิน 15 แทนค่าความกว้างครึ่งหนึ่งของรูป
// แล้วทำการแสดงผลเป็นรูปตัววีแบบตะแคงขวาตามความกว้างที่กำหนด ดังตัวอย่างต่อไปนี้
// Enter half of width: 4
// v
// v
// v
// v
// v
// v
// v
// v
// จากตัวอย่างข้างต้น
// บรรทัดแรกจะแสดงช่องว่าง 6 ตำแหน่ง ตามด้วยตัวอักษร v
// บรรทัดที่สองจะแสดงช่องว่าง 4 ตำแหน่ง ตามด้วยตัวอักษร v
// บรรทัดที่สามจะแสดงช่องว่าง 2 ตำแหน่ง ตามด้วยตัวอักษร v
// บรรทัดที่สี่จะแสดงช่องว่าง 0 ตำแหน่ง ตามด้วยตัวอักษร v
// ...
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรสำหรับเก็บค่าความกว้างครึ่งหนึ่ง (width) เป็นจำนวนเต็ม
// และตัวแปรสำหรับวน loop (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int width, i, j;
// รับค่าความกว้างที่แทนครึ่งหนึ่งของความกว้างของรูป (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("Enter half of width: ");
scanf("%d", &width);
// วน loop วาดครึ่งบนของตัววี (hint: ใช้ loop ซ้อนกัน 2 ชั้น) โดยมีการดำเนินการที่เกี่ยวข้องดังนี้
// วน loop นอกสำหรับแต่ละบรรทัด (** 1.5 คะแนน **)
// วน loop ในสำหรับแสดงช่องว่าง (** 1.5 คะแนน **)
// แสดงค่าช่องว่างและตัวอักษร v (** 0.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = 0; i < width; i++)
{
for (j = i; j < width - 1; j++)
{
printf(" ");
}
printf("v\n");
}
// วน loop วาดครึ่งล่างของตัววี (ใช้หลักการเดียวกับครึ่งบน)
// วน loop นอกสำหรับแต่ละบรรทัด (** 1 คะแนน **)
// วน loop ในสำหรับแสดงช่องว่าง (** 0.5 คะแนน **)
// แสดงค่าช่องว่างและตัวอักษร v (** 0.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = width; i >0; i--)
{
for (j = i; j < width; j++)
{
printf(" ");
}
printf("v\n");
}
printf("\n");
}
void problem4B()
{
// ให้เขียนโปรแกรมที่รับค่าตัวเลขฐานสอง 2 จำนวน ที่แต่ละจำนวนมีความยาวไม่เกิน 8 หลัก
// โดยกำหนดให้ทั้ง 2 จำนวนมีความยาวเท่ากัน
// แล้วทำการหาผลลัพธ์ของการทำ xor (exclusive or) แต่ละ bit เข้าด้วยกันเป็นคู่ๆ
// สำหรับ xor จะมีความหมายดังนี้
// 1 xor 1 = 1, 0 xor 0 = 0, 0 xor 1 = 1, 1 xor 0 = 0
// ให้โปรแกรมมีการทำงานดังตัวอย่างต่อไปนี้
// Enter binary number 1 (1-8 digits): 101011
// Enter binary number 2 (1-8 digits): 001101
// 101011 xor 001101 = 001101
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรสำหรับเก็บค่าจำนวนทั้ง 2 จำนวนในรูปแบบข้อความ
// และตัวแปรสำหรับวน loop (** 0.75 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
char bin[3][9];
int i, len;
// รับค่าตัวเลขฐานสองทั้ง 2 จำนวน (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = 0; i < 2; i++)
{
printf("Enter binary number %d (1-8 digits): ", i + 1);
scanf("%s", bin[i]);
}
len = strlen(bin[0]);
// แสดงผล "จำนวนที่ 1 xor จำนวนที่ 2 = " โดยแทนค่าจำนวนที่ 1 และ 2 จากค่าที่รับมา (** 0.5 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
printf("%s xor %s = ", bin[0], bin[1]);
// หาค่าผลการทำ xor ของแต่ละ bit โดยมีการดำเนินการที่เกี่ยวข้องดังนี้
// วน loop (** 1 คะแนน **)
// ในแต่ละรอบ ตรวจสอบเงื่อนไขสำหรับค่าผลลัพธ์การทำ xor ของแต่ละคู่ bit (** 1.75 คะแนน **)
// ในแต่ละเงื่อนไข แสดงค่าตัวเลขของ bit ผลลัพธ์ (** 1 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
for (i = 0; i < len; i++)
{
if (bin[0][i] == bin[1][i]) printf("%c", bin[0][i]);
else printf("%c", bin[1][i]);
}
printf("\n");
}
void problem5B()
{
// เขียนโปรแกรมเพื่อใช้คำนวณค่าใช้จ่ายในการทาสีบนพื้นที่ตามขนาดที่กำหนด
// โดยให้เลือกชนิดของสีซึ่งจะมีราคาต่างกัน ได้แก่
// 1. TOA Super Shield ตร.เมตร ละ 180 บาท
// 2. TOA Classic Shield ตร.เมตร ละ 150 บาท
// 3. TOA 4 SEASONS ตร.เมตร ละ 95 บาท
// ให้โปรแกรมทำงานในรูปแบบดังตัวอย่างนี้
// Compute cost of painting
// 1. TOA Super Shield
// 2. TOA Classic Shield
// 3. TOA 4 SEASONS
// Select 1, 2 or 3: 2
// Enter area (square meter): 86.5
// Cost = 12975 Baht, by the rate 150 Baht/square meter
// Type 0 to exit or other number to compute again: 1
// Compute cost of painting
// 1. TOA Super Shield
// 2. TOA Classic Shield
// 3. TOA 4 SEASONS
// Select 1, 2 or 3:
// ...
// ให้โปรแกรมแสดง menu ให้เลือก เพื่อคำนวณค่าทาสี
// โดยจะรับค่าเป็นค่า 1-3 จากนั้นให้รับค่าพื้นที่ แล้วจึงทำการคำนวณค่าทาสีและแสดงผลลัพธ์
// จากนั้นให้โปรแกรมถามว่าจะทำการคำนวณซ้ำอีกหรือไม่ ถ้าใส่ตัวเลขใดๆ ที่ไม่ใช่ 0 ก็จะวนกลับไปเริ่มต้นใหม่
// แต่ถ้าใส่ค่า 0 ก็จะจบการทำงานของโปแกรม
// ******* เริ่มต้น code ******* //
// ************************** //
// ประกาศค่าตัวแปรที่เก็บค่า menu ที่เลือก (1-3) เป็นจำนวนเต็ม, ตัวแปรที่เก็บค่าพื้นที่เป็นจำนวนจริง,
// ตัวแปรที่เก็บค่าอัตราค่าทาสีต่อ ตร.เมตร (rate) เป็นจำนวนเต็ม
// และตัวแปรที่เก็บค่าสำหรับเช็คว่าจะจบโปรแกรม (exit) หรือไม่เป็นจำนวนเต็ม (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
int menu, rate, exit;
float area;
// กำหนด loop เพื่อควบคุมให้โปรแกรมสามารถคำนวณราคาต่อได้เรื่อยๆ หากยังใส่ค่า exit ที่ไม่ใช่ 0
// โดยให้เลือกใช้ loop ที่เหมาะสมจาก for, while หรือ do-while (** 1 คะแนน **)
// สำหรับภายใน loop ให้มีการดำเนินการดังนี้
// แสดงค่า menu (** 1 คะแนน **)
// รับค่าตัวเลือกชนิดของสี (1-3) (** 0.25 คะแนน **)
// รับค่าพื้นที่ (** 0.25 คะแนน **)
// ใช้คำสั่ง switch-case หรือ if-else เพื่อแยกกำหนดอัตราค่าทาสีตามชนิดของสี (** 1 คะแนน **)
// คำนวณค่าทาสีตามอัตราที่ได้พร้อมทั้งแสดงผลโดยไม่ต้องมีทศนิยม (กำหนดทศนิยมเป็น 0 หลัก) (** 2 คะแนน **)
// รับค่าสำหรับเช็คว่าจะทำการคำนวณต่อหรือออกจากโปรแกรม (** 0.25 คะแนน **)
// ******* เขียน code ที่นี่ ******* //
do
{
printf("Compute cost of painting\n");
printf("1. TOA Super Shield\n");
printf("2. TOA Classic Shield\n");
printf("3. TOA 4 SEASONS\n");
printf("Select 1, 2 or 3: ");
scanf("%d", &menu);
printf("Enter area (square meter): ");
scanf("%f", &area);
switch (menu)
{
case 1: {rate = 180; break; }
case 2: {rate = 150; break; }
case 3: {rate = 95; break; }
}
printf("Cost = %.f Baht, by the rate %d Baht/square meter\n", rate*area, rate);
printf("Type 0 to exit or other number to compute again: ");
scanf("%d", &exit);
} while (exit != 0);
printf("\n");
}
void AllA()
{
// ค่าจำนวนจริงให้ใช้ค่าแบบ single precision
//problem1A();
//problem2A();
//problem3A();
//problem4A();
problem5A();
}
void AllB()
{
// ค่าจำนวนจริงให้ใช้ค่าแบบ single precision
//problem1B();
//problem2B();
//problem3B();
//problem4B();
//problem5B();
}
void main()
{
AllA();
//AllB();
}