การหาค่าน้อยที่สุดและมากที่สุด ในภาษา C และ C++
ในบทนี้ คุณจะได้เรียนรู้การเขียนโปรแกรมเพื่อหาค่าน้อยที่สุดและมากที่สุดในภาษา C และ C++ เราจะเริ่มต้นจากการเปรียบเท่ียบจากตัวเลขสองตัว จากนั้นเป็นการค้นหาค่าที่น้อยและมากที่สุดจากเซ็ตของตัวเลขที่เก็บในอาเรย์ นี่เป็นเนื้อหาในบทนี้
- การหาค่าน้อยและมากที่สุด
- การหาค่าน้อยและมากที่สุดในอาเรย์
การหาค่าน้อยและมากที่สุด
การหาค่าน้อยที่สุดและมากที่สุดสามารถใช้ตัวดำเนินการเปรียบเทียบในภาษา C และภาษา C++ สำหรับเปรียบเทียบค่า และตัวดำเนินการที่เราจะใช้ในบทเรียนนี้คือตัวดำเนินการ <
, >
และ ==
ซึ่งใช้สำหรับเปรียบเทียบความน้อยกว่า มากกว่า และเท่ากัน ตามลำดับ มาดูตัวอย่างการใช้งาน
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a < b) {
printf("a less than b\n");
} else {
printf("a is not less than b\n");
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
if (a < b) {
cout << "a less than b" << endl;
} else {
cout << "a is not less than b\n" << endl;
}
return 0;
}
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
a less than b
นี่จะแสดงข้อความที่บอกว่าค่าในตัวแปร a
น้อยกว่า b
และนั่นก็ชัดเจน เนื่องจากตัวดำเนินการเปรียบเทียบน้อยกว่า (<
) จะส่งค่ากลับเป็นจริง ถ้าหากค่าทางซ้ายน้อยกว่าค่าทางขวา นั่นทำให้เงื่อนไขเป็นจริง และโปรแกรมทำงานในบล็อคของคำสั่ง if
แต่ถ้าหากเราเปลี่ยนค่าในตัวแปร a
ให้มากกว่าหรือเท่ากับตัวแปร b
แน่นอนมันจะทำงานในบล็อคของคำสั่ง else แต่เมื่อมันทำ เราจะไม่ทราบว่าตัวแปร a
นั้นมากกว่าหรือเท่ากับตัวแปร b
เนื่องจากการทำงานของโปรแกรมนี้มีเพียงสองทางเลือกคือ น้อยกว่าหรือในทางตรงกันข้าม ซึ่งสามารถเป็นได้ทั้งมากกว่าหรือเท่ากัน
และเพื่อแก้ไขปัญหานี้ เราจะต้องทำให้โปรแกรมสามารถตรวจสอบค่าได้แบบสามทางเลือก นั่นคือว่าค่าในตัวแปรทั้งสองนั้นน้อยกว่า มากกว่า หรือเท่ากันนั่นเอง และในตัวอย่างนี้ เป็นโปรแกรมที่ทำงานในรูปแบบดังกล่าว
#include <stdio.h>
int main()
{
int a = 5;
int b = 2;
if (a < b) {
printf("a less than b\n");
} else if (a > b) {
printf("a greater than b\n");
} else {
printf("a is equal to b\n");
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 2;
if (a < b) {
cout << "a less than b" << endl;
} else if (a > b) {
cout << "a greater than b" << endl;
} else {
cout << "a is equal to b" << endl;
}
return 0;
}
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
a greater than b
ในตัวอย่างนี้ เราได้เพิ่มเงื่อนไขสำหรับตรวจสอบว่าค่าในตัวแปร a
มากกว่าตัวแปร b
หรือไม่ด้วยคำสั่ง else if แต่ถ้าหากการตรวจสอบในรอบนี้ยังไม่เป็นจริง โปรแกรมทำงานในบล็อคของคำสั่ง else ซึ่งหมายความว่าค่าในตัวแปรทั้งสองเท่ากัน
และนี่เป็นโปรแกรมเพื่อหาว่าค่าของสองตัวแปรน้อยกว่า มากกว่า หรือเท่ากัน ซึ่งเป็นการทำงานที่สามารถรับมือได้กับทุกความเป็นไปได้ของข้อมูล จะเห็นว่ามันเป็นโปรแกรมที่เรียบง่ายและพื้นฐานมาก เนื่องจากการเปรียบเทียบนั้นเกิดขึ้นกับตัวเลขเพียงแค่สองค่า
แต่ในชีวิตจริงข้อมูลอาจไม่ได้มีเพียงแค่สองค่า ยกตัวอย่างเช่น เรามีคะแนนของนักเรียนจำนวน 10 คน หรือบริษัทแห่งหนึ่งมีรายงานผลกำไรสรุปในแต่ละเดือน และเราอาจต้องการหาค่าที่น้อยที่สุดและมากที่สุดจากเซ็ตของข้อมูลเหล่านี้
// Score of ten students
int scores[] = {16, 3, 96, 49, 92, 41, 38, 24, 13, 55};
// Profit of the company from January - June (millions)
int profits[] = {61, 123, 68, 114, 178, 102};
เนื่องจากในกรณีนี้ ข้อมูลที่ต้องการนำมาหาค่าที่น้อยที่สุดและมากที่สุดนั้นมีหลายค่า ซึ่งถือว่าเป็นกลุ่มของข้อมูล ซึ่งในภาษา C และภาษา C++ นั่นข้อมูลในรูปแบบนี้สามารถเก็บได้อยู่ในรูปแบบของอาเรย์ และเราสามารถเขียนโปรแกรมเพื่อค้นหาค่าจากในอาเรย์
การหาค่าน้อยและมากที่สุดในอาเรย์
ในตัวอย่างนี้ เรามาเขียนโปรแกรมเพื่อค้นหาค่าน้อยที่สุดและมากที่สุดจากในอาเรย์ โดยการใช้คำสั่ง for loop สำหรับวนค้นหาค่าในอาเรย์ นี่เป็นตัวอย่างของโปรแกรมหาคะแนนที่น้อยและมากที่สุดจากอาเรย์ที่เขียนในภาษา C และ C++
#include <stdio.h>
int main()
{
int scores[] = {16, 3, 96, 49, 92, 41, 38, 24, 13, 55};
int n = sizeof(scores) / sizeof(int);
// find minimum score
int min = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] < min) {
min = scores[i];
}
}
// find maximum score
int max = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] > max) {
max = scores[i];
}
}
printf("Min: %d\n", min);
printf("Max: %d\n", max);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int scores[] = {16, 3, 96, 49, 92, 41, 38, 24, 13, 55};
int n = sizeof(scores) / sizeof(int);
// find minimum score
int min = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] < min) {
min = scores[i];
}
}
// find maximum score
int max = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] > max) {
max = scores[i];
}
}
cout << "Min: " << min << endl;
cout << "Max: " << max << endl;
return 0;
}
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
Min: 3
Max: 96
ในตัวอย่างนี้ เรามีอาเรย์ scores
ที่เก็บคะแนนของนักเรียน 10 คน คุณสามารถเขียนโปรแกรมเพื่อรับค่าจากทางคีย์บอร์ดมาเก็บในอาเรย์ได้ แต่เรากำหนดค่าโดยตรงเพื่อความเรียบง่าย จากนั้นเป็นการนับจำนวนสมาชิกทั้งหมดในอาเรย์เก็บในตัวแปร n
เพื่อใช้เป็นเงื่อนไขในการวนค่าในอาเรย์ด้วยคำสั่ง for loop
int min = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] < min) {
min = scores[i];
}
}
นี่เป็นการหาค่าน้อยที่สุดในอาเรย์ ในตอนแรกกำหนดค่าที่น้อยที่สุดเริ่มต้นเป็นค่าแรกในอาเรย์ จากนั้นวนรอบตั้งแต่ตำแหน่งที่สองเป็นต้นไปและนำมาเปรียบเทียบกับค่าในตัวแปร min
ถ้าหากมันน้อยกว่าค่านี้ จะเปลี่ยนค่าที่น้อยที่สุดเป็นค่าดังกล่าวแทน และเมื่อทำแบบนี้ไปจนครบจะได้ค่าที่น้อยสุดเก็บในตัวแปร min
if (scores[i] > max) {
max = scores[i];
}
ในการค้นหาค่ามากที่สุดก็ทำเช่นเดียวกัน แต่เปลี่ยนการเปรียบเทียบเป็นมากกว่ากับตัวแปร max
แทน ถ้าหากค่าที่นำมาเปรียบเทียบมากกว่าค่าในตัวแปร max
เราทำการเปลี่ยนแปลงค่านี้ให้เป็นค่าที่มากที่สุดแทน
สำหรับตัวอย่างนี้แสดงให้เห็นว่าในกรณีที่ข้อมูลที่ต้องการนำมาหามีเป็นจำนวนมาก เราสามารถเก็บข้อมูลเหล่านั้นไว้ในอาเรย์และเขียนโปรแกรมเพื่อตรวจสอบค่าในอาเรย์ได้ ซึ่งในการเขียนโปรแกรมจริงแล้วข้อมูลที่ต้องการนำมาหามักจะมีหลายค่า
ในบทนี้ คุณได้เรียนรู้การเขียนโปรแกรมเพื่อหาค่าน้อยและมากที่สุดใน C และภาษา C++ เราได้พูดถึงการเปรียบเทียบตัวเลขสองตัว และการค้นหาจากอาเรย์ซึ่งมีตัวเลขเป็นจำนวนมาก ซึ่งนี่จะมีประโยชน์เมื่อต้องการทราบค่าต่ำสุดและสูงสุดในเซ็ตของข้อมูล