Announcement

Collapse
No announcement yet.

Chương trình em viết bị lỗi gì mà kết quả cứ ra x=-inf ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Ansi C] Chương trình em viết bị lỗi gì mà kết quả cứ ra x=-inf ?

    Em đang viết 1 chương trình nhỏ để giải phương trình bậc n. Em làm trường hợp riêng bậc 1 trước nhưng chạy thử thì kết quả cứ x=-inf ? Em mới học C nên không biết lỗi ở đâu. Mong các tiền bối giảng giải giúp

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    
    
    main(){
    	int deg;
    	
    	
    	// In ra loi chao
    	for(int i=0;i<=70;i++) printf("*");
    	printf("\nChao mung ban den voi chuong trinh GIAI PHUONG TRINH\n");
    	for(int i=0;i<=70;i++) printf("*");
    	
    	begin : 
    	// Nhap phuong trinh
    	printf("\nBan muon giai phuong trinh bac may' ? : ");
    	scanf("%d",&deg);
    	
    	// Kiem tra bac cua phuong trinh
    	
    	//Neu bac phuong trinh <=0 hoac >=24
    	if(deg<=0||deg>=24){
    		printf("\nXin loi, chuong trinh khong the xu ly duoc phuong trinh bac %d\n",deg);
    		goto end;
    	}
    	
    	//Neu bac phuong trinh dung'
    	else{
    	    float a[deg+1];
    		for(int i=0;i<=deg;i++){
    			printf("\n Nhap he so %c : ",65+i);
    			scanf("%f",&a[i]);
    		}
    		switch(deg){
    			case 1 : pt1(1,a); break;
    			default : break;
    		}
    	}
    	
    	
    	end :
    	printf("\nBan co muon tiep tuc khong ? (1=Yes/0=No) : ");
    	int again;
    	scanf("%d",&again);
    	switch(again){;
    		case 1 : goto begin;
    		default : goto end;
    	}
    }
    
    void pt1(int deg, float a[]){
    	if(a[0]=0){
    		if(a[1]=0) printf("\nPhuong trinh vo so nghiem");
    		else printf("\nPhuong trinh vo nghiem");
    	}
    	else printf("\nNghiem x = %f",-a[1]/a[0]);
    }

  • #2
    if(a[0]=0)
    if(a[1]=0)

    sửa lại thành
    if (a[0]==0)
    if (a[1]==0)

    mà sao chương trình bạn viết kì vậy @@ Mình phải sửa lại 1 tí mới chạy được.
    “ Đơm hoa không kết trái thì có sao?

    Là cá thì nhất định phải bơi ư?

    Ai bảo cuộc đời là phải sống,
    Ai bảo đau khổ rồi cũng sẽ qua,
    Ai bảo bài hát là phải có dạo đầu,

    Phá vỡ ranh giới để tìm kiếm điều gì đó...”

    Comment


    • #3
      Trời . Có cách giải pt bậc n lận hả bạn??? Bạn có thể chia sẻ lý thuyết về cách giải này được ko ạ. Thật sự chưa nghe bao giờ.

      Về code thì mình thấy hơi kỳ , về mặt cú pháp , bạn nên hạn chế dùng goto, nếu đã biết dùng for tại sao phải dùng goto vì goto rất khó đọc code. Còn 1 cái là phép so sánh bằng trong C là ==. Bạn sửa lại mấy chỗ này nha

      if(a[0]=0){
      if(a[1]=0) printf("\nPhuong trinh vo so nghiem");
      else printf("\nPhuong trinh vo nghiem");
      }

      Comment


      • #4
        Originally posted by 12520593 View Post


        else
        {
        float a[deg+1]; ]/* khai báo 1 biến phải là tường minh chứ , như nếu khai báo mảng a thì trong [] phải là hằng số , nếu muốn nhập tính đa thức theo (n+1) thì nên viết hàm nhập ở ngoài rồi gọi hàm thôi . Còn nếu muốn vẫn theo nhập n trong main thì khúc này xài con trỏ , cấp phát 1 bộ nhớ động cho nó rồi cho nó theo *(a+n+1) */
        for(int i=0;i<=deg;i++){
        printf("\n Nhap he so %c : ",65+i);
        scanf("%f",&a[i]);
        }
        switch(deg){
        case 1 : pt1(1,a); break; /* không gọi được hàm pt1 , không biết em đang code bằng edittor nào nhưng trong VS thì phải viết hàm con trước main đó */
        default : break;
        }
        }
        Này thì 10 kí tự :choler:

        Comment


        • #5
          đúng là mới nhìn thấy lần đầu @@!
          Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

          Comment


          • #6
            @ Thớt: if (a[0]=0) => phải sửa lại là if (a[0] == 0)
            @ Các bạn khác: cái này làm được. Không khó hay viễn tưởng lắm Các bạn suy nghĩ nhiều lên . Gợi ý: đạo hàm . Gợi ý 2: đây là đa thức bậc n chứ ko phải giải tổng quát

            @PS Thớt: bạn nên lập cái hàm giải phương trình ra riêng, hàm tìm x trong 1 vùng ra riêng. bởi vì có thể lần đầu bạn sẽ code kiểu tìm nhị phân, sau đó có thể upgrade lên bằng cách dùng thuật toán khác nhanh hơn (Ví dụ như nhị phân tốn 15 bước để tìm ra nghiệm trong khi Newton Raphson tốn 7 bước). Hồi xưa có code cái này rồi, cũng hơi mệt tí nhưng bạn cứ cố gắng
            Last edited by 09520019; 04-11-2012, 03:26.
            Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

            Comment


            • #7
              Xim cám ơn mọi người nhiều. Cho em hỏi thêm là có cách nào đóng gói các hàm mình viết thành một thư viện riêng giống cái stdio.h không ạ ? Lúc cần thì mình add vào thôi, chứ viết một đống nhìn code dài và rối quá.

              Comment

              LHQC

              Collapse
              Working...
              X