วันพุธที่ 9 กุมภาพันธ์ พ.ศ. 2554

อาร์เรย์ 1

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

  • ชื่ออาร์เรย์ = score ชนิดของข้อมูล = double ค่าเริ่มต้น = 6.5, 7.9, 4.3, 9.1, 8.8
         score = 
    
  • ชื่ออาร์เรย์ = letter ชนิดของข้อมูล = char ค่าเริ่มต้น = 'm', 'c'
          letter = 
    
  • ชื่ออาร์เรย์ = carbrand ชนิดของข้อมูล = string ค่าเริ่มต้น = "Honda", "Toyota", "Mazda", "BMW"
          carband = 
    

ด้านล่างเป็นการประกาศและกำหนดค่าเริ่มต้นให้กับอาร์เรย์ arr:
    int [] arr = {1,3,7,10,15,20,19};


ในการอ้างถึงข้อมูลในอาร์เรย์ arr สามารถกระทำโดยใช้ดัชนีระบุตำแหน่งในอาร์เรย์ ในภาษา C# ดัชนีตัวแรกคือ 0
จงเติมโปรแกรมแต่ละบรรทัดด้านล่างให้ผลลัพธ์เป็นตามที่ระบุ
  • ต้องการให้พิมพ์ 15
        Console.WriteLine(arr[]);
    
  • ต้องการให้พิมพ์ 19
        Console.WriteLine(arr[]);
    
  • ต้องการให้พิมพ์ 29
        Console.WriteLine(arr[] + arr[]);
    
  • พิมพ์ขนาดของอาร์เรย์ arr
        Console.WriteLine(arr.);
    

โปรแกรมด้านล่าง รับจำนวนเต็ม n จากนั้นพิมพ์จำนวนตั้งแต่ 1 ถึง n

ตัวอย่างการทำงาน


7
1
2
3
4
5
6
7

เติมโปรแกรมด้านล่างให้สมบูรณ์

using System;
class counting
{
  public static void Main(string [] args)
  {
    int n = int.Parse(Console.ReadLine());
    for(; ; )
      Console.WriteLine();
  }
}


โปรแกรมด้านล่าง รับจำนวนเต็ม n จากนั้นพิมพ์จำนวนตั้งแต่ 0 ถึง n-1

ตัวอย่างการทำงาน


7
0
1
2
3
4
5
6

เติมโปรแกรมด้านล่างให้สมบูรณ์

using System;
class counting
{
  public static void Main(string [] args)
  {
    int n = int.Parse(Console.ReadLine());
    for(; ; )
      Console.WriteLine();
  }
}


โปรแกรมด้านล่าง รับจำนวนเต็ม n จากนั้นพิมพ์จำนวนตั้งแต่ n ถึง 1

ตัวอย่างการทำงาน


7
7
6
5
4
3
2
1

เติมโปรแกรมด้านล่างให้สมบูรณ์

using System;
class counting
{
  public static void Main(string [] args)
  {
    int n = int.Parse(Console.ReadLine());
    for(; ; )
      Console.WriteLine();
  }
}


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

30
20
15
0
9
Your data:
data[0] = 30
data[1] = 20
data[2] = 15
data[3] = 0
data[4] = 9



using System;
class Program
{
    static void Main()
    {
        int i;
        int [] data = ;

        for (i = 0; i < 5; i++)
            data[] = int.Parse(Console.ReadLine());
        Console.WriteLine();

        for(; ; )
            Console.WriteLine("data[{0}] = {1}",,);
    }
}



จงเติมโปรแกรมด้านล่างให้สมบูรณ์
ผลลัพธ์ที่ต้องการเป็นดังนี้
1
21
41
61
81
101
121
141
161
181

คำแนะนำ ในส่วน while แรก จะเป็นการกำหนดค่าให้กับอาร์เรย์ x ที่สร้างขึ้นมาก ในส่วน while ที่สองจะเป็นการพิมพ์ค่าของข้อมูลในอาร์เรย์

using System;
class example
{
  public static void Main(string [] args)
  {
    int [] x = new int[10];

    /*  initialize array x   */
    int i = 0;
    int a = 1;
    while()
    {
      
      a += 20;
      i++;
    }

    /*  print array x  */
    i = ;
    while()
    {
      Console.WriteLine();
      i++;
    }
  }
}


จงเติมโปรแกรมด้านล่างให้สมบูรณ์
ผลลัพธ์ที่ต้องการเป็นดังนี้
181
161
141
121
101
81
61
41
21
1

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

using System;
class example
{
  public static void Main(string [] args)
  {
    int [] x = new int[10];

    /*  initialize array x   */
    int i = 0;
    int a = 1;
    while()
    {
      
      a += 20;
      i++;
    }

    /*  print array x  */
    i = ;
    while()
    {
      Console.WriteLine();
      
    }
  }
}


จงเติมโปรแกรมด้านล่างให้สมบูรณ์
ผลลัพธ์ที่ต้องการเป็นดังนี้
181
161
141
121
101
81
61
41
21
1


using System;
class example
{
  public static void Main(string [] args)
  {
    int [] x = new int[10];

    /*  initialize array x   */
    int a = 1;
    for(int i = 0; ; )
    {
      
      a += 20;
    }

    /*  print array x  */
    for( ;  ; )
      Console.WriteLine();
  }
}


ให้เขียนโปรแกรมที่คำนวณค่าเฉลี่ยของคะแนนของนักเรียนทั้งหมด โดยโปรแกรมจะสอบถามจำนวนนักเรียนก่อนในลำดับแรก จากนั้นจึงเริ่มถามคะแนนของนักเรียนแต่ละคน เพื่อนำมาคำนวณหาค่าเฉลี่ยของคะแนนของนักเรียนทั้งหมด ดังตัวอย่างด้านล่าง
ตัวอย่างผลการทำงาน

Input numbers of students : 4
Score of student1 = 80.2
Score of student2 = 67.5
Score of student3 = 70
Score of student4 = 68.5
Average score = 71.55


ให้แสดงผลค่าเฉลี่ยเป็นทศนิยม 2 ตำแหน่ง นั่นคือให้พิมพ์ด้วยเมธอด Console.WriteLine โดยใช้รูปแบบ {0:f2}

using System;
class ArrayAVG
{
    static void Main()
    {
        int n;
        Console.Write("Input numbers of students : ");
        n = int.Parse(Console.ReadLine());
        
    }
}




จงเขียนเมธอด ReadArray อ่านอาร์เรย์จากผู้ใช้
เมธอดดังกล่าวจะรับจำนวนเต็ม n แทนจำนวนข้อมูลในอาร์เรย์ จากนั้นจะอ่านจำนวนเต็มอีก n จำนวนมาเก็บในอาร์เรย์ และคืนอาร์เรย์นั้นออกมา
ในโปรแกรมด้านล่างมีเมธอด Main เตรียมให้สำหรับทดสอบเมธอด ReadArray แล้ว

ตัวอย่างการทำงาน 1


5
10
20
15
25
50
Array has 5 elements:
10
20
15
25
50
คำอธิบาย: บรรทัดแรก 5 ระบุจำนวนข้อมูลในอาร์เรย์ จากนั้น 10, 20, 15, 25, และ 50 คือข้อมูลในอาร์เรย์ที่ผู้ใช้ป้อน

ตัวอย่างการทำงาน 2


2
100
75
Array has 2 elements:
100
75


using System;
class example
{
  static int [] ReadArray()
  {
    int n = int.Parse();

    int [] a = ;    /* Create new array of length n */
    for(int i = 0; ; i++)
      a[] = ;
    return a;
  }

  public static void Main(string [] args)
  {
    int [] arr = ReadArray();
    Console.WriteLine("Array has {0} elements:", arr.Length);
    foreach(int x in arr)
      Console.WriteLine(x);
  }
}



จงเขียนเมธอด FindAverage ที่รับพารามิเตอร์เป็นอาร์เรย์ของจำนวนเต็ม และคืนค่าเป็นค่าเฉลี่ยของข้อมูลในอาร์เรย์ให้สมบูรณ์
ในโปรแกรมด้านล่างมีเมธอด Main เตรียมให้สำหรับทดสอบเมธอด FindAverage ที่เขียนแล้ว อย่างไรก็ตามเมธอด Main เรียกใช้เมธอด ReadArray ในการอ่านข้อมูลเข้า ดังนั้นในการทดลองให้ป้อนเมธอด ReadArray จากข้อที่แล้วด้วย
ในการตอบไม่ต้องใส่เมธอด ReadArray อีก
คำแนะนำ: สามารถเรียกใช้คุณสมบัติ Length ของอารเรย์เพื่ออ่านจำนวนข้อมูลในอาร์เรย์ได้ เช่น ถ้าเราเรียก a.Length จะได้จำนวนข้อมูลในอาร์เรย์ a

ตัวอย่างการทำงาน 1


5
10
20
15
25
50
Average is 24.000

ตัวอย่างการทำงาน 2


2
100
75
Average is 87.500


using System;
class example
{
  static int [] ReadArray()
  {
    /*               THIS PART IS INTENTIONALLY HIDDEN               */
    /* To test this program, you have to write this method yourself. */

  }

  static double FindAverage(int [] a)
  {
    double total = 0;
    for(int i = 0; ; i++)
      ;
    return ;
  }

  public static void Main(string [] args)
  {
    int [] arr = ReadArray();
    double avr = FindAverage(arr);
    Console.WriteLine("Average is {0:f3}",avr);
  }
}


จงเขียนเมธอด FindAverage ที่รับพารามิเตอร์เป็นอาร์เรย์ของจำนวนเต็ม และคืนค่าเป็นค่าเฉลี่ยของข้อมูลในอาร์เรย์ให้สมบูรณ์ สำหรับข้อนี้แตกต่างจากข้อเดิมที่บังคับให้ใช้คำสั่ง foreach
ในโปรแกรมด้านล่างมีเมธอด Main เตรียมให้สำหรับทดสอบเมธอด FindAverage ที่เขียนแล้ว อย่างไรก็ตามเมธอด Main เรียกใช้เมธอด ReadArray ในการอ่านข้อมูลเข้า ดังนั้นในการทดลองให้ป้อนเมธอด ReadArray จากข้อที่แล้วด้วย
ในการตอบไม่ต้องใส่เมธอด ReadArray อีก
คำแนะนำ: สามารถเรียกใช้คุณสมบัติ Length ของอารเรย์เพื่ออ่านจำนวนข้อมูลในอาร์เรย์ได้ เช่น ถ้าเราเรียก a.Length จะได้จำนวนข้อมูลในอาร์เรย์ a

ตัวอย่างการทำงาน 1


5
10
20
15
25
50
Average is 24.000

ตัวอย่างการทำงาน 2


2
100
75
Average is 87.500


using System;
class example
{
  static int [] ReadArray()
  {
    /*               THIS PART IS INTENTIONALLY HIDDEN               */
    /* To test this program, you have to write this method yourself. */

  }

  static double FindAverage(int [] a)
  {
    double total = 0;
    foreach()
      ;
    return ;
  }

  public static void Main(string [] args)
  {
    int [] arr = ReadArray();
    double avr = FindAverage(arr);
    Console.WriteLine("Average is {0:f3}",avr);
  }
}


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

ตัวอย่างการทำงาน 1


5
10
20
15
25
50
There are 2 odd numbers

ตัวอย่างการทำงาน 2


2
100
75
There are 1 odd numbers


using System;
class example
{
  static int [] ReadArray()
  {
    /*               THIS PART IS INTENTIONALLY HIDDEN               */
    /* To test this program, you have to write this method yourself. */

  }

  

  public static void Main(string [] args)
  {
    int [] arr = ReadArray();
    Console.WriteLine("There are {0} odd numbers",CountOdd(arr));
  }
}



จงเขียนเมธอด Find ที่รับพารามิเตอร์ดังนี้
  • อาร์เรย์ a ของจำนวนเต็ม ไม่มีจำนวนเต็มที่ซ้ำกันในอาร์เรย์
  • จำนวนเต็ม g
จากนั้นให้ค้นหาว่าค่า g อยู่ในอาร์เรย์หรือไม่ ให้เมธอดคืนค่าดัชนีในอาร์เรย์ที่มีค่า g เก็บอยู่ ถ้าไม่พบให้คืนค่า -1
ในโปรแกรมด้านล่างมีเมธอด Main เตรียมให้สำหรับทดสอบเมธอด Find ที่เขียนแล้ว

ตัวอย่างผลลัพธ์ที่ถูกต้อง


Array 1
0
6
9
-1
-1
Array 2
3
-1
-1
6


using System;
class example
{
  

  public static void Main(string [] args)
  {
    int [] array1 = {1,2,3,4,5,6,7,8,9,10};
    Console.WriteLine("Array 1");
    Console.WriteLine(Find(array1,1));
    Console.WriteLine(Find(array1,7));
    Console.WriteLine(Find(array1,10));
    Console.WriteLine(Find(array1,100));
    Console.WriteLine(Find(array1,-1));

    int [] array2 = {7,6,4,10,24,1,1200};
    Console.WriteLine("Array 2");
    Console.WriteLine(Find(array2,10));
    Console.WriteLine(Find(array2,100));
    Console.WriteLine(Find(array2,1000));
    Console.WriteLine(Find(array2,1200));
  }
}



ใน C# เราสามารถใช้สตริง ได้ในลักษณะเดียวกับอาร์เรย์ แต่ไม่สามารถแก้ค่าได้
พิจารณาตัวอย่างจากส่วนของโปรแกรมด้านล่างนี้

    string s = "Hello";
    Console.WriteLine(s.Length);
    Console.WriteLine(s[0]);
    Console.WriteLine(s[1]);
    Console.WriteLine(s[3]);


ผลลัพธ์คือ
5
H
e
l

แต่ถ้าเราสั่ง s[1] = 'G'; โปรแกรมจะคอมไพล์ไม่ผ่าน เพราะว่าการอ้างสตริงแบบอาร์เรย์ทำได้เฉพาะในการอ่านเท่านั้น
จงเขียนโปรแกรมที่รับสตริง 1 ตัว จากนั้นให้พิมพ์สตริงดังกล่าวทีละตัวอักษร อักษรละหนึ่งบรรทัด

ตัวอย่างการทำงาน


Cool!
C
o
o
l
!


using System;
class example
{
  public static void Main(string[] args)
  {
    string s = Console.ReadLine();
    
  }
}



ในข้อนี้เราจะศึกษาเกี่ยวกับข้อมูลประเภท char เพื่อใช้ในการทำโจทย์ข้อถัด ๆ ไป

การคำนวณกับ char

ใน C# เราสามารถลบข้อมูลแบบอักขระ และได้ผลลัพธ์เป็นจำนวนเต็มได้
ทดลองโปรแกรมด้านล่าง ให้ทดลองป้อนอักขระต่าง ๆ เช่น A, B, a, c, 0, 1, z, # ทีละตัว ให้กับโปรแกรม

using System;

class teststring
{
  public static void Main(string [] args)
  {
    string s = Console.ReadLine();
    char c = s[0];
    Console.WriteLine(c);
    Console.WriteLine((int)c);
    Console.WriteLine(c - 'A');
    Console.WriteLine(c - '0');
    Console.WriteLine(c - 'a');
  }
}


สองคำสั่งแรกเป็นการพยายามอ่านข้อมูลแบบ char โดยเราจะอ่านค่าสตริง จากนั้นนำตัวอักษรแรกของสตริงดังกล่าวมาเก็บในตัวแปร c เราจะพิมพ์ค่าของตัวแปร c, ค่าเมื่อแปลงเป็นจำนวนเต็ม ((int) c) และผลลัพธ์จากการลบ c ด้วยค่าต่าง ๆ

โปรแกรมพิมพ์ลำดับอักขระ

โปรแกรมด้านล่าง รับตัวอักษรภาษาอังกฤษพิมพ์ใหญ่ แล้วระบุว่าเป็นตัวอักษรตัวที่เท่าใด

using System;

class teststring
{
  public static void Main(string [] args)
  {
    string s = Console.ReadLine();
    char c = s[0];
    int o = c - 'A' + 1;
    Console.WriteLine("{0} is the {1}-th character.", c, o);
  }
}


โปรแกรมดังกล่าว มีผลลัพธ์ดังเช่นด้านล่างนี้ (เรียกทำงานหลายรอบ)
A
A is the 1-th character.
B
B is the 2-th character.
H
H is the 8-th character.
Z
Z is the 26-th character.

อย่างไรก็ตาม ถ้าเราพิมพ์ a หรือ c ผลลัพธ์ที่ได้จะผิดพลาด โดยโปรแกรมจะระบุว่าเป็นตัวอักษรตัวที่ 33 และ 35 ตามลำดับ

งานของคุณ

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

ตัวอย่างการทำงาน 1


A
A is the 1-th character.

ตัวอย่างการทำงาน 2


a
a is the 1-th character.

ตัวอย่างการทำงาน 3


c
c is the 3-th character.

ตัวอย่างการทำงาน 4


H
H is the 8-th character.






จงเขียนเมธอด CountChar ที่รับพารามิเตอร์ดังนี้
  • สตริง st
  • อักขระ c
จากนั้นคืนค่าเป็นจำนวนครั้งที่อักขระ c ปรากฏใน st
ด้านล่างมีโปรแกรมหลัก Main ให้แล้ว โปรแกรมดังกล่าวอ่านสตริงจากผู้ใช้ และรับอักขระที่ต้องการให้นับ จากนั้นเรียกเมธอด CountChar ให้ค้น

ตัวอย่างการทำงาน 1


Hello world
l
3

ตัวอย่างการทำงาน 2


Welcome to the new world
w
2


using System;
class countchar
{
  static int CountChar(string st, char c)
  {
    
  }

  public static void Main(string [] args)
  {
    string input = Console.ReadLine();
    string query = Console.ReadLine();
    char q = query[0];
    Console.WriteLine(CountChar(input,q));
  }
}




จงเขียนโปรแกรมรับสตริง s จากนั้นพิมพ์สตริง s ย้อนกลับ (ดูจากตัวอย่าง)
คำแนะนำ: ถ้าต้องการพิมพ์โดยไม่ขึ้นบรรทัดใหม่ สามารถใช้ Console.Write ได้

ตัวอย่างการทำงาน 1


Hello
olleH

ตัวอย่างการทำงาน 2


This is the beginning
gninnigeb eht si sihT

เขียนทั้งโปรแกรมลงด้านล่างนี้