Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cắt thành các nguyên tố hóa học

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    10

    Angry Cắt thành các nguyên tố hóa học

    Mình muốn viết một phương thức dùng để cắt 1 chuỗi String do người dùng nhập từ textbox thành các chuỗi là các nguyên tố hóa học. Ví dụ như người dùng nhập: NaHS thì phương thức này sẽ phân tách thành Na,H,S. Nếu nhập là Na2SO4 thì sẽ phân tách thành Na2,S,O4. Mình đã viết một phương thức song chỉ được một vài trường hợp, nếu được trường hợp này lại hỏng trường hợp khác. Mong mọi người giúp với!
    Minh IT

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    10

    Mình đã viết một đoạn như thế này, song vẫn còn những trường hợp không thể xét hết được
    Visual C# Code:
    1. private void button2_Click(object sender, EventArgs e)
    2.         {
    3.             string kq = "";
    4.             string s = "";
    5.             string s1 = "";
    6.             //int t;
    7.             if (textBox1.Text.Length > 1)
    8.             {
    9.                 int i = textBox1.Text.Length-1;
    10.                 //MessageBox.Show(""+textBox1.Text.Length);
    11.                 int j = i-1;
    12.                
    13.                 while (i >= j && j>=0)
    14.                 {
    15.                     //Na //Đ
    16.                     //HO //Đ
    17.                     //HNa //Đ
    18.                     //NaS //Đ
    19.                     //NaHS //Đ
    20.                     MessageBox.Show("i = " + i +", j = " + j);//i1 = 2,j1 = 1
    21.                                                               //i2 = 1,j2 = 0
    22.                     if (i > 0 && i!=j)
    23.                     {
    24.                         //t = j;//t1 = 1
    25.  
    26.                         s = textBox1.Text.Substring(i, 1);
    27.                         s1 = textBox1.Text.Substring(j, 1);
    28.                         if (laChuThuong(s) && laChuHoa(s1)) //kq1 = Na
    29.                         {
    30.                             MessageBox.Show("F1");
    31.                             i-=2;
    32.                             j--;
    33.                             kq += s1 + s + " , ";
    34.                             MessageBox.Show(kq);
    35.                         }
    36.                         else if (laChuHoa(s) && laChuHoa(s1))
    37.                         {
    38.                             MessageBox.Show("F2");
    39.                             i--;
    40.                             //j--;
    41.                             kq += s + " , ";
    42.                             MessageBox.Show(kq);
    43.                         }
    44.                         else if (laChuHoa(s) && laChuThuong(s1))
    45.                         {
    46.                             MessageBox.Show("F3");
    47.                             i--;
    48.                             j--;
    49.                             kq += s + " , ";
    50.                             MessageBox.Show(kq);
    51.                         }
    52.                     }
    53.                     else if(i==0 || i==j)
    54.                     {
    55.                        
    56.                         s = textBox1.Text.Substring(i, 1);
    57.                         if (laChuHoa(s))
    58.                         {
    59.                             MessageBox.Show("F4");
    60.                             kq += s + " , ";
    61.                             MessageBox.Show(kq);
    62.                             i--;
    63.                             j--;
    64.                         }
    65.                         else
    66.                         {
    67.                             j = i - 1;
    68.                             s1 = textBox1.Text.Substring(j, 1);
    69.                             if (laChuThuong(s) && laChuHoa(s1)) //kq1 = Na
    70.                             {
    71.                                 MessageBox.Show("F5");
    72.                                 i--;
    73.                                 j--;
    74.                                 kq += s1 + s + " , ";
    75.                                 MessageBox.Show(kq);
    76.                             }
    77.                         }
    78.                     }
    79.               }
    80.        }
    81. }
    Mong mọi người giúp!
    Đã được chỉnh sửa lần cuối bởi minhit87 : 21-10-2008 lúc 01:38 PM. Lý do: Sửa tag code C#
    Minh IT

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Hi minhit,

    Bạn có tính trường hợp người dùng nhập toàn chữ thường không? Ví dụ như là na thay cho Na chẳng hạn.

    Thực ra vấn đề của bạn không quá phức tạp. Bạn có thể duyệt từng ký tự của string đưa vào, nếu là số hoặc chứ thường thì bỏ qua, nếu là chữ ngay sau số thì ấn nó vào 1 chỗ mới. Ở đây Dark không có công cụ nên ko demo cho bạn được, sorry!

    Cheers!
    Is the moon rising...

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Thank bác Darkan, đây là code mình họa ý tưởng của bác :

    Visual C# Code:
    1. string[] ChemicalParse(string s)
    2. {
    3.     string[] s_ar = null;
    4.     int n = 0;
    5.  
    6.     foreach (char ch in s)
    7.     {
    8.         if (ch >= 'A' && ch <= 'Z')
    9.             n++;
    10.     }
    11.  
    12.     s_ar = new string[n];
    13.     n = 0;
    14.    
    15.     bool flag = false;
    16.     string tmp = "";
    17.  
    18.     foreach (char ch in s)
    19.     {
    20.         if (ch >= 'A' && ch <= 'Z' && flag)
    21.         {
    22.             s_ar[n++] = tmp;
    23.             tmp = "" + ch;
    24.         }
    25.         else
    26.         {
    27.             tmp += ch;
    28.         }
    29.  
    30.         flag = true;
    31.     }
    32.  
    33.     s_ar[n] = tmp;
    34.  
    35.     return s_ar;
    36. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. Dịch vụ gửi hàng hóa đi Australia, gửi hàng hóa đi France, gửi hàng hóa đi Germany, gửi hàng hóa đi Janpan giá rẻ.
    Gửi bởi sales5ttico trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 30-07-2014, 02:51 PM
  2. Mảng trên C Mã hóa rút gọn mảng số nguyên tăng dần
    Gửi bởi itviapro trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 03-07-2013, 04:26 PM
  3. Lập trình C++ Xây dựng class đa thức thành công nhưng đa năng hóa toán tử + thì bị lỗi không tìm ra nguyên nhân
    Gửi bởi contraime trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 20-04-2013, 07:29 PM
  4. Công nghệ nhận dạng chữ viết, số hóa thông tin, giải pháp số hóa cho các doanh nghiệp
    Gửi bởi thepbac trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 23-04-2010, 09:51 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn