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

Đề tài: Lập trình C# | Class trong lập trình C#, cách xử lý lỗi?

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    Hà Nôi
    Bài viết
    10

    Unhappy Lập trình C# | Class trong lập trình C#, cách xử lý lỗi?

    Visual C# Code:
    1. using System;
    2.  
    3. class thamsopt
    4. {
    5.     double a, b, c, x, x1, x2, del;
    6.     public void thamso(double a1, double b1, double c1)
    7.     {
    8.         a = a1;
    9.         b = b1;
    10.         c = c1;
    11.     }
    12.     public double giaipt()
    13.     {
    14.         if (a==0)
    15.         {
    16.             x=-c/b;
    17.             Console.WriteLine("Phuong trinh co mot nghiem duy nhat :");
    18.             Console.WriteLine("x = {0}",x);
    19.         }
    20.         else
    21.         {
    22.             del=b*b-4*a*c;
    23.             if (del==0)
    24.             {
    25.                 x=-b/(2*a);
    26.                 Console.WriteLine("Phuong trinh co nghiem kep :");
    27.                 Console.WriteLine("x1 = x2 = {0}",x);
    28.             }
    29.             else
    30.             {
    31.                 if (del<0)
    32.                 {
    33.                     Console.WriteLine("Phuong trinh vo nghiem");
    34.                 }
    35.                 else
    36.                 {
    37.                     x1=(-b-Math.Sqrt(del))/(2*a);
    38.                     x2=(-b+Math.Sqrt(del))/(2*a);
    39.                     Console.WriteLine("phuong trinh co hai nghiem phan biet");
    40.                     Console.WriteLine("Nghiem thu nhat la x1 = {0}",x1);
    41.                     Console.WriteLine("Nghiem thu hai la x2 = {0}",x2);
    42.                 }
    43.             }
    44.         }
    45.         return 0;
    46.     }
    47. }
    48. public class Class1
    49. {
    50.     public void Method(double a2,double b2,double c2)
    51.     {
    52.         Console.WriteLine("Cac tham so cua phuong trinh la : ");
    53.         Console.WriteLine("a : {0}",a2);
    54.         Console.WriteLine("b : {0}",b2);
    55.         Console.WriteLine("c : {0}",c2);
    56.     }
    57. }
    58. class MainProgram
    59. {
    60.     public static void Main()
    61.     {
    62.         double a3,b3,c3;
    63.         Console.WriteLine("Nhap vao cac tham so cua phuong trinh");
    64.         Console.WriteLine("Nhap vao a : ");
    65.         a3=double.Parse(Console.ReadLine());
    66.         Console.WriteLine("Nhap vao b : ");
    67.         b3=double.Parse(Console.ReadLine());
    68.         Console.WriteLine("Nhap vao c : ");
    69.         c3=double.Parse(Console.ReadLine());
    70.         Class1 c = new Class1();
    71.         c.Method(a3, b3, c3);
    72.         thamsopt ts=new thamsopt();
    73.         ts.thamso(a3, b3, c3);
    74.         Console.WriteLine(ts.giaipt());
    75.         Console.ReadLine();
    76.     }
    77. }

    Các đại ca co thể giúp em xem cái thăng return đc kô khi em biên dịch chạy thử thì no hiên ra số 0 ở cuối chương trình. Có cách nào để bỏ số 0 ấy đi kô ??
    Còn một vấn đề nữa em muốn hỏi có cách nào để in nghiệm ra màn hình bằng cách tạo một class riêng giống như cái class1 ở trên đc kô tức là bỏ toàn bộ phần console.writeline ở trong phần giaipt() em làm thuùi nhưng toàn bào lỗi
    Use of unassigned local variable x ...
    Thanks mọi người trước!!!!!!!!!!!!!!!!!!!!

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Trích dẫn Nguyên bản được gửi bởi blueyewhitedragon
    Các đại ca co thể giúp em xem cái thăng return đc kô khi em biên dịch chạy thử thì no hiên ra số 0 ở cuối chương trình. Có cách nào để bỏ số 0 ấy đi kô ??
    Sửa lại như sau:
    Code:
    //Console.WriteLine(ts.giaipt());
    ts.giaipt();
    Trích dẫn Nguyên bản được gửi bởi blueyewhitedragon
    Còn một vấn đề nữa em muốn hỏi có cách nào để in nghiệm ra màn hình bằng cách tạo một class riêng giống như cái class1 ở trên đc kô tức là bỏ toàn bộ phần console.writeline ở trong phần giaipt() em làm thuùi nhưng toàn bào lỗi
    Use of unassigned local variable x ...
    Thanks mọi người trước!!!!!!!!!!!!!!!!!!!!
    Được chứ

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    Hà Nôi
    Bài viết
    10

    Code:
    public double giaipt()
        {
            if (a==0)
            {
                x=-c/b;
            }
            else
            {
                del=b*b-4*a*c;
                if (del==0)
                {
                    x=-b/(2*a);
                }
                else
                {
                    if (del<0)
                    {
                        Console.WriteLine("Phuong trinh vo nghiem");
                    }
                    else
                    {
                        x1=(-b-Math.Sqrt(del))/(2*a);
                        x2=(-b+Math.Sqrt(del))/(2*a);
                    }
                }
            }
            return 0;
        }
    }
    là như thế này này bây giờ mình muốn in các nghiệm này bằng một class khác
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 16-10-2007 lúc 02:01 PM.

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Mình có vài ý đối với bài làm của bạn như sau:

    1. Về tên class: Class tên là thamsopt. Đọc vào chẳng có ý nghĩa gợi nhớ gì cả. Nếu mình chỉ đọc tên lớp mà ko đọc source thì thật sự chẳng hiểu cái class này làm gì.

    2. Các biến thành viên (members): Tại sao biến del (delta) lại có thể bỏ vào class được chứ ? Nếu cái gì bạn cũng bỏ vào class thì thật là sai lầm. Một đối tượng chỉ nên bỏ vào class khi đối tượng này có "chu trình sống" xuyên suốt quá trình sống của class.

    Mặt khác ở đây bạn nên tách các nghiệm ra thành một lớp riêng để tận dụng tính tái sử dụng sau này. Bạn thử nghĩ xem bây giờ tui ra một cái đề là: giải pt ax + b = 0 thì liệu bạn có reuse được phần nào trong code của bạn hay ko ?

    3. Đã là class thì phải xây dựng constructor, ai đời lại xây dựng một hàm "thamso" như vậy.

    4. Chương trình của bạn hoàn toàn ko thể tái sử dụng được. Bạn dùng Console.WriteLine() để xuất kết quả ra màn hình ngay khi tìm được kết quả. Bây giờ mình kêu bạn chuyển bài này sang giao diện GUI hay web thì xem như bạn phải viết lại từ đầu.

    5. Cái lớp class1 xây dựng ra hoàn toàn vô nghĩa.

    .... (Còn rất nhiều lỗi) ...

    Tóm lại, nếu bạn làm bài nào cũng như bài này thì thật sự ... con đường coding sẽ còn lắm chông gai.

    Chúc bạn học tốt.
    Keep moving forward!

    ... Retired ...

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

  1. Algorithm Chèn Class Trong Class C#?
    Gửi bởi satthuit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 08-01-2012, 12:09 PM
  2. class bên trong 1 class và cấp phát bộ nhớ
    Gửi bởi hope2907 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 03-10-2011, 04:46 PM
  3. Phân biệt CLASS - OBJECT - INSTANCE, trong đoạn code này, cái nào là intstance, object, class ?
    Gửi bởi megaboyvn trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 8
    Bài viết cuối: 04-08-2011, 03:45 PM
  4. Lỗi: error C2440: 'initializing' : cannot convert from 'class xxx *' to 'class xxx *' sửa như thế nào?
    Gửi bởi Nupakachy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 16-06-2011, 08:54 PM
  5. Cách lấy giá trị biến từ class này sang class khác trong lập trình C#
    Gửi bởi phongk20 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 13-03-2011, 05:19 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