Code C++: Viết hàm đếm số lượng các giá trị phân biệt có trong mảng

Người đăng: culaoxanh88 on Thứ Sáu, 28 tháng 2, 2014



Viết hàm đếm số lượng các giá trị phân biệt có trong mảng

int demchusokhacnhau(int a[],int n){

       int dem = 1;

       bool flag = false;

       for(int i = 0;i<n;i++){

              for( int j = i + 1;j < n ;j++){

                    flag = false;

                    if(a[i]==a[j]){

                          flag = true;

                          break;

                   }
             if(!flag && j==n-1){

                     dem ++;

             }

          }

         break;

      }

     return dem ;

}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Cho mảng một chiều các số nguyên. Viết hàm tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng.

Người đăng: culaoxanh88



Cho mảng một chiều các số nguyên. Viết hàm tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng.

int timsochanlonnhat(int a[],int n){

int minle = 2147483647; // số nguyên lẻ lớn nhất

int maxchan = -2147483648; // số nguyên chẵn nhỏ nhất

for(int i = 0;i < n; i++){

           if(a[i]%2==0) {

                  if(maxchan < a[i] && minle > a[i] ){

                  maxchan = a[i];

           }

}else{

          if(minle > a[i]){

          minle = a[i];

 }
}
}
return maxchan;
}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Cho mảng một chiều các số nguyên. Viết hàm tìm chữ số xuất hiện nhiều nhất trong mảng.

Người đăng: culaoxanh88



Cho mảng một chiều các số nguyên. Viết hàm tìm chữ số xuất hiện nhiều nhất trong mảng.
int timchuso(int a[],int n){

int temp[100];

int max = 0;

int number = a[0];

// Khởi tạo giá trị 0 cho mảng

for(int j = 0;j<100;j++){

temp[j]=0;

}

//Tìm chữ số xuất hiện

for(int i = 0 ; i < n ; i++){

temp[a[i]]=temp[a[i]] + 1;

if(max < temp[a[i]]){

max = temp[a[i]];

number = a[i];

}

}

printf("%d\n",max);

return number;

}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

PHP: Tự động tạo mật khẩu ngẫu nhiên - PHP Password Generating

Người đăng: culaoxanh88 on Thứ Sáu, 21 tháng 2, 2014


Tự động tạo mật khẩu ngẫu nhiên - PHP Password Generating
PHP Code:
<?php
function genPwd($length=6) {
   $password = '';
   $possible = '23456789bcdfghjkmnpqrstvwxyz';
   $i = 0;
   while ($i < $length) {

      $password .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
      $i++;
   } 
   return $password;
}
?>
Cách sử dụng:
Cóp và dán đoạn mã trên vào trang của bạn, sau đó gọi hàm genPwd() như sau:
<?php
   $password = genPwd(8);
?>
Kết quả:
Đoạn mã trên cho phép tự động tạo mật khẩu ngẫu nhiên có độ dài bất kỳ được tổ hợp từ các ký tự xác định trước.
Mật khẩu ngẫu nhiên được sinh ra có độ dài 8 ký tự: m1ztpxw8
Chú ý:
Nếu không có độ dài ký tự trong hàm genPwd() thì mặc định sẽ chọn độ dài mật khẩu là 6. Biến $possible trong hàm genPwd() có thể được chỉnh sửa để quy định các ký tự xác định được sử dụng.

Tag: PHP, Password Generating, tự tạo mật khẩu, an toàn thông tin
More about

PHP: Lớp kết nối MySQL với PHP bằng câu lệnh đơn giản

Người đăng: culaoxanh88

PHP Code:
class mysql{
var $property = array(
    'hostname'    => 'localhost',
    'database'    => '',
    'username'    => '',
    'password'    => '',
);
function mysql($info){
foreach($this->property as $k    => $v){
$this->property[$k]=$info[$k];
}
}
function connect(){
$flag = @mysql_pconnect($this->property['hostname'],$this->property['username'],$this->property['password']);
if(!$flag)    die("can not connect to server. may be server bussy");
$flag= @mysql_select_db($this->property['database'],$flag);
if(!$flag) die("can not select database now");
}
}
Lưu vào trong 1 file ví dụ “global.php”;
Để dễ dàng khi kết nối bạn viết thêm 1 file init.php file này có chứ năng tạo các thông tin cấu hình cơ bản như kết nối mysql, lấy thông tin thành viên …
ví dụ
PHP Code:
<?php
$dbinfo = array(
'hostname'    => 'localhost',
'database'    => 'databasename',
'username'    => 'root',
'password'    => 'root',
);
include("includes/global.php");
$db = new mysql($dbinfo);
$db->connect();
?>
Như vậy file nào cần kết nối database bạn chỉ cần inlclude file init.php vào là ok;
PHP Code:
include("init.php");

Tag: PHP, MySQL, Apache, Database, Connection, dbinfo
More about

PHP: Các hàm PHP xử lý chuỗi

Người đăng: culaoxanh88


Các hàm PHP xử lý chuỗi

1: addcslashes :Trích dẫn chuỗi kí tự với những vạch chéo trong kiểu C
- Cấu trúc :addcslashes(string with special characters);

2: addslashes :Trích dẫn chuỗi kí tự với những vạch chéo
- Cấu trúc : addcslashes(a string with special characters);

3: bin2hex :Chuyển đổi dữ liệu dạng nhị phân sang dạng biểu diễn hệ hexa
- Cấu trúc :bin2hex(string);

4: chop :Tách bỏ nhưng khoảng trắng từ cuối một chuỗi

5: chr : Cho một kí tự đặc biệt trong bảng mã
- Cấu trúc : chr(numeric);

6: chuck split : Tách một chuỗi thành các chuỗi nhỏ hơn

7: convert cyr string :Chuyển đổi từ một kí tự kirin sang một kí tự khác

8: count_chart : Cho thông tin về các kí tự dùng trong chuỗi

9: crc32 : Tính toán sự thừa vòng đa thức của một chuỗi
Tự động tạo ra chu ki kiểm tra tổng thừa của đa thức dài 32bit trong một chuỗi

10: crypt :Một cách mã hóa một chuỗi

11: echo : In ra một hay nhiều chuỗi

12: explode :Tách một chuỗi ra bởi chuỗi kí tự

13: fprintf :Viết một định dạng chuỗi ra một dòng

14: get html translation table :Cho ra bảng dịch bằng cách sử dung các thủ tục

html entity decode :

15: hebrev :Chuyển đổi văn ban logic khó hiểu sang văn ban trưc quan

16: hebrevc :Chuyển đổi văn ban logic khó hiểu sang văn ban trưc quan với sự chuyển đổi dòng mới

17: html entity decode :Chuyển đổi tấtcả cácthực thể HTML sang những kí tự có thể dùng được của chúng

18: htmlentities :Đổi tất cả các kí tự được sử dung sang các thực thể HTML

19: htmlspecialchars :Đổi những kí tự đặc biệt sang các thực thể của HTML

20: implode :Nối các phần tử của mảng với một chuỗi

21: join :Hàm này là một bí danh của hàm implode

22: levenshtein :Tính khoảng cách giữa hai chuỗi

23: localeconv :Lấy ra thông tin quy cách số

24: lstrim-- Strip whitespace from the beginning of a string
Xoá khoảng trắng từ phần tử đầu tiên của chuỗi

25: md5_file-- Calculates the md5 hash of a given filename
Mã hoá md5 tên file

26: md5 -- Calculate the md5 hash of a string
Mã hoá md5 1 chuỗi

27: metaphone -- Calculate the metaphone key of a string
Tính siêu khoá âm thanh của 1 chuỗi

28: money_format -- Formats a number as a currency string
Định dạng 1 số như 1 chuỗi tiền tệ

29: nl_langinfo -- Query language and locale information
Ngôn ngữ truy vấn và biên tập thông tin

30: nl2br -- Inserts HTML line breaks before all newlines in a string
Chèn 1 dòng ngắt HTML trước tất cả những dòng mới trong 1 chuỗi

31: number_format -- Format a number with grouped thousands
Định dạng 1 số với hàng nghìn chữ số

32: ord -- Return ASCII value of character
Trả lại giá trị ASCII của kí tự

33: parse_str -- Parses the string into variables
Phân tách chuỗi thành các biến số

34: print -- Output a string
In ra 1 chuỗi

35: printf -- Output a formatted string
In ra 1 chuỗi được định dạng

36: quoted_printable_decode -- Convert a quoted-printable string to an 8 bit string
Chuyển 1 chuỗi có thể in trích dẫn sang 1 chuỗi 8 bit.(Giải mã)

37: quotemeta -- Quote meta characters
Trích dẫn kí tự đặc biệt

38: rtrim -- Strip whitespace from the end of a string
Xoá khoảng trắng từ phần tử cuối cùng của chuỗi

39: setlocale -- Set locale information
Thiết lập vị trí thông tin

40: sha1_file -- Calculate the sha1 hash of a file
Mã hoá sha1 1 file

41: sha1 -- Calculate the sha1 hash of a string
Mã hoá sha1 1 chuỗi

42: similar_text -- Calculate the similarity between two strings
Cho số kí tự giống nhau của 2 chuỗi

43: soundex -- Calculate the soundex key of a string
Tính khoá chỉ âm của 1 chuỗi

44: sprintf -- Return a formatted string
Trả lại 1 chuỗi được định dạng

45: sscanf -- Parses input from a string according to a format
Phân tách chuỗi theo 1 định dạng

46: str_ireplace -- Case-insensitive version of str_replace().
Tương tự str_ replace().

47: sscanf -- Parses input from a string according to a format
Phân tích từ loại nhập vao từ một chuỗi theo một định dạng

48: str_ireplace -- Case-insensitive version of str_replace().
->Thay thế ngược lại khi chuỗi đã bị thay thế bằng str_replace()

49: str_pad -- Pad a string to a certain length with another string
Co một chuỗi tới một độ dài nào đó với một chuỗi khác

50: str_repeat -- Repeat a string
Lặp lại một chuỗi

51: str_replace -- Replace all occurrences of the search string with the replacement string
Thay thế tất cả các biến cố của chuỗi tìm kiếm với một chuỗi thay thế

52: str_rot13 --Perform the rot13 transform on a string
Thực hiện mã hoá theo rot 13 trên 1 chuỗi

(Rot-13 :Trong các nhóm tin của mạng USENET, đây là một kỹ thuật mật mã hoá đơn giản, nó làm dịch từng ký tự đi 13 vị trí trong bảng chữ cái (cho nên e sẽ thành r). Mật mã rot- 13 được dùng cho mọi thông báo tin bất kỳ nào có thể làm mất sự thú vị của một người nào đó (như) cách giải cho một trò chơi chẳng hạn hoặc xúc phạm một số người đọc (như) bài thơ về tình dục chẳng hạn. Nếu người đọc cho giải mã thông báo tin này bằng cách phát ra một lệnh thích hợp, thì người đọc đó - chứ không phải tác giả của thông báo - sẽ phải chịu trách nhiệm đối với sự khó chịu do việc đọc thông báo gây ra.)

53: str_shuffle --Randomly shuffles a string
Thay đổi một chuỗi bằng cách xê dịch ngẫu nhiên

54: str_split -- Convert a string to an array
Đổi một chuỗi thành một mảng

55: str_word_count -- Return information about words used in a string
Trả lại thông tin về những từ đã sử dụng trong một chuỗi

56: strcasecmp -- Binary safe case-insensitive string comparison
So sánh chuỗi theo …case-insensitive.. nhị phân

57: strchr --Alias of strstr()
Bí danh của strstr()

58: strcmp --Binary safe string comparison
Sự so sánh chuỗi bằng cơ sở nhị phân

59: strcoll --Locale based string comparison
Nơi diễn ra sự so sánh cơ sở

60: strcspn -- Find length of initial segment not matching mask
Tìm độ dài của đoạn đầu tiên mà không tìm thấy trên bề mặt của chuỗi này đối với chuỗi kia.

61: strip_tags --Strip HTML and PHP tags from a string
Loại bỏ các thẻ HTML và PHP từ một chuỗi

62: stripcslashes -- Un-quote string quoted with addcslashes()
Loại bỏ các dấu slashe trong chuỗi do hàm addcslashes() tạo ra.

63: stripos -- Find position of first occurrence of a case-insensitive string
Tìm ra vị trí đầu tiên của chuỗi này trong chuỗi kia của trường hợp sử lý cặp chuỗi.

64: stripslashes -- Un-quote string quoted with addslashes()
Loại bỏ hàm addslashes(), hay nói cách khác, hàm này trả về giá trị ban đầu của chuỗi khi chuỗi bị hàm addslashes() chèn các dấu slashe ở các ký tự đặc biệt

65: stristr -- Case-insensitive strstr()
Loại bỏ hàm strstr() khi trong chuỗi có dấu chấm.

66: strlen --Get string length
Lấy độ dài của chuỗi

67: strnatcasecmp -- Case insensitive string comparisons using a "natural order" algorithm
So sánh chuỗi theo thứ tự abc, các ký tự được xét từ đầu đến cuối chuỗi
(VD: a2>a12>a11).

68: strnatcmp -- String comparisons using a "natural order" algorithm
So sánh chuỗi sử dụng thứ tự abc và thứ tự toán học, nhưng được tính trên toàn bộ chuỗi ( VD: a12 > a11>a2).

69: strncasecmp -- Binary safe case-insensitive string comparison of the first n characters
Là một hàm giống như strcasecmp(), khác ở chỗ hàm này có thể chỉ rõ số ký tự trong mỗi chuỗi đem so sánh.

70: strncmp: trả ra giá trị mà chuỗi1 dài hơn so với sâu hai.

71: strpos: Tìm vì trí xuất hiện đầu tiên của một chuỗi này trong chuỗi khác.

72: strrchr: Tìm kiếm vị trí xuất hiện cuối cùng của một kí tự trong chuỗi.

73: strrev: Đảo ngược một chuỗi.

74: strripos: Tìm vị trí cuối cùng của chuỗi này khiến nó khác một chuỗi cho trước.

75: strrpos: Tìm vị trí lần xuất hiện cuối cùng cùng của một kí tự trong một chuỗi.

76: strspn: Tính xem độ dài đoạn đầu của một chuỗi mà chứa toàn các kí tự thuộc chuỗi khác.

77: strstr: Lấy ra một đoạn của chuỗi từ vị trí xuất hiện kí tự cho trước.

78: strtok: chia cắt chuỗi.

79: strtolower: biến kí tự chữ hoa thành chữ thường.

80: strtoupper: biến kí tự chữ thường thành chữ hoa.

81: strtr: chuyển đổi kí tự theo một qui tắc nào đó.

82: substr_compare: không có thông tin.

83: substr_count: Tính số lần xuất hiện của một chuỗi này trong một chuỗi khác.

84: substr_replace: thay thế một đoạn văn bản trong phạm vi một đoạn của chuỗi kí tự.

85: substr: trả ra một phần của chuỗi.

86: trim: Loại bỏ kí tự thừa(whitespace)ở đầu và cuối mỗi chuỗi.

87: ucfirst: viết hoa kí tự đầu tiên của một chuỗi.

88: ucwords: viết hoa kí tự đầu tiên của mỗi từ.

89: vprints: xuất ra một chuỗi được định dạng

90: vsprint: quai lại một chuỗi định dạng.

91: wordswarp: chia chuỗi kí tự ra thành các sâu con nhờ một kí tự xác định.
More about

SQL Server: Câu lệnh truy vấn trong SQL Server 2005 (Select Command)

Người đăng: culaoxanh88 on Thứ Năm, 20 tháng 2, 2014


Câu lệnh truy vấn trong SQL Server 2005 (Select Command)

Các lệnh và các mệnh đề cơ bản trong SQL Server 2005
Lệnh SELECT

SELECT là một lệnh truy vấn dữ liệu cơ bản trong SQL. Có rất nhiều mệnh đề con tuỳ chọn trong câu lệnh SELECT.

Cấu trúc SELECT – FROM – WHERE
Cú pháp:
SELECT <Danh sách các cột> FROM <Danh sách bảng> WHERE <Điều kiện>;
Trong đó:
+ <Danh sách các cột>: Là danh sách các cột hoặc biểu thức của các cột được đưa vào kết quả truy vấn.
+ <Danh sách bảng>: Là danh sách các bảng mà từ đó các cột được lấy ra
+ <Điều kiện>: Là một biểu thức logic xác định các bản ghi thoả mãn điều kiện của câu lệnh.
Ví dụ 1: Hiển thị tên, tuổi của bảng sinh viên:
SELECT Ten, Tuoi 
FROM tblsinhvien;

Ví dụ 2: Hiển thị tên, học lực của những sinh viên có học lực >=7 trong bảng sinh viên:
SELECT Ten, HocLuc
FROM tblsinhvien
WHERE HocLuc>=7;

Truy vấn sử dụng các hàm MAX, MIN, AVG, SUM, COUNT

Hàm MAX
Chức năng: Cho giá trị lớn nhất trong cột
Ví dụ 3Hiển thị học lực cao nhất trong danh sách sinhvien
SELECT Max(HocLuc) AS DiemCaoNhat
FROM tblsinhvien;

Hàm MIN
Chức năng: Cho giá trị nhỏ nhất trong cột
Ví dụ 4Hiển thị học lực nhỏ nhất trong danh sách sinhvien
SELECT Min(HocLuc) AS DiemThapNhat
FROM tblsinhvien;

Hàm AVG
Chức năng: Cho giá trị tung bình cộng trong cột
Ví dụ 5: Hiển thị học lực trung bình của cột học lực trong danh sách sinhvien
SELECT AVG(HocLuc) AS DiemTB
FROM tblsinhvien;

Hàm SUM
Chức năng: Cho tổng giá trị trong cột
Ví dụ 6: Hiển thị tổng học lực của cột học lực trong danh sách sinhvien
SELECT SUM(HocLuc) TongHL
FROM tblsinhvien;

Hàm COUNT
Chức năng: Cho biết số phần tử ( hàng) trong cột
Ví dụ 7: Đếm số bản ghi (hàng) của cột học lực trong danh sách sinhvien
SELECT COUNT(HocLuc) AS SoSinhVien
FROM tblsinhvien;

Truy vấn sử dụng các phép AND, OR, IN, BETWEEN, NOT, ALL
- AND: Phép và logic
- OR: Phép hoặc logic
- IN: Là phần tử của…
- BETWEEN: Là phần tử giứa các phần tử …
- NOT: Phép phủ định
- ALL: Là tất cả những phần tử …
Ví dụ 8: Đưa ra danh sách những sinh viên có điểm >= 8.5 và có quê = “Hải Phòng”
SELECT *
FROM tblsinhvien
WHERE (diem>=8.5) AND ( que = “Hải Phòng’);
Ví dụ 9: Đưa ra danh sách những sinh viên có quê = “Nam Định” hoặc “Thanh Hóa”
SELECT *
FROM tblsinhvien
WHERE (que = “Nam Định”) OR (que = “Thanh Hóa”);
Ví dụ 10: Đưa ra danh sách những nhân viên có kết quả là 8, 9, 10
SELECT *
FROM tblDiem
WHERE KetQua IN (8, 9, 10);
Ví dụ 11: Đưa ra danh sách những sinh viên có kết quả nằm trong khoảng [5,7]
SELECT *
FROM tblDiem
WHERE KetQua BETWEEN 5 and 7;
Ví dụ 12: Đưa ra danh sách những sinh viên có quê không phải là “Hải Dương”
SELECT *
FROM tblsinhvien
WHERE que NOT(SELECT que FROM tblsinhvien
WHERE (que = ”Hải Dương”));
Ví dụ 13: Hiển thị tất cả kết quả của sinh viên
SELECT ALL KetQua
FROM tblDiem;

Truy vấn thay đổi tên cột, tên bảng và hiển thị các cột từ nhiều bảng khác nhau,

- Muốn hiển thị các cột từ nhiều bảng khác nhau thì trong câu lệnh SELECT chúng ta phải làm như sau:
SELECT < Danh sách Tên_bang.Tên_cột>
FROM <Danh sách Tên_bảng>
WHERE <Điều kiện nối bảng>;
- Có thể đặt tên các cột trong kết quả các truy vấn bằng cách đặt tên mới vào sau cột được chọn ngăn cách bởi từ khoá AS, tương tự ta có thể đặt tên mới cho các bảng
Ví dụ 14: Hiển thị danh sách sinh viên bao gồm tên, kết quả từ bảng tblsinhviên và bảng tbldiem:
SELECT tblsinhvien.Ten AS Ten, tblDiem.KetQua AS KQ
FROM tblsinhvien AS sv, tblDiem AS sd
WHERE (sv.MaSV = sd.MaSV);

Truy vấn sử dụng lượng từ DISTINCT/ ALL

* Để tránh tình trạng đưa ra các bộ (hàng/bản ghi) trùng lặp trong các kết quả truy vấn thì SQL có lượng từ DISTINCT.
Ví dụ 15: Hiển thị các mã đề tài được sinh viên đăng ký trong bảng đề tài
SELECT DISTINCT MaDT FROM tblsinhvien;

* Để hiển thị tất cả các hàng (lấy cả các hàng có giá trị trùng nhau ) ta dùng lượng từ ALL
Ví dụ 16: Hiển thị tất cả các MaDT mà bảng sv_dtai có
SELECT ALL MaDT
FROM tblDiem;

Chú ý: Ngầm định (nếu không viết Distinct/All) thì máy hiểu là All

Truy vấn sử dụng mệnh đề GROUP BY

- Để hiển thị các bản ghi theo nhóm ta dùng mệnh đề GROUP BY
Ví dụ 17: Hiển thị bảng đề tài theo nhóm mã đề tài
SELECT MaDT
FROM tbldetai
GROUP BY MaDT;

Truy vấn có sử dụng mệnh đề HAVING

- Mệnh đề HAVING thường được sử dụng cùng mệnh đề GROUP BY. Sau HAVING là biểu thức điều kiện. Biểu thức điều kiện này không tác động vào toàn bảng được chỉ ra ở mệnh đề FROM mà chỉ tác động lần lượt từng nhóm các bản ghi đã chỉ ra tại mệnh đề GROUP BY.
Ví dụ 18: Đếm xem có bao nhiêu đề tài đã được sinh viên đăng ký tham gia
SELECT MaDT
FROM tbldetai
GROUP BY MaDT
HAVING COUNT(*);

Truy vấn có sử dụng mệnh đề ORDER BY

- Mệnh đề ORDER BY được dùng để sắp xếp dữ liệu trong bảng theo chiều tăng hoặc giảm (ASC hoặc DESC) của một cột nào đó.
- Mệnh đề ORDER BY nếu đứng sau GROUP BY thì miền tác động của sắp xếp là trong từng nhóm của cột được chỉ ra trong GROUP BY.
Ví dụ 19: Sắp xếp bảng sinhvien theo chiều giảm dần của cột học lực
SELECT *
FROM tblsinhvien
ORDER BY hl DESC;

Truy vấn lồng nhau
Trong lệnh SELECT có thể được lồng nhiều mức
Ví dụ 20: Hiển thị sinh viên có học lực cao nhất
SELECT *
FROM tblsinhvien
WHERE hl = (SELECT MAX (hl) FROM tblsinhvien);

Ví dụ 21: Hiển thị hođệm, tên của những sinh viên có kết quả >= 8 và có tên đề tài là Pascal
SELECT hodem,ten
FROM tblsinhvien
WHERE MaSV IN (SELECT MaSV
FROM tblDiem
WHERE (kq >= 8) AND
( MaDT IN ( SELECT MaDT FROM tbldetai
WHERE tendt = “Pascal”)));

Tag: SQL Server, T-SQL, SQL Server 2005, Select Command, Truy vấn sql
More about

Code C#: Mã hóa cổ điển Vigenere (Vigenere Cipher)

Người đăng: culaoxanh88


(VIGENERE CIPHER)
///HÀM MÃ HÓA
static void VigenereEncrypt(ref StringBuilder s, string key)
{
    for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
    key = key.ToUpper();
    int j = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (Char.IsLetter(s[i]))
        {
            s[i] = (char)(s[i] + key[j] - 'A');
            if (s[i] > 'Z') s[i] = (char)(s[i] - 'Z' + 'A' - 1);
        }
        j = j + 1 == key.Length ? 0 : j + 1;
    }
}
///HÀM GIẢI MÃ
static void VigenereDecrypt(ref StringBuilder s, string key)
{
    for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
    key = key.ToUpper();
    int j = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (Char.IsLetter(s[i]))
        {
            s[i] = s[i] >= key[j] ?
                      (char)(s[i] - key[j] + 'A') :
                      (char)('A' + ('Z' - key[j] + s[i] - 'A') + 1);
        }
        j = j + 1 == key.Length ? 0 : j + 1;
    }
}
///HÀM CHÍNH
public static void MainMethod()
{
    StringBuilder s = new StringBuilder("ArkPhaze");
    const string key = "KeyData";
    VigenereEncrypt(ref s, key);
    Console.WriteLine(s);
    VigenereDecrypt(ref s, key);
    Console.WriteLine(s);
}
Tag: C, C++, C#, mã hóa cổ điển, Vigenere, Vigenere Cipher, an toàn, bảo mật
More about

Code C#: Mã hóa cổ điển Rail-Fence (Rail Fence Cipher)

Người đăng: culaoxanh88


(RAIL FENCE CIPHER)
///MÃ HÓA
public static string Encrypt(int rail, string plainText)
{
    List<string> railFence = new List<string>();
    for (int i = 0; i < rail; i++)
    {
        railFence.Add("");
    }

    int number = 0;
    int increment = 1;
    foreach (char c in plainText)
    {
        if (number + increment == rail)
        {
            increment = -1;
        }
        else if (number + increment == -1)
        {
            increment = 1;
        }
        railFence[number] += c;
        number += increment;
    }

    string buffer = "";
    foreach (string s in railFence)
    {
        buffer += s;
    }
    return buffer;
}
///GIẢI MÃ
public static string Decrypt(int rail, string cipherText)
{
    int cipherLength = cipherText.Length;
    List<List<int>> railFence = new List<List<int>>();
    for (int i = 0; i < rail; i++)
    {
        railFence.Add(new List<int>());
    }

    int number = 0;
    int increment = 1;
    for (int i = 0; i < cipherLength; i++)
    {
        if (number + increment == rail)
        {
            increment = -1;
        }
        else if (number + increment == -1)
        {
            increment = 1;
        }
        railFence[number].Add(i);
        number += increment;
    }

    int counter = 0;
    char[] buffer = new char[cipherLength];
    for (int i = 0; i < rail; i++)
    {
        for (int j = 0; j < railFence[i].Count; j++)
        {
            buffer[railFence[i][j]] = cipherText[counter];
            counter++;
        }
    }

    return new string(buffer);

}
///CHƯƠNG TRÌNH CHÍNH
static void Main(string[] args)
{
    int key = 4;
    string plainText = "I Made Ronaldo";

    string cipherText   = RailFence.Encrypt(key, plainText);
    string decryptText  = RailFence.Decrypt(key, cipherText);

    Console.WriteLine("Plain Text   : " + plainText);
    Console.WriteLine("Cipher Text  : " + cipherText);
    Console.WriteLine("Decrypt Text : " + decryptText);

}
Tag: C, C++, C#, mã hóa cổ điển, Rail-Fence, Rail-Fence Cipher, an toàn, bảo mật
More about

Code C#: Mã hóa cổ điển Affine (Affine Cipher)

Người đăng: culaoxanh88


///Hàm mã hóa Affine (Affine Encryption)
/// e(x) = (ax + b)(mod m). Note: a & m là số nguyên tố cùng nhau.

public static string AffineEncrypt(string plainText, int a, int b){
string cipherText = "";

char[] chars = plainText.ToUpper().ToCharArray();

foreach (char c in chars){
      int x = Convert.ToInt32(c - 65);
      cipherText += Convert.ToChar((( a * x + b ) % 26) + 65);
}

return cipherText;
}

/// Hàm giải mã Affine (Affine Decryption)
/// d(x) = aInverse * (e(x) − b)(mod m).

public static string AffineDecrypt(string cipherText, int a, int b){
string plainText = "";

int aInverse = MultiplicativeInverse(a); 

char[] chars = cipherText.ToUpper().ToCharArray();

foreach (char c in chars){
    int x = Convert.ToInt32(c - 65);
    if (x - b < 0) x = Convert.ToInt32(x) + 26;
    plainText += Convert.ToChar(((aInverse * (x - b)) % 26) + 65);
} 
    return plainText;
}

public static int MultiplicativeInverse(int a){
for (int x = 1; x < 27; x++){
    if ((a * x) % 26 == 1)
    return x;
}
throw new Exception("No multiplicative inverse found!");

}

Tag: C, C++, C#, mã hóa cổ điển, Affine, Affine Cipher, an toàn, bảo mật, Security
More about

Code C#: Mã hóa cổ điển Ceasar (Ceasar Cipher)

Người đăng: culaoxanh88



///Ceasar Cipher/Ceasar Encription
using System;
class Program{
static string Caesar(string value, int shift) {
char[] buffer = value.ToCharArray();
for (int i = 0; i < buffer.Length; i++){
// Letter.
char letter = buffer[i];
// Add shift to all.
letter = (char)(letter + shift);
// Subtract 26 on overflow.
// Add 26 on underflow.

if (letter > 'z') {
letter = (char)(letter - 26);
}
else if (letter < 'a') {
letter = (char)(letter + 26);
}
// Store.
buffer[i] = letter;
}
return new string(buffer);
}

static void Main()
{
string a = "test";
string b = Caesar(a, 18); // Ok
string c = Caesar(b, -18); // Ok

string d = Caesar(a, 1); // Ok
string e = Caesar(d, -1); // Ok

string f = "exxegoexsrgi";
string g = Caesar(f, -4); // Ok

Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(g);
}
}
Tag: C, C++, C#, mã hóa cổ điển, Ceasar, Ceasar Cipher, an toàn, bảo mật
More about

Code C-C++: Tìm ma trận chuyển vị trong C++

Người đăng: culaoxanh88 on Thứ Tư, 19 tháng 2, 2014


#include<iostream>
#include<iomanip>
using namespace std;
int M[50][50];
void NhapMaTran(int A[50][50], int n, int m){
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
cout<<"\n A["<<i<<","<<j<<"]= ";
cin>>A[i][j];
}
}
void InMaTran(int B[50][50], int n,int m){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
cout<<setw(3)<<B[i][j]; 
cout<<"\n";

}
}
void ChuyenVi(int F[50][50], int n,int m){
for(int j=0;j<m;j++){
for(int i=0;i<n;i++)
cout<<setw(3)<<F[i][j]; 
cout<<"\n";
}
}
main(){
int r,c;
cout<<"\n So dong = "; cin>>r;
cout<<"\n So cot = "; cin>>c;
NhapMaTran(M,r,c);
cout<<"\n Ma tran vua nhap: \n";
InMaTran(M,r,c);
cout<<"Ma tran chuyen vi: \n";
ChuyenVi(M,r,c);
}
Tag: C, C++, ma trận, mảng 2 chiều, mảng hai chiều, ma trận chuyển vị, array
More about

Code C-C++: Phép toán cộng, nhân hai ma trận

Người đăng: culaoxanh88

#include<conio.h>
#include<iostream.h>
#define max 100
/*Nhap ma tran*/
void NhapMaTran(float A[max][max], int m, int n){
   for(int i = 0; i<m; i++)
   for(int j = 0; j<n; j++) {
      cout<<"a["<<i<<"]["<<j<<"] = ";
      cin>>A[i][j];
   }
}

/*Xuat ma tran*/
void XuatMaTran(float A[max][max], int m, int n) {
   for(int i=0 ; i<m; i++){
      cout<<endl;
      for(int j=0 ; j<n; j++)
         cout<<A[i][j]<<"\t";
   }
}
/*C = A+B*/
void CongMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n) {
   for(int i = 0; i<m; i++)
   for(int j = 0; j<n; j++)
      C[i][j] = A[i][j]+B[i][j];

}
/*A cap mxn * B cap nxp = C cap mXp*/
void NhanMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n, int p){
   for(int i = 0; i<m; i++)
      for(int k = 0; k<p; k++) {
         C[i][k]=0;
         for(int j = 0; j<n; j++)
            C[i][k] = C[i][k]+A[i][j]*B[j][k];
      }
}
/*Chuong trinh chinh*/
void main(){
   int m=3,n=2,p=3;
   float A[max][max],B[max][max],C[max][max],D[max][max];
   clrscr();
   cout<<"Nhap ma tran A cap "<<m<<"x"<<n<<endl;
   NhapMaTran(A,m,n);
   cout<<"Nhap ma tran B cap "<<m<<"x"<<n<<endl;
   NhapMaTran(B,m,n);
   cout<<"Nhap ma tran C cap "<<n<<"x"<<p<<endl;
   NhapMaTran(C,n,p);
   cout<<"Ma tran A\n";
   XuatMaTran(A,m,n);
   cout<<"\nMa tran B\n";
   XuatMaTran(B,m,n);
   cout<<"\nMa tran C\n";
   XuatMaTran(C,n,p);
   cout<<"\nMa tran D = A+B\n";
   CongMaTran(A,B,D,m,n);
   XuatMaTran(D,m,n);
   cout<<"\nMa tran D = A.C\n";
   NhanMaTran(A,C,D,m,n,p);
   XuatMaTran(D,n,p);
   getch();
}
Tag: Ma trận, mảng 2 chiều, mảng hai chiều, phép cộng, phép nhân, C, C++
More about