Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Bài toán ko hiểu sao ko thể hoạt động ( Giải phương trình bậc 2)

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

    Wink Bài toán ko hiểu sao ko thể hoạt động ( Giải phương trình bậc 2)

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. int main ()
    6. {
    7.      clrscr();
    8.      float a,b,c;
    9.      float delta;
    10.      printf("\Hay nhap cac co so cho PT bac 2\n");
    11.      printf("\na= ");
    12.      scanf("%f",&a);
    13.      printf("\nb= ");
    14.      scanf("%f",&b);
    15.      printf("\nc= ");
    16.      scanf("%f",&c);
    17.      if (a!=0)
    18.      delta = b*b - 4*a*c;
    19.     { if (delta<0)
    20.       printf("PT vo nghiem\n");
    21.       else
    22.          {if (delta==0)
    23.           printf("PT co nghiem kep x=%f\n",-b/2*a);
    24.  
    25.          else
    26.         printf("PT co 2 nghiem phan biet\n");
    27.         printf("x1=%f\n",(-b - sqrt(delta))/(2*a));
    28.         printf("x2=%f\n",(-b + sqrt(delta))/(2*a));
    29.          }
    30.     }
    31.  
    32.  
    33.  
    34.   getch();
    35.  
    36.    }
    CHỉ là 1 BT đơn giản thế thôi mà ko hiểu sao boy cho chạy CT thì nó báo lỗi missing else
    và lỗi ở dấu } dưới cùng.
    boy đã kiểm tra lại đầy đủ từ đầu đến cuối nhưng ko tìm thấy lỗi sai
    Các bro đi trước rồi thì chỉ lại cho boy mới vào học lập trình C nha ^^
    thanks

    Vui lòng bỏ code vào thẻ code
    Đã được chỉnh sửa lần cuối bởi rox_rook : 20-03-2008 lúc 10:01 PM.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    4

    +, thứ 1: cho mình hỏi cái #include<math.h> có phải là hàm để tính toán không...không có cái đó vào cũng không sao mà
    +, thứ 2: mình nghĩ bạn không bi sai ở dấu ngoặc đó mà sai ở dòng thứ 4...mình nghĩ bạn nên khai báo hàm là void main(){}
    chúc bạn thành công
    Đừng nói với tôi vấn đề đó khó...nếu nó không khó nó không phải là vấn đề....‰ —» % —» ¼ —» ½ —» 1 :Cái đích của ước mơ
    .´¯).:.___.:.(¯` ly_chank_ho ´¯).:.___.:.(¯`.

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

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    void main ()
    {
    //clrscr();
    float a,b,c;
    float delta;
    printf("\Hay nhap cac co so cho PT bac 2\n");
    printf("\na= ");
    scanf("%f",&a);
    printf("\nb= ");
    scanf("%f",&b);
    printf("\nc= ");
    scanf("%f",&c);
    delta = b*b - 4*a*c;
    if (a!=0)
    {   
    	if (delta<0)
    		{
    			printf("PT vo nghiem\n");
    		}
    	else
    		{		
    			if (delta==0)
    				printf("PT co nghiem kep x=%f\n",-b/2*a);
    
    			else
    				printf("PT co 2 nghiem phan biet\n");
    				printf("x1=%f\n",(-b - sqrt(delta))/(2*a));
    				printf("x2=%f\n",(-b + sqrt(delta))/(2*a));
    		}
    }getch();
    
    }
    Đây là code của bạn đó mình chạy được mà,mình bị báo lỗi khi để clrscr() hình như do mình thiếu thư viện,bạn nên kiểm tra dữ liệu nhập vào có phải là số không. Còn bài của bạn mình chạy bình thường.

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    43

    Code đó mình post nhầm, sorry ^^
    Tuy nhiên code này chạy được nhưng lại chạy sai
    Vì sao sai?
    Các bạn thử gõ a=1,b=2,c=1 -->delta=0 đúng ko
    vậy mà nó in ra là PT co nghiem kép x=...
    x1=...
    x2=...
    chả hiểu tại sao nữa

    Còn đây là code mà boy nói là CT dịch báo sai ở phần else và dấu } cuối bài

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    main ()
    {
         clrscr();
         float a,b,c;
         float delta;
         printf("\Hay nhap cac co so cho PT bac 2\n");
         printf("\na= ");
         scanf("%f",&a);
         printf("\nb= ");
         scanf("%f",&b);
         printf("\nc= ");
         scanf("%f",&c);
         if (a!=0)
         delta = b*b - 4*a*c;
    	{ if (delta<0)
    	  printf("PT vo nghiem\n");
    	  else
    	     {if (delta==0)
    		  printf("PT co nghiem kep x=%f\n",-b/2*a);
    
    	     else
    		printf("PT co 2 nghiem phan biet\n");
    		printf("x1=%f\n",(-b - sqrt(delta))/(2*a));
    		printf("x2=%f\n",(-b + sqrt(delta))/(2*a));
    	     }
    	}
           else
    
         {
         if (a==0)
           {
    	if (b==0)
    	  printf("PT ko xac dinh");
    
    	else
    	 printf("PT co nghiem");
           }
         else ("ko");
         }
    
    
      getch();
    }
    À mà cho boy hỏi luôn là trong câu lệnh if nhất nhất là có if phải có else hay không?
    Đã được chỉnh sửa lần cuối bởi boy_popping : 20-03-2008 lúc 09:33 PM. Lý do: CODE

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Bài của bạn, sử dụng dấu "{" lung tung quá, bạn nên xem lại. Còn đây là bài mình đã sửa, chưa test thử, bạn thử test nhé:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    void main ()
    {
         clrscr();
         float a,b,c;
         float delta;
         printf("\Hay nhap cac co so cho PT bac 2\n");
         printf("\na= ");
         scanf("%f",&a);
         printf("\nb= ");
         scanf("%f",&b);
         printf("\nc= ");
         scanf("%f",&c);
         if (a!=0)
          {
          delta = b*b - 4*a*c;
          if (delta<0)
    	  printf("PT vo nghiem\n");
    	  else
    	     if (delta==0)
    		  printf("PT co nghiem kep x=%f\n",-b/2*a);
    
    	     else
    	       {
    		printf("PT co 2 nghiem phan biet\n");
    		printf("x1=%f\n",(-b - sqrt(delta))/(2*a));
    		printf("x2=%f\n",(-b + sqrt(delta))/(2*a));
    	       }
           }
    
           else
    
         {
         if (a==0)
           {
    	if (b==0)
    	  printf("PT ko xac dinh");
    
    	else
    	 printf("PT co nghiem");
           }
         else ("ko");
         }
      getch();
    }
    I'm meo hoang!!!!!

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    43

    Mặc định Bài toán ko hiểu sao ko thể hoạt động ( Giải phương trình bậc 2)

    @meohoang: mình đã test thử bài của bạn
    kết quả là ko được
    dò tìm thì thấy lí do trong float ko có số 0
    đã thử thay thế thành int a,b,c;
    thì nó lại chạy được nhưng khi cho a=0 thì nó báo kết quả PT co nghiệm kép ???
    chẳng hiểu tại sao nữa

    À mà bạn có thể cho boy biết là các dấu{} tùy tiện quá là sao luôn nha, mình muốn hoàn thiện CT hơn

  7. #7
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Đây là đoạn code của mình. Mình đã test,OK
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int main ()
    {
         float a,b,c, delta;
         printf("\nHay nhap cac he so:");
         printf("\na= ");     scanf("%f",&a);
         printf("b= ");     scanf("%f",&b);
         printf("c= ");     scanf("%f%*c",&c);
         if (a)
          {
            delta = b*b - 4*a*c;
            if (delta<0)
            	  printf("PT vo nghiem\n");
    	    else if (delta==0)
    		  printf("PT co nghiem kep x=%f\n",-b/(2*a);
    	     else
    	       {
               printf("PT co 2 nghiem phan biet\n");
    		   printf("x1= %f\n",(-b - sqrt(delta))/(2*a));
         	   printf("x2= %f\n",(-b + sqrt(delta))/(2*a));
    	       }
           }
         else	
           printf("PT khong la PT bac 2.");
      getch();
    return 0;
    }
    Khi sử dụng dấu {} bạn nên để thẳng hàng khi hai dấu { và } cùng bao 1 khối. Nếu không bạn sẽ phát ốm khi tìm kiếm trong 1 đoạn code vài trăm trang đấy.

  8. #8
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi boy_popping Xem bài viết
    @meohoang: mình đã test thử bài của bạn
    kết quả là ko được
    dò tìm thì thấy lí do trong float ko có số 0
    đã thử thay thế thành int a,b,c;
    thì nó lại chạy được nhưng khi cho a=0 thì nó báo kết quả PT co nghiệm kép ???
    chẳng hiểu tại sao nữa

    À mà bạn có thể cho boy biết là các dấu{} tùy tiện quá là sao luôn nha, mình muốn hoàn thiện CT hơn
    Sặc, tui đã test thử, thấy vẫn chạy tốt, code đó là do tui sửa lại của bạn, tui chỉ xem các dấu {} thui,ko xem thuật toán, với lại, nếu bạn cho a=0 thì làm gì còn là phương trình bậc 2 nữa!!!hix. Nếu bạn muốn tránh tình trạng nhập a=0 chương trình vẫn thực hiện thì bạn nên đặt điều kiện ở ngay phần nhập a. Bài này là bài đơn giản, bạn chỉ cần chú ý một chút thì sẽ làm được ngay.
    Còn về hàm if khi sử dụng không nhất thiết phải kem theo else đâu bạn à.
    Code của bạn quangnh89 là đúng đó, bạn cũng có thể tham khảo.
    Còn về vấn đề sử dụng dấu {} thì bạn nên xem lại, bởi vì cái cách bạn dùng dấu {} vô tội vạ quá. Khi bạn dùng dấu "{}", thì bạn nên viết luôn cả 2 dấu "{}" và sau đó đánh câu lệnh ở bên trong. Làm cách đó sẽ tránh tình trạng thừa và thiếu dấu "{}". Nếu có gì không đúng xin cứ góp ý nhé. Thân!
    Đã được chỉnh sửa lần cuối bởi meohoang8x : 23-03-2008 lúc 07:55 PM. Lý do: thêm nội dung bài viết
    I'm meo hoang!!!!!

  9. #9
    Ngày gia nhập
    10 2007
    Bài viết
    43

    Rất là thanks các bạn đã nhiệt tình góp ý
    Mấy bữa ni bận học nên ko lên diễn đàn được
    hôm nay boy xin post code của boy đã hoàn thiện lại lên đây

    @meohoang8x:boy cố ý cho a==0 để cho bài toán khó hơn, chứ nếu tránh TH a=0 mà đề bắt nhập a=0 vẫn cho kết quả thì sao .
    Sau khi thảo luận học hỏi với ông thầy thì boy đã có kết quả
    Mấy bạn xem giúp đã hoàn thiện chưa nha ^^
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    main ()
    {    clrscr();
         float a,b,c;
         float delta;
         printf("\Hay nhap cac co so cho PT bac 2\n");
         printf("\na= ");
         scanf("%f",&a);
         printf("\nb= ");
         scanf("%f",&b);
         printf("\nc= ");           
         scanf("%f",&c);
         
    	 delta=b*b-4*a*c;
    
         if(a==0)
         {
           if(b==0)
             printf("PT vo nghia");
           
           if (b!=0)
    	 printf("nghiem cua PT la x= %.2f",-c/b);
    
         }  
           
          else                                              
          {
    	if (delta<0)
               printf("\n Phuong trinh vo nghiem ");
             
    	if (delta==0)
                printf("\n Phuong trinh co nghiem kep x=%.2f",-b/(2*a));
    	    
    	if  (delta>0)
                 {
    		printf("\n Phuong trinh co hai nghiem phan biet ");
    		printf("\n x1=%.2f",(-b+sqrt(delta))/(2*a));
    		printf("\n x2=%.2f",(-b-sqrt(delta))/(2*a));
    	     }
           }
    getch();
    }

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

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    { float a , b, c, delta ;
      printf("\n giai phuong trinh bac hai Ax' + bx +c = 0 ") ;
      printf("\n nhap vao 3 he so a , b , c cua phuong trinh :" ) ;
      scanf("%f%f%f",&a,&b,&c ) ;
      delta = b*b - 4*a*c ;
      if(delta <0 )
    	{ printf(" phuong trinh vo nghiem ") ; }
    	else if ( delta ==0 )
    	{ printf(" phuong trinh co 1 nghiem duy nhat -B/(2*A)", -b/2*a) ; }
    	else
    	  { printf(" phuong trinh co 2 nghiem phan biet ");
    		 printf(" \nx1 = %f", (-b + sqrt(delta))/(2*a)) ;
    		 printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
    					}
    				getch();
    						 }
    của mình đây , mình cũng thử làm thôi , mình cũng mới học ^ ^

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

  1. Giải bài toán cái ba-lô bằng kỹ thuật quy hoạch động
    Gửi bởi wild_horse trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 06-06-2015, 05:05 PM
  2. Cách nhận diện các bài toán có thể giải bằng PP Quy hoạch động
    Gửi bởi quyhoachdong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-05-2012, 07:11 AM
  3. các pro giải bài thích giúp em hoạt động của bài này với!
    Gửi bởi ngonuong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 05-05-2010, 12:57 AM
  4. Mô phỏng hoạt động máy chủ phân giải tên miền đơn giản
    Gửi bởi network trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 22-04-2010, 04:23 PM
  5. Giải thích hoạt động của các vòng for
    Gửi bởi knownledge trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 26-04-2007, 02:23 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