ไม่มีอะไร แค่หาเรื่องอัพ ครับ 555 ได้เรื่องอัพแล้ว คือจะทยอยเอางานแลปคอมต่างๆ มาแปะในเว็บ พร้อมอธิบายนิโหน่ย (แปรผันตามความขยัน ณ เวลานั้น) เผื่อเพื่อนๆใกล้สอบแล้วจะได้ เข้ามาหาอ่านง่ายๆ เพราะตูขี้เกียจทำสรุปให้แล้ว ป.ล. ไม่ได้แปลว่าที่เอามาลงที่ถูกต้องนะครับ โปรดใช้วิจารณยานอวกาศในการอ่าน....
Lab 8.1 Array
1.Write a C program to collect the temperature of 12 months using array and loop. Write 3 functions for calculate the average of temperature in 1 year and show the highest and lowest temperature. Code : #include <stdio.h> // เรียกเจ้านี่เพราะเราใช้คำสั่ง Input out #include <conio.h> // เรียกเจ้านี่เพราะเราใช้ getch(); void tem_avg(float[12],float *); // 1. หลังตัวแปรแรกเป็น [12] เพราะเราเรียกอะเรย์ขนาด[12] void min_max(float[12],float *,float *); // เหมียนข้อแรก main(){ float t[12],avg,min,max; // 2.ประกาศตัวแปรธรรมดา 3 ตัว อะเรย์ขนาด 12 อีก 1 ตัว เป็น float int i ; // 3. ประกาศ i เป็น int printf ("\t\t\t\tLab 8.1\n\nPlease enter temperature of\n"); for(i=0;i<12;i++){ // 4.ใช้ for เพื่อรันรับค่าอุณหภูมิรายเดือน (12 เดือน) ไปเก็บในตัวแปรอะเรย์ทั้ง 12 (t[0]-t[11]) printf ("month %d :",i+1); scanf ("%f",&t[i]); } // จบข้อ 4. tem_avg(t,&avg); // 5. เรียกใช้ฟังก์ชั่น tem_avg โดยให้คืนค่ากลับมาที่ avg (ตัวแปรอะเรย์ใส่แค่ชื่อไม่ต้องใส่ขนาด) min_max(t,&min,&max); // 6. เรียกใช้ฟังก์ชั่น min_max แล้วคืนค่ากลับมาที่ min,max ด้วย printf("\nThe highest temperature is %.2f\nThe lowest temperature is %.2f\nAn average temperature in 12 months is %.2f",max,min,avg); // 7.พิมพ์ผลออกทางจอ getch(); return 0; } // 8.จบฟังก์ชั่นmain void tem_avg(float t[12],float *avg){ // 9. เริ่มฟังก์ชั่น tem_avg int i; float sum=0; for (i=0;i<12;i++){ // 10. ใช้ for เพื่อเอาค่าในแต่ละอะเรย์มาบวกกัน sum+=t[i];} *avg = sum/12; // 11. หารผลรวมด้วย 12 (หาค่าเฉลี่ย) } // 12. จบฟังก์ชั่น tem_avg void min_max(float t[12],float *min,float *max) // 13. เริ่มฟังก์ชั่น min_max { int i; *min = t[0]; *max = 0; for (i=0;i<12;i++){ // 14. ใช้ for เพื่อวนตรวจสอบค่าในอะเรย์ทีละตัว if (t[i]>*max){ // 15. ถ้าค่าไหนมันมากกว่า *max ก็ให้มันเป็น *max ตัวใหม่แทน *max = t[i];} if (t[i]<*min){ // 16. ถ้าค่าไหนน้อยกว่า min ก็ให้เป็น min ตัวใหม่แทน *min = t[i];}} } // จบฟังก์ชั่น min_max |
Homework 1.Write a C function named det() that accepts a matrix size 4 by 4 and calculate the determinant value. -Receive input from keyboard -Using nest loop in receive statement - Show the matrix and result อ.กำหนดมาว่า ให้ใช้วิธีต่อแถวออกมาอีสามแถวแล้ว คูณลงลบคูณขึ้นเอา เพราะจริงๆต้องใช้ cofacter ซึ่งคำตอบไม่ตรงกัน ในที่นี้ต้องการแค่คอนเซ็ปต์เฉยๆ ไม่ได้มองถึงความถูกต้องทางคณิตศาสตร์ว่า det 4x4 หายังไง ป.ล. ถ้าใส่ค่าตามด้านบน det = 4363 ก่อนอื่นเรามาเขียนก่อน ว่าอะไรคูณลง อะไรคูณขึ้น หลักไหนคูณหลักไหนมั่ง จะได้ว่า คูณลง (11x22x33x44) + (21x32x43x14) + (31x42x13x24) + (41x12x23x34) คูณขึ้น (14x23x32x41) + (24x33x42x11) + (34x43x12x21) + (44x13x22x31) แต่อย่าลืมว่าเราเก็บอะเรย์โดยเริ่มที่ 0 ถึง (n-1) จึงลบทุกหลักทุกแถวลงไป 1 เพื่อให้ตัวแปรตรงกัน คูณลง (00x11x22x33) + (10x21x32x03) + (20x31x02x13) + (30x01x12x23) คูณขึ้น (03x12x21x30) + (13x22x31x00) + (23x32x01x10) + (33x02x11x20) ทีนี้เราก็เอาไปเขียนโปรแกรมได้แล้ว ป.ล. เวลาป้อน ป้อนทีละตัวครับไล่หลัก 1 แถว 1 หลัก 1 แถว 2 ไปเรื่อยๆเลย Code : #include <stdio.h> // เรียกเจ้านี่เพราะเราใช้คำสั่ง Input out #include <conio.h> // เรียกเจ้านี่เพราะเราใช้ getch(); void det(int[4][4],int *); // 1.สร้างฟังก์ชั่น det int main(){ int met[4][4],i,j,ans ; for (i=0;i<4;i++){ // 2. ใช้ for นอกรันค่า i (หลัก) for (j=0;j<4;j++){ // 3. ใช้ for ในรันค่า j (แถว) printf ("input value [%d],[%d] : ",i+1,j+1); // 4. เนื่องจากเมตริกส์เริ่มที่ 1 แต่อะเรย์เริ่มที่ 0 เลยต้อง + 1 ให้ตรงกัน scanf ("%d",&met[i][j]);}} det (met,&ans); // 5.เรียกใช้ฟังก์ชั่น det แล้วคืนค่ามาที่ ans printf ("\n\nthis metrix is\n\n"); // 6. เริ่มส่วนแสดงผลเมตริกส์ for (i=0;i<4;i++){ // 7. ใช้ for นอกรันหลัก for (j=0;j<4;j++){ // 8. ใช้ for ในรันแถว printf ("\t%d",met[j][i]);} // 9. เนื่องจากแสดงผลเป็นแนวนอน ต้องให้หลักขยับไปเรื่อย จึงใช้ j ก่อน i printf("\n");} // 10. แสดงผลครบ 1 บรรทัดก็เว้นวรรค (จบfor นอกตรงนี้ด้วย) printf ("\n\nThe determinant of this matrix is %d",ans); getch(); return 0; } void det (int met[4][4],int *ans){ // เริ่มฟังก็ชั่น det int up[5],down[5]; down[0] = met[0][0]*met[1][1]*met[2][2]*met[3][3]; //คำนวณคูณลง down[1] = met[1][0]*met[2][1]*met[3][2]*met[0][3]; //คำนวณคูณลง down[2] = met[2][0]*met[3][1]*met[0][2]*met[1][3]; //คำนวณคูณลง down[3] = met[3][0]*met[0][1]*met[1][2]*met[2][3]; //คำนวณคูณลง down[4]= down[0]+down[1]+down[2]+down[3]; //คำนวณผลรวมคูณลง up[0] = met[0][3]*met[1][2]*met[2][1]*met[3][0]; //คำนวณคูณขึ้น up[1] = met[1][3]*met[2][2]*met[3][1]*met[0][0]; //คำนวณคูณขึ้น up[2] = met[2][3]*met[3][2]*met[0][1]*met[1][0]; //คำนวณคูณขึ้น up[3] = met[3][3]*met[0][2]*met[1][1]*met[2][0]; //คำนวณคูณขึ้น up[4] = up[0]+up[1]+up[2]+up[3]; //คำนวณผลรวมคูณขึ้น *ans = down[4] - up[4]; //คูณลงลบคูณขึ้น } |
งงก่อ
|