หน้าเว็บ

วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552

การบ้านstdio.h และ iostream.h

-->>เขียนโปรแกรมโดยใช้ stdio.h <<--


#include
main()
{
char fruit[20];
float price;
float kilogram;
float total;
printf("----- Fruit Shop -----\n");
printf("Fruit:\n");
scanf("%s",&"fruit");
printf("price total \n");
scanf("%f",&price);
printf("How many kilogram \n");
scanf("%f",&kilogram);
total=price*kilogram;
printf("total=%f",total);
printf("-----Thank You-----");
}


-->>เขียนโปรแกรมโดยใช้ iostream.h <<--


#include
main()
{
char fruit[20];
float price;
float kilogram;
float total;
cout<<"----- fruit shop -----\n";
cout<<"fruit:\n";
cin>>fruit;
cout<<"price total\n";
cin>>price;
cout<<"How many kilogram\n";
cin>>kilogram;
cout<<"Total="price*kilogram;
cout<<"----- Thank You -----";
}



DTS 05-22-07-2552

Linked List แบบซับซ้อน

1.Circular Linked List
หมายถึง ลิงค์ลิสต์ที่โหนดสุดท้ายสามารถวกกลับมาที่โหนดแรกได้ใช้ประโยชน์เมื่อต้องการให้ข้อมูลมีลักษณะเป็นวนรอบหรือลูป โดยแต่ละขั้นตอนการทำงานภายในลูป จะมีการย้ายตำแหน่งของพอยน์เตอร์ไปยังโหนดถัดไป

2.Double Linked List
หมายถึง ลิงค์ลิสต์ที่ทุกโหนดสามารถวกกลับมาที่โหนดก่อนหน้าของตนเองได้ ประกอบด้วยส่วนของ Info และ พอยน์เตอร์ที่ชี้ไป 2 ทิศทาง คือ ชี้ไปยังโหนดถัดไป และชี้ไปยังโหนดก่อนหน้า ดังนั้นเราจึงสามารถทำการอ่านข้อมูลได้ 2 วิธี คือ การอ่านไปข้างหน้า และอ่านไปทางข้างหลัง

สแตค (Stack)
สแตค (Stack) เป็นโครงสร้างข้อมูลที่มีลักษณะแบบลำดับ (sequential) คือการกระทำกับข้อมูลจะกระทำที่ปลายข้างเดียวกันที่ส่วนปลายสุดของสแตค การกระทำกับข้อมูลของสแตคประกอบไปด้วยการนำเข้าข้อมูลเข้า (PUSH) ที่ส่วนบนสุดของสแตค และการนำข้อมูลออก (POP) ที่ส่วนบนสุดของสแตคเช่นกัน ในการจะ Push ข้อมูลเข้าก็ต้องตรวจสอบด้วยว่าข้อมูลในสแตคเต็มหรือไม่ หากสแตคเต็มก็จะไม่สามารถ Push หรือนำข้อมูลเข้าได้ เช่นเดียวกับการ Pop ข้อมูลออกก็ต้องตรวจสอบด้วยว่ามีข้อมูลอยู่ในสแตคหรือไม่ หากไม่มีข้อมูลอยู่ในสแตคหรือสแตคว่าง (empty stack) ก็ไม่สามารถ pop ได้การนำข้อมูลเข้า-ออก จากสแตค (push , pop) จะมีลักษณะแบบเข้าหลัง ออกก่อน (LIFO : Last In , First Out) คือ ข้อมูลที่เข้าไปในสแตคลำดับหลังสุด จะถูกนำข้อมูลออกจากสแตคเป็นลำดับแรก ยกตัวอย่างการทำงานแบบ LIFO เช่น การวางจานซ้อนกัน
Operation ของ Stack

1. การเพิ่มข้อมูลลงในสแตค (pushing stack)
การเพิ่มข้อมูลลงในสแตค คือ การนำเข้ามูลเข้าสู่สแตคโดยทับข้อมูลที่อยู่บนสุดของสแตค ข้อมูลจะสามารถนำเข้าได้เรื่อยๆ จนกว่าสแตคจะเต็ม สมมติว่าสแตคจองเนื้อที่ไว้ N ตัว ถ้าหากค่า TOP เป็น 0 แสดงว่าสแตคว่าง หากค่า TOP = N แสดงว่าสแตคเต็มไม่สามารถเพิ่มข้อมูลลงในสแตคได้อีก

2. การดึงข้อมูลออกจากสแตค (popping stack)
ก่อนที่จะดึงข้อมูลออกจากสแตคต้องตรวจสอบก่อนว่าสแตคมีข้อมูลอยู่หรือไม่ หรือว่าเป็นสแตคว่าง (Empty Stack)
3. Stack Top
เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
ตัวอย่าง การเข้า - ออก ของstack
การใส่หนังสือที่ไม่ได้ใช้แล้วไว้ในกล่องลัง จะต้องใส่หนังสือที่ละเล่มจนเต็มกล่องลัง แต่เมื่อเวลาการเอาออกมาใช้จะต้องหยิบเล่มสุดท้ายออกก่อน

วันอาทิตย์ที่ 19 กรกฎาคม พ.ศ. 2552

DTS 04-15-07-2552

ลิงค์ลิสต์ (Linked List)
เป็นวิธีการจัดเก็บชุดข้อมูลและการเข้าถึงข้อมูลในโครงสร้างแบบลำดับเป็นพื้นที่ต่อเนื่องกัน การใช้งานของโครงสร้างถูกจำกัดไว้ไม่สามารถทำการปรับเปลี่ยน
การแทนโครงสร้างข้อมูลลิงค์ลิสต์


โครงสร้างข้อมูลลิงค์ลิสต์ ประกอบด้วยส่วนสำคัญ 2 รวมเป็นโครงสร้างเรียกว่า โหนด
1. Data Field ทำหน้าที่เก็บข้อมูล
2. Link Field ทำหน้าที่เก็บตำแหน่งที่อยู่ของโครงสร้างสมาชิกตัวถัดไป


โครงสร้างข้อมูลแบบลิงค์ลิสตโครงสร้างข้อมูลแบบลิงค์ลิสตจะแบ่งเป็น 2 ส่วน คือ
1. Head Structure จะประกอบไปด้วย 3 ส่วน ได้แก่
1.1 จำนวนโหนดในลิสต (Count)
1.2 พอยเตอร์ที่ชี้ไปยัง โหนดที่เข้าถึง(Pos)
1.3 พอยเตอร์ที่ชี้ไปยังโหนดข้อูมลแรกของลิสต (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

*การแทรกข้อมูลลงในลิงค์ลิสต์ สามารถจะกระทำได้โดยการเปลี่ยนพอยเตอร์บางตัว และค้นหาข้อมูลใน ลิงค์ลิสต์ เพื่อหาตำแหน่งของโหนดที่มาก่อนโหนดที่ต้องการแทรก สิ่งสำคัญในการแทรกข้อมูลในลิงค์ลิสต์ คือ ลำดับการ เปลี่ยนพอยเตอร์

*การลบโหนดออกจากลิงค์ลิสต์ จะกระทำโดยการเปลี่ยนพอยเตอร์บางตัว เริ่มต้นก็จะต้องหาโหนดที่มาก่อน โหนดที่ต้องการลบ จากนั้นก็ทำการเปลี่ยนพอยเตอร์

วันอังคารที่ 7 กรกฎาคม พ.ศ. 2552

DTS 03-1-07-2552

Pointer / Set and String
พอยเตอร์(Pointer)

คือต้นฉบับของชนิดข้อมูล ที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่งค่าของมันคือตำแหน่ง Address อยู่ในหน่วยความจำคอมพิวเตอร์ ใช้สำหรับกำหนดค่ามาจากความคิดพื้นฐานของ Pointer ConstantsPointer Values

การประกาศและกำหนดลักษณะของพอยเตอร์ การประกาศและกำหนดลักษณะของตัวแปรพอยเตอร์จะใช้เครื่องหมาย Indirection เมื่อทำตามแล้วพอยเตอร์จะยังไม่ชี้ไปยังตัวแปรใด

การประกาศตัวแปรพอยเตอร์แบบต่าง ๆ ที่มีข้อมูลตรงตามชนิดข้อมูล และพอยเตอร์ที่ประกาศจะมีชนิดข้อมูลดังนี้


p เป็นตัวอักษร (Character)
q เป็นตัวเลขจำนวนเต็ม (Integer)
r เป็นเลขทศนิยม (Floating-point)

การกำหนดค่าเริ่มต้นของพอยเตอร์ พอยเตอร์เปรียบเสมือนกับตัวแปร คือ เมื่อโปรแกรมเริ่มทำงานแล้ว ไม่ได้ทำการกำหนดค่าเริ่มต้นให้กับพอยเตอร์ก็จะทำให้ค่าบางอย่างอาจนำไปใช้ได้

เครื่องหมาย Indirection (*) และ Address (&) เป็นเครื่องหมายตรงกันข้าม เมื่อนำมารวมกัน
เช่น
*&x ก็จะมีความหมายเท่ากับ x



เซ็ต(Set)

เป็นโครงสร้างที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันเลย ตัวดำเนินการของเซ็ต ประกอบด้วย

1.set intersection การนำตัวเลขที่เสมอและจริงแท้เพียงหนึ่งเดียวมารวมกัน

2.set union การนำสองเซ็ตที่อยู่ในกลุ่มตัวแปรมารวมกัน

3.set difference ผลต่าง



สตริง(String)


การกำหนดเป็นอาร์เรย์ของข้อมูลชนิด char หลายๆตัวนำมาเชื่อมต่อกันเป็น string เช่น character ‘c’, ‘m’, ‘p’, ‘u’, ‘t’, ‘e’, ‘r’ เก็บไว้ในอาร์เรย์รวมเป็นข้อมูล string ซึ่งจะได้ข้อความ “computer” ข้อมูล string เป็นได้ทั้งค่าคงที่ (constant) และตัวแปร(variable)

สำหรับ ‘\0’ หมายถึงเครื่องหมาย mull ซึ่งใช้เป็นรหัสจบสตริง