Mờng ệa chiÒu khềng cỉng kÝch th−ắc

Một phần của tài liệu Đề cương bài giảng cơ sở kỹ thuật lập trình ngôn ngữ c (Trang 97 - 101)

Như chúng ta ựã biết hình dạng của mảng ựa chiều cùng kắch thước có dạng hình chữ nhật thì hình dạng của mảng ựa chiều có khắch thước khác nhau không phải hình chữ nhật vì các chiều của chúng không ựều nhaụ

Khi chúng ta tạo một mảng ựa chiều kắch thước khác nhau thì chúng ta khai báo số dòng trong mảng trước. Sau ựó với mỗi dòng sẽ giữ một mảng, có kắch thước bất kỳ. Những mảng này ựược khai báo riêng. Sau ựó chúng ta khởi tạo giá trị các thành phần trong những mảng bên trong.

Cách khai báo

<kiểu dữ liệu> [][] tên mảng=new <kiểu dữ liệu>[kắch thước hàng][] ; hoặc

<kiểu dữ liệu> [][] tên mảng; ...

tên mảng=new <kiểu dữ liệu>[kắch thước hàng][] ;

Sau ựó ta tiến hành cấp phát bộ nhớ cho các phần tử của mỗi hàng tênmảng[chỉ số]=new <kiểu dữ liệu>[số phần tử của mỗi hàng] Vắ dụ:

int a[][]a; a=new int[3][];

Tiếp ựó ta ựi cấp phát bộ nhớ cho các phần tử của mỗi hàng a[0]=new int[6]; // Hàng thứ nhất có 6 phần tử

a[1]=new int[2]; // Hàng thứ nhất có 2 phần tử a[2]=new int[5]; // Hàng thứ nhất có 5 phần tử Truy nhập vào các phần tử của mảng

để truy nhập vào các phần tử của mảng ựa chiều có kắch không bằng nhau ta có thể thực hiện theo nguyên tắc sau:

Tênmảng[chắ số 1][chỉ số 2]

chắ số 1 ∈ [0...Tênmảng.Length-1]

chắ số 2 ∈ [0...Tênmảng[chắ số 1].Length-1]

Vắ dụ: Nhập vào n dãy số nguyên sau ựó tìm giá trị lớn nhất của mỗi dãy lưu vào một mảng một chiều và sẵp xếp chúng theo thứ tự tăng dần.

using System; class VisDu {

static int[][] a; static void Nhap() {

int i,j,n,m;

ConsolẹWrite("Ban muon nhap vao bao nhieu day so nguyen n="); n = int.Parse(ConsolẹReadLine());

a = new int[n][];

ConsolẹWriteLine("Ban hay nhap thong tin cho moi day so nguyen"); for (i = 0; i < ạLength; ++i)

{

ConsolẹWrite("Ban hay nhap so phan tu cho day thu {0} m=", i); m = int.Parse(ConsolẹReadLine());

ConsolẹWriteLine("Nhap gia tri cho moi phan tu o day thu {0}", i); for (j = 0; j < a[i].Length; j++) { ConsolẹWrite("a[{0}][{1}]=", i, j); a[i][j] = int.Parse(ConsolẹReadLine()); } } }

static void Tim(out int[] kq) {

int i, j, d=0,max; kq = null;

for (i = 0; i < ạLength; ++i) {

max = a[i][0];

for (j = 1; j < a[i].Length; ++j) if (max < a[i][j]) max = a[i][j]; ArraỵResize(ref kq, ++d);

kq[d - 1] = max; }

} (adsbygoogle = window.adsbygoogle || []).push({});

static void Hien(int []x) {

int i;

for (i = 0; i < x.Length; ++i) ConsolẹWrite("{0}\t", x[i]); ConsolẹWriteLine();

}

static void Main() {

int[] kq; Nhap(); Tim(out kq); ArraỵSort(kq);

ConsolẹWriteLine("Cac phan tu lon nhat cua moi day da duoc sap xep la");

Hien(kq);

ConsolẹReadKey(); }

}

BộI 19 : KIÓU Dọ LIỷU XằU Cã NéI DUNG Cè ậỡNH (STRING) Có một thời gian người ta luôn nghĩ rằng máy tắnh chỉ dành riêng cho việc thao tác các giá trị dạng số. Các máy tắnh ựầu tiên là ựược thiết kế ựể sử dụng tắnh toán số lượng lớn như tắnh toán quỹ ựạo của tên lửa trong quốc phòng. Và ngôn ngữ lập trình ựược giảng dạy ở khoa toán của các ựại học lớn.

Ngày nay, hầu hết các chương trình liên quan ựến nhiều chuỗi ký tự hơn là các chuỗi các con số. Thông thường các chuỗi ựược sử dụng cho việc xử lý từ ngữ, thao tác trên các sưu liệu, và tạo ra các trang web.

Ngôn ngữ C# hỗ trợ khá ựầy ựủ các chức năng của kiểu chuỗi mà chúng ta có thể thấy ựược ở các ngôn ngữ lập trình cấp cao khác. điều quan trọng hơn là ngôn ngữ C# xem những chuỗi như là những ựối tượng và ựược ựóng gói tất cả các thao tác, sắp xếp, và các phương thức tìm kiếm thường ựược áp dụng cho chuỗi ký tự.

Những thao tác chuỗi phức tạp và so khớp mẫu ựược hỗ trợ bởi việc sử dụng các biểu thức chắnh quy (regular expression). Ngôn ngữ C# kết hợp sức mạnh và sự phức tạp của cú pháp biểu thức chắnh quy, (thông thường chỉ ựược tìm thấy trong các ngôn ngữ thao tác chuỗi như Awk, Perl), với một thiết kế hướng ựối tượng ựầy ựủ.

Trong phần này chúng ta sẽ học cách làm việc với kiểu dữ liệu string của ngôn ngữ C#, kiểu string này chắnh là một alias của lớp System.String của .NET Framework. Chúng ta cũng sẽ thấy ựược cách rút trắch ra chuỗi con, thao tác và nối các chuỗi, xây dựng một chuỗi mới với lớp StringBuilder. Thêm vào ựó, chúng ta sẽ ựược học cách sử dụng lớp Regex ựể so khớp các chuỗi dựa trên biểu thức chắnh quy phức tạp.

Trong C# ựưa ra hai loại chuỗi, một là chuỗi với nội dung không thể thay ựổi ựược(String), hai là chuỗi với nội dung có thể thay ựổi ựược (StringBuilder).

C# xem những chuỗi như là những kiểu dữ liệu cơ bản tức là các lớp này rất linh hoạt, mạnh mẽ, và nhất là dễ sử dụng. Mỗi ựối tượng chuỗi là

một dãy cố ựịnh các ký tự Unicodẹ Nói cách khác, các phương thức ựược dùng ựể làm thay ựổi một chuỗi thực sự trả về một bản sao ựã thay ựổi, chuỗi nguyên thủy không thay ựổị Khi chúng ta khai báo một chuỗi C# bằng cách dùng từ khóa string, là chúng ta ựã khai báo một ựối tượng của lớp System.String, ựây là một trong những kiểu dữ liệu ựược xây dựng sẵn ựược cung cấp bởi thư viện lớp .NET (.NET Framework Class Library). Do ựó một kiểu dữ liệu chuỗi C# là kiểu dữ liệu System.String, và trong suốt chương này dùng hai tên hoán ựổi lẫn nhaụ

Một phần của tài liệu Đề cương bài giảng cơ sở kỹ thuật lập trình ngôn ngữ c (Trang 97 - 101)