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
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.
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
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:
#include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <conio.h> typedef struct _movies_t { char title [50] ; int year ; } movies_t; movies_t films [4] ; int n; //mình dùng bie^'n toàn cu.c void printmovie ( movies_t movie [4]); void main ( ) { char buffer [50] ; //clrscr(); for ( n=0; n<4 ; n++ ) { cout<<"nhap tieu de phim:"; cin.getline(films [ n ].title, 50) ; cout<<"nhap nam cho phim:"; cin.getline ( buffer , 50); } cout<<"cac bo phim ban da nhap:"; printmovie ( films ); getch(); } void printmovie ( movies_t movie [ 4 ] ) { for (int i=0; i<n ; i++) cout<<movie[i].title <<" ( " << movie[i].year <<" ) "<<endl; }
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ái này tớ xin đính chínhTrướ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.
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
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ụcNội include thôi mà bạn cũng lười thì ai siêng giúp bạn bây giờ ?
Đã đượ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.