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

Đề tài: Lỗi khi biên dịch chương trình

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

    Mặc định Lỗi khi biên dịch chương trình

    Mình gặp lỗi sau khi biên dịch 1 code C++ băng TC 3.0:
    khi ấn Crt + F9 thì bị thoát ra khỏi màn hình làm việc và hiện lên 1 cửa sổ thông báo:
    Code:
    16 bit MS-DOS Subsystem
                 Turbo C++ IDE
                 The NTVDM CPU has encounterred an illegal instruction
                  CS:ffd8 IP:0021 OP:f0 60 60 f0 00 Choose 'Close' to terminate the application
    đó là lỗi kiểu gì vậy? nó bảo "câu lệnh không hợp lệ" là sao nhỉ
    MORE.........................

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    C Code:
    1. Mình gặp lỗi sau khi biên dịch 1 code C++ băng TC 3.0:
    Code đâu ?

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

    Code:
    ostream& operator<< (ostream& out, const GrandInt& g)
    {
    	if(g.sign) out << '-';
    	GrandInt *temp=new GrandInt;
    	*temp=g;
    	while(temp->Value->GetHead()!=NULL)
    	{
    		out << temp->Value->GetHead()->GetDataNode();
    		temp->Value->DeleteHeadNode();
    	}
    	return out;
    }
    istream& operator>> (istream& in, GrandInt& g)
    {
    	//thuc hien quet 1 so
    
    	char c;
    	in >> c;
    	switch (c)
    	{
    		case '-': g.sign=1;
    		case '+': in.get(c);
    	}
    	if(!isdigit(c))
    	{
    		g=GrandInt((long)0);
    		return in;
    	}
    	g.Value=new LinkedList;
    	do
    	{
    		g.Value->InsertTail(c-'0');
    		in.get(c);
    	} while (isdigit(c));          //diem ket thuc cua viec quet la 1 ki tu khac so
    
    	return in;
    }
    uh! Vẫn là bài toán với số lớn của mình thôi! Nhưng không hiểu sao, ở trong hàm main(), nếu mình dùng từ 3 lệnh cout liên tiếp trở lên thì nó bị in ra kết quả sai hoặc thậm chí bị đơ.

    vd:
    Code:
    void main()
    {             
                   GrandInt x,y;
                   cin >>x;
                   cin>>y
                   cout<<(x+y);
                   cout<<(x-y);           //đến đây thì OK
                   cout<<(x*y);          //nhưng nếu thêm dòng này thì nó lại không tính ra kết quả nữa
                                           //nếu đổi thứ tự tính phép trừ rồi đến nhân rồi đến cộng
                                          //thì chỉ 1 phép tính trù tính đúng, phép nhân ko dc tính, phép cộng bị tính sai.
    //nhưng nếu chỉ in ra 1 kết quả thì luôn đúng!
    Mình nghĩ có lẽ mình sai ở hàm >> và <<. Mình thử sửa lại như sau: (không động đến các đối tượng in và out nữa)
    Code:
    ostream& operator<< (ostream& out, const GrandInt& g)
    {
    	if(g.sign) cout << "-";
    	GrandInt *temp=new GrandInt;
    	*temp=g;
    	while(temp->Value->GetHead()!=NULL)
    	{
    		cout << temp->Value->GetHead()->GetDataNode();
    		temp->Value->DeleteHeadNode();
    	}
    }
    istream& operator>> (istream& in, GrandInt& g)
    {
    	//thuc hien quet 1 so
    
    	char c;
    	cin>>c;
    	switch (c)
    	{
    		case '-': g.sign=1;
    		case '+': cin.get(c);
    	}
    	if(!isdigit(c))
    	{
    		g=GrandInt((long)0);
    		return in;
    	}
    	g.Value=new LinkedList;
    	do
    	{
    		g.Value->InsertTail(c-'0');
    		cin.get(c);
    	} while (isdigit(c));          //diem ket thuc cua viec quet la 1 ki tu khac so
    
    	
    }
    thì nó báo lỗi:
    Code:
    16 bit MS-DOS Subsystem
                 Turbo C++ IDE
                 The NTVDM CPU has encounterred an illegal instruction
                  CS:ffd8 IP:0021 OP:f0 60 60 f0 00 Choose 'Close' to terminate the application
    Đã được chỉnh sửa lần cuối bởi punkrock : 05-04-2008 lúc 09:01 AM.
    MORE.........................

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Post hết code lên thử đi nhìn kiểu này thì tui mù T_T. Lỗi này tui đoán chắc con trỏ nào đó ra khỏi vùng, trỏ bậy.
    - Bài này thì dạo này do bận quá, nên chưa coi lại được, có nhờ cả ht, iamtvn, comeonbay và kidkid rùi. Chắc vài bữa sẽ viết lại hết cho bài này.
    Đã được chỉnh sửa lần cuối bởi rox_rook : 07-04-2008 lúc 06:42 AM.

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

  1. Biên dịch bằng C-free gặp lỗi không thể biên dịch được?
    Gửi bởi themanhbk trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 28
    Bài viết cuối: 06-10-2015, 05:45 PM
  2. Trả lời: 0
    Bài viết cuối: 23-04-2013, 09:38 AM
  3. Khách sạn Điện Biên Phủ 5 sao - Đặt phòng khách sạn Điện Biên Phủ
    Gửi bởi nguyenduya trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 30-08-2012, 01:58 PM
  4. Kỹ thuật C++ từ trình biên dịch Borland C++ sang trình biên dịch Dev-C++ bị lỗi
    Gửi bởi 0baohbotay1 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: 11-08-2012, 11:14 PM
  5. [bada] thư viện static lib do gcc biên dịch ra trong app được biên dịch g++
    Gửi bởi Iphone4 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 10-08-2011, 04:53 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