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

Đề tài: Runtime error ! Làm sao biết được giá trị của biến?

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

    Mặc định Runtime error ! Làm sao biết được giá trị của biến?

    Cho mình hỏi xài Visual studio 2008, làm sao để mình quan sát được variable lúc runtime error nhỉ ? Đôi khi mình thấy nó hiện ra nhưng có lúc lại không hiện, làm debug khó khăn quá hic hic ! Bạn nào giúp mình với T_T! Thanks !

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

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Cho mình hỏi xài Visual studio 2008, làm sao để mình quan sát được variable lúc runtime error nhỉ ? Đôi khi mình thấy nó hiện ra nhưng có lúc lại không hiện, làm debug khó khăn quá hic hic ! Bạn nào giúp mình với T_T! Thanks !
    throw exception là ra vị trí error runtime đó
    None!

  3. #3
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Runtime error gì, có biết bao nhiêu runtime error. Khi runtime error xảy ra, stack đã unwind, nên các local variable không còn watch được, nhưng global variable vẫn còn.
    Dùng các cửa sổ Watch, Local để xem.

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

    Thanks Xcross và anh TQN, nó báo là string is out of range anh à. Vì nhiều khi em thấy nó có báo vùng nhớ nào bị out of range. nhưng có khi nó chẵn có báo gì hết trơn, nó chỉ có 3 option là abort, retry với ignore thôi à :(. Thôi để em mò tiếp vậy T_T.

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Em post code của em lên, nói chung chung vậy không thể giúp được. String out of range là một exception của STL phải không ?

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

    Mặc định Runtime error ! Làm sao biết được giá trị của biến?

    Dạ code em đây, chẳng là em muốn áp dụng cái Negative subscript cho array 2 chiều để làm 1 bài giải thuật tìm ra cách biến đổi ít nhất của 2 chuỗi. Em có add thêm vùng nhớ cho string1 và string2 nếu 2 string không bằng nhau rồi nhưng runtime nó lại bảo có out of range, thôi em phiền anh chuyến này vậy T_T.
    PHP Code:
    #include <iostream>
    #include <vector>
    #include <cmath>
    #include <string>



    class _Err
    {
        
    void report()
        {
            
    std::cerr << "Range error :";
        }
    };

    template <class T>
    class 
    arr2D
    {
        
    int sRoweRowsColeCol;
        
    std::vector<Tdata;
        public:
            
    arr2D(int sRowint eRowint sColint eCol)
            :
    sRow(sRow), eRow(eRow), sCol(sCol), eCol(eCol),
            
    data(abs((eRow sRow 1)*(eCol sCol 1)))
        {}
        
    int size() const{
            return 
    abs((eRow sRow 1)*(eCol sCol 1));
        }
                
        
    &element(int xint y){
            return 
    data[x*abs(eCol sCol) + y];
        }
            
        class 
    Row
        
    {
            
    arr2D &im;
            
    int row;
        public :
            
    Row(arr2D &imint row):im(im), row(row){}
            
    &operator[](int offset){
            if(
    offset im.sCol || offset >= im.eCol){
            throw 
    _Err();
          }
          else{
            
    unsigned pos 0;
            for(
    int x im.sColim.eCol; ++x){
              ++
    pos;
              if(
    offset == xoffset pos;
            }
            return 
    im.element(rowoffset);
          }
        }
      };
      
    Row operator[](int offset){
      if(
    offset sRow || offset >= eRow){
        throw 
    _Err();
      }
      else{
        
    unsigned pos 0;
        for(
    int x sRoweRow; ++x){
          ++
    pos;
          if(
    offset == xoffset pos;
        }
      }
      return 
    Row(*thisoffset);
      }
    };

    int Min_of_three(int _1stint _2ndint _3rd)
    {
        
    int tmp;
        if(
    _1st _2nd)
            
    tmp _1st;
        else
            
    tmp _2nd;
        if(
    _3rd tmp)
            
    tmp _3rd;
      
        return 
    tmp;
    }
    void DynamicProgrammingProcess(arr2D<int> &arrstd::string str1std::string str2)
    {
        for(
    int x 0str1.length(); ++x)
            
    arr[x][-1] = 1000;
        for(
    int y 0str2.length(); ++y)
            
    arr[-1][y] = 1000;
      
       
        for(
    int x 0str2.length(); ++x)
            
    arr[0][x] = x;
        for(
    int y 1str1.length(); ++y)
            
    arr[y][0] = y;
      
      
        for(
    int x 0str1.length(); ++x)
        {
            for(
    int y 0str2.length(); y++)
            {
                if(
    str1[x] == str2[y])
                    
    arr[1][1] = arr[x-1][y-1];
                else
                    
    arr[1][1] = Min_of_three(arr[x][y-1], arr[x-1][y-1], arr[x-1][y]) + 1;
            }
        }
    }

    void TraceResult(std::string s1std::string s2arr2D<int> &arr)
    {
        
    int is s1.length();
        
    int os s2.length();

        
    std::cout << "\n[The number of transformation required] :\n";
        
    std::cout << arr[is][os] << "\n\n";

        while((
    is != 0) || (os != 0))
        {
            if(
    s1[is] == s2[os])
            {
                
    is--;
                
    os--;
            }
            else
            {
                
    std::cout << "X : \n" << s1;
                
    std::cout << "->";
          
                if(
    arr[is][os] == arr[is][os-1] + 1)
                {
                    
    std::cout << "Insert : " << is << " to " << s2[os] << "\n";
                    
    s1.insert(os 11s2[os]);
                    
    os--;
                }
                
    //Replace
                
    else
                {
                    if(
    arr[is][os] == arr[is-1][os-1])
                    {
                        
    std::cout << "Replace : " << is << " to " << s2[os] << "\n";
                        
    s1[is] = s2[os];
                        
    is--;os--;
                    }
                    else
                    {
                        
    std::cout << "Delete : " << is << "\n";
                        
    s1.erase(is);
                        
    std::cout << s1 << "\n";
                        
    is--;
                    }
                }
            }
        }
    }
        

    int main()
    {
        const 
    int max 100;
        
    arr2D<intM(-1max, -1max);
        for(
    int x = -1maxx++)
        {
            for(
    int y = -1maxy++){
                
    M[x][y] = 0;
            }
        }
      
        
    std::string str1str2;
        
    std::cout << "Please Input 2 string :\n";
        
    std::cin >> str1;
        
    std::cin >> str2;
        
        
    DynamicProgrammingProcess(Mstr1str2);
        
    TraceResult(str1str2M);
        return 
    0;

    Đã được chỉnh sửa lần cuối bởi rox_rook : 29-01-2008 lúc 08:01 AM.

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

  1. lỗi runtime error abnormal program terminate sửa như thế nào??
    Gửi bởi tieulamtu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 03-11-2011, 01:34 PM
  2. Thuộc tính khóa ngoài( tham chiếu) biến mất khi biến đổi từ file XML sang DataTable
    Gửi bởi itmanhieu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 17-08-2011, 08:02 PM
  3. Hàm error checking sử dụng biến char và array?
    Gửi bởi Se7Olutionyg trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 20-06-2010, 01:22 PM
  4. Nhận biết Keyboard trong Runtime với lập trình C#
    Gửi bởi ..SiêuGà.NET::?? trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 19-02-2008, 12:00 PM
  5. [Dialogue]About Runtime error
    Gửi bởi neverland87 trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 1
    Bài viết cuối: 21-04-2007, 12:02 AM

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