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

Đề tài: Chương trình C của mình sai chỗ nào ?

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

    Unhappy Chương trình C của mình sai chỗ nào ?

    Mình mới tập tểnh về C, đang viết ct giải pt bậc 2, nhưng khi mình compile (trong Linux) thì báo lỗi, các bạn xem giúp xem mình sai chỗ nào nha

    Đây là code ct của mình :

    Code:
    #include<stdio.h>
    #include<math.h>
    
    main()
    {
    float soa,sob,soc,x1,x2,delta;
    
    printf("Nhap vao so a : ");
    scanf("%f",&soa);
    
    printf("\nNhap vao so b : ");
    scanf("%f",&sob);
    
    printf("\nNhap vao so c : ");
    scanf("%f",&soc);
    
    delta=(sob*sob)-(4*soa*soc);
    
    if(delta < 0)
    printf("Phuong trinh vo nghiem \n");
    
    else
    
    if(delta == 0)
    x1=x2=(-sob)/(2*soa);
    printf("Phuong trinh co nghiem kep x1 = x2 = %f", x1);
    
    else
    {
    x1=(-sob+sqrt(delta))/(2*soa);
    x2=(-sob-sqrt(delta))/(2*soa);
    
    printf("Phuong trinh co 2 nghiem phan biet \n");
    printf("gia tri cua x1 la : %f",x1);
    printf("gia tri cua x1 la : %f",x2);
    }
    }
    Và khi mình compile trong linux bằng gcc thì nó báo lỗi sau :

    [root@linux ~]# gcc -lm -o cong cong.c
    cong.c: In function `main':
    cong.c:28: error: syntax error before "else"
    cong.c: At top level:
    cong.c:37: error: syntax error before '}' token
    Ai biết thì giúp mình nha
    Thanx

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Chương trình của bạn thực sự sai và thiếu rất cơ bản. Dr chỉ làm cho chương trình của bạn chạy được mà thôi
    Code:
    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
    float soa,sob,soc,x1,x2,delta;
    
    printf("Nhap vao so a : ");
    scanf("%f",&soa);
    
    printf("\nNhap vao so b : ");
    scanf("%f",&sob);
    
    printf("\nNhap vao so c : ");
    scanf("%f",&soc);
    
    delta=(sob*sob)-(4*soa*soc);
    
    if(delta < 0)
    	{
    		printf("Phuong trinh vo nghiem \n");
    	}else if(delta == 0)
    		{
    			x1=x2=(-sob)/(2*soa);
    			printf("Phuong trinh co nghiem kep x1 = x2 = %f", x1);
    		}else
    			{
    				x1=(-sob+sqrt(delta))/(2*soa);
    				x2=(-sob-sqrt(delta))/(2*soa);
    				printf("Phuong trinh co 2 nghiem phan biet \n");
    				printf("gia tri cua x1 la : %f",x1);
    				printf("gia tri cua x1 la : %f",x2);
    			}
    		return 0;
    }
    Thân!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    if(delta < 0)
    printf("Phuong trinh vo nghiem \n");

    else

    if(delta == 0)
    x1=x2=(-sob)/(2*soa);
    printf("Phuong trinh co nghiem kep x1 = x2 = %f", x1);

    else
    Khối lệnh phải đặt trong cặp { }

    Nó thông báo lỗi như thế
    cong.c:28: error: syntax error before "else"
    cong.c: At top level:
    cong.c:37: error: syntax error before '}' token
    thì chịu khó đọc xem cái lỗi là gì đã

    syntax error là sai cú pháp ; before else tức là trước cái else
    at top level tức là cái else tương ứng với cặp if else to nhất
    before '}' token : tức là nó ở vị trí trước khi kết thúc cặp dấu { } to nhất.

    Nếu mà hỏi về vấn đề linux thì sang box C/C++ trên Linux nhé.
    None!

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