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

Đề tài: Ai rành về C# xem dùm mình thuật toán sai ở đâu

  1. #1
    Ngày gia nhập
    03 2012
    Bài viết
    0

    Mặc định Ai rành về C# xem dùm mình thuật toán sai ở đâu

    Mặc định
    xem dum minh thuat toan cua minh sai cho nao voi :( C#
    đây là bên server

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    using System.IO;
    using System.Threading;

    namespace sapxep_server_
    {
    class Program
    {
    static void Main(string[] args)
    {

    IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2009);
    Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    server.Bind(iep);
    server.Listen(10);
    Socket client = server.Accept();
    byte[] data;
    NetworkStream ns = new NetworkStream(client);
    while (true)
    {
    data = new byte[1024];
    int rec = ns.Read(data, 0, data.Length);
    string s = Encoding.ASCII.GetString(data, 0, rec);
    Console.WriteLine(s);

    int n = int.Parse(s);
    byte[] a = new byte[n];
    data = Encoding.ASCII.GetBytes(s);
    int i;

    byte tpm;
    for (i = 0;i<n-1; i++)
    for (int j = i + 1; j < n; j++)
    if (a[i] >a[j])
    {
    tpm = a[i];
    a[i] = a[j];
    a[j] = tpm;
    string kq = "";
    for (i = 0; i < n; i++)
    {
    kq = kq + a[i];
    }


    kq = (" chuoi co do dai nho nhat 5");
    Console.WriteLine(kq);
    data = Encoding.ASCII.GetBytes(kq);
    ns.Write(data, 0, data.Length);
    //them
    string input = Console.ReadLine();
    data = Encoding.ASCII.GetBytes(input);
    ns.Write(data, 0, data.Length);
    if (input.ToUpper().Equals("QUIT")) break;
    }
    }
    //client.Close();
    server.Close();
    }
    }
    }


    còn đây là bên client

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    using System.IO;
    using System.Threading;


    namespace sapxep_client_
    {
    class Program
    {
    static void Main(string[] args)
    {

    IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2009);
    Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    client.Connect(iep);
    NetworkStream ns = new NetworkStream(client);
    byte[] data = new byte[1024];
    while (true)
    {
    Console.WriteLine("nhap vao chuoi bat ki");
    string input = Console.ReadLine();
    data = Encoding.ASCII.GetBytes(input);
    ns.Write(data, 0, data.Length);
    if (input.ToUpper().Equals("QUIT")) break;

    data = new byte[1024];
    int rec = ns.Read(data, 0, data.Length);
    string s = Encoding.ASCII.GetString(data, 0, rec);
    Console.WriteLine(s);
    // them
    data = new byte[1024];
    int rec1 = ns.Read(data, 0, data.Length);
    string s1 = Encoding.ASCII.GetString(data, 0, rec1);
    Console.WriteLine(s1);
    data = new byte[1024];
    s1 = s1.ToUpper();
    if (s1.Equals("QUIT")) break;
    data = Encoding.ASCII.GetBytes(s1);
    ns.Write(data, 0, data.Length);


    }
    client.Close();
    }
    }
    }



    bài sắp xếp từ tăng dần :( các bạn sửa lỗi dùm mình. mình chạy được nhưng server ko gửi kết quả sắp xếp về cho client
    Sửa/Xóa bài viết Trả lời cùng với trích dẫn Multi-Quote This Message Trả lời nhanh bài viết này

  2. #2
    Ngày gia nhập
    09 2010
    Bài viết
    276

    Nhìn code đã chẳng muốn đọc. Bạn cho code vào thẻ đi, sẽ có người xem giúp bạn đấy.

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    22

    Hì vấn đề của bạn là bạn send từ client một chuỗi
    Giả sử là : string str = "hello world";
    Khi bạn send sang server bạn nhận được nhưng lại convert nó sang mảng byte để sắp xếp ,sau đó lại cộng lại gây lỗi vị trí giữa các byte ,khi convert trở lại nó bị lỗi
    Theo mình thì khi server nhận được chuỗi thì dùng vòng lặp :
    Giả sử
    Code:
    int recv = ns.Read(buffer, 0, buffer.Length);
     string clientData = Encoding.ASCII.GetString(buffer, 0, recv);
    StringBuilder sb = new StringBuilder();
    char tmp;
    for(int i = 0;i<clientData.Length;i++)
    {
       if((int)clientData[i] > (int) clientData[i+1])
         {
            tmp  =      clientData[i];
            clientData[i] = clientData[i +1];
            clientData[i +1] = tmp;
         }
    }
    //Ghép chuỗi:
    for(int i = 0;i<clientData.Length;i++)
    { 
       sb.Append(clientData[i].toString());
    }
    //Sau đó bạn gửi lại về Client

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

  1. Giúp đỡ giải thuật dùm em với !!!
    Gửi bởi itvn trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 17-04-2013, 01:15 PM
  2. Bài tập C xem giúp dùm em cái thuật toán này
    Gửi bởi tranducduy96 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 01-07-2012, 09:03 PM
  3. Algorithm chương trình tìm đường đi sử dụng giải thuật BFS bằng C#. góp ý dùm mình?
    Gửi bởi Promance trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 24-06-2012, 05:42 PM
  4. Thuật toán Ford - Fulkerson...Code đã chạy mà khi ra kết quả thì ra số 0 . Ai biết chỉ dùm với..
    Gửi bởi ngocvientk91 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 06-10-2011, 09:26 PM
  5. Sửa dùm code: Thuật toán tô màu
    Gửi bởi minhlieng trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 05-06-2010, 04:41 PM

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