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

Đề tài: [ Solved ]Biến toàn cục và biến cục bộ

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

    Thumbs up [ Solved ]Biến toàn cục và biến cục bộ

    Code:
    #include .......
    
    struct movies_t {
                        char title [50] ;
                        int year ;
                          } films [4] ;
    int n;                //mình dùng biến toàn cục
    
    void printmovie ( movie_t movie [4]) ;
    
    int main ( ){
    char buffer [50] ;
    //int n ; //bien cuc bo
    clrscr();
    for ( n=1; n<= 4 ; n++ )
                                   {
                                   cout<<"nhap tieu de phim:"
                                   cin.getline(film [ n ].title, 50) ;
                                   cout<<"nhap nam cho phim:"
                                   cin.getline ( buffer , 50);
                                   film[ n ].year =atoi (buffer);
                                   }
    cout<<"cac bo phim ban da nhap:"
    printmovie ( films );
    getch();
    }
    void printmovie ( movie_t movie [ 4 ] ){
    
    //int n;
    for (n=1; n<=4 ; n++)
    cout<<movie[ n ].title <<" ( " << movie[ n ].year <<" ) "<<endl;
    }

    -nếu dùng biến toàn cục n thi` khi mình chạy đến đoạn nhập năm cho phim thứ 4 thi nó lại ko in là năm thứ 4 mà là 1 số khá lớn vd :nhap nam cho phim thu:13109:... va` khi xuẩt giá trị da màn hình thì sai phim thứ 4
    -nếu dùng biến cục bộ thì không bị

    không ai giúp mình sửa lỗi này sao, có ai biết thì chỉ giùm mình với, mình xin cảm ơn
    Đã được chỉnh sửa lần cuối bởi AlexF : 04-11-2008 lúc 08:50 AM.

  2. #2
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    không có liên quan gì đến biến toàn cục hay biến cục bộ,đưa đầy đủ code lên đi,có thể sai code
    1 điều chú ý nữa là đừng có đặt cái tiêu đề kiểu thế này,tiêu đề phải phản ánh được nội dung code,bài viết thuộc dạng spam nhưng châm trước

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi dautomatnho Xem bài viết
    Code:
    #include .......
    Nội include thôi mà bạn cũng lười thì ai siêng giúp bạn bây giờ ?
    Cái này dùng biến toàn cục dĩ nhiên là sai rồi. Trước khi gọi hàm printmovie thì biến n đã bị vòng for trong hàm main làm cho tăng lên 4 rồi, khi chạy hàm printmovie thì n vẫn là 4. Lỗi sai thứ 2 cần phải nói ở đây đó là mảng trong c++ bắt đầu từ 0 chứ ko phải từ 1. Lỗi thứ 3 là bạn đặt tên lúc thì movie_t, lúc lại là movies_t, biến film cũng thế, lúc có s lúc không. Đã thế lại thiếu ; tùm lum chỗ. Báo lỗi biên dịch ì xèo thì làm sao mà debug.
    Code này mình đã sửa, tuy nó ko đúng với cấu trúc chuẩn của chương trình nhưng nó cũng làm đúng yêu cầu của bạn.

    C Code:
    1. #include <stdio.h>
    2. #include <iostream.h>
    3. #include <stdlib.h>
    4. #include <conio.h>
    5.  
    6. typedef struct _movies_t
    7. {
    8.     char title [50] ;
    9.     int year ;
    10. } movies_t;
    11.  
    12. movies_t films [4] ;
    13. int n;                //mình dùng bie^'n toàn cu.c
    14.  
    15. void printmovie ( movies_t movie [4]);
    16.  
    17. void main ( )
    18. {
    19.     char buffer [50] ;
    20.    
    21.     //clrscr();
    22.     for ( n=0; n<4 ; n++ )
    23.     {
    24.         cout<<"nhap tieu de phim:";
    25.         cin.getline(films [ n ].title, 50) ;
    26.         cout<<"nhap nam cho phim:";
    27.         cin.getline ( buffer , 50);
    28.         films[ n ].year =atoi (buffer);
    29.     }
    30.    
    31.     cout<<"cac bo phim ban da nhap:";
    32.     printmovie ( films );
    33.     getch();
    34. }
    35.  
    36. void printmovie ( movies_t movie [ 4 ] )
    37. {
    38.     for (int i=0; i<n ; i++)
    39.         cout<<movie[i].title <<" ( " << movie[i].year <<" ) "<<endl;
    40. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Trước khi gọi hàm printmovie thì biến n đã bị vòng for trong hàm main làm cho tăng lên 4 rồi, khi chạy hàm printmovie thì n vẫn là 4. Lỗi sai thứ 2 cần phải nói ở đây đó là mảng trong c++ bắt đầu từ 0 chứ ko phải từ 1.
    cái này tớ xin đính chính
    1) đúng là khi kết thúc for thì n=4,OK,nhưng khi vào for mới thì n lại bắt đầu chạy từ 1
    2) đúng là dữ liệu mảng trong cả C và C++ đều bắt đầu từ phần tử thứ 0,nhưng nếu for từ thứ 1,2...vẫn được
    Nội include thôi mà bạn cũng lười thì ai siêng giúp bạn bây giờ ?
    mình tán thành câu này,bạn đã chắc là cả đoạn code mà bạn đưa không sai chỗ nào không??? mà khẳng định là do biến toàn cục

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi coder_gate Xem bài viết
    cái này tớ xin đính chính
    1) đúng là khi kết thúc for thì n=4,OK,nhưng khi vào for mới thì n lại bắt đầu chạy từ 1
    2) đúng là dữ liệu mảng trong cả C và C++ đều bắt đầu từ phần tử thứ 0,nhưng nếu for từ thứ 1,2...vẫn được
    He he, vừa ăn sáng, vừa làm đồ án lại vừa sửa bài nên đôi chỗ ko nhìn kỹ
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 04-11-2008 lúc 09:09 AM.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

  1. Tại sao lại phải dùng biến con trỏ!!???
    Gửi bởi duydx trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 09-08-2013, 11:01 AM
  2. [ Solved ]Class đơn thức,đa thức.ai biết chỉ đệ cái
    Gửi bởi newcommer trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 05-11-2008, 10:32 AM
  3. [ Solved ]Có ai biết lỗi này không
    Gửi bởi minhduc89tn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 15-10-2008, 11:26 PM
  4. [ Solved ]Lỗi hàm SearchNode,mình ko biết nó bị làm sao nữa,thank
    Gửi bởi trongkhanh_89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 28-05-2008, 11:49 AM
  5. [ Solved ]Thứ tự các biến và kích thước lớp
    Gửi bởi sonhn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 21-05-2007, 04:15 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