iBookG4user
Áp phích gốc- Ngày 27 tháng 6 năm 2006
- Seattle, WA
- Ngày 20 tháng 9 năm 2009
'Viết một hàm sẽ điền vào một mảng với 25 số ngẫu nhiên từ 1 đến 10. Sau đó viết một hàm sẽ in ra mảng. Viết một số mã trong main để kiểm tra các chức năng của bạn. Đôi khi mã kiểm tra này được gọi là trình điều khiển *
Không sử dụng các biến toàn cục ở đây. Truyền mảng cho hàm thông qua danh sách tham số '
Mã hiện tại của tôi không dẫn đến bất kỳ lỗi nào trong trình gỡ lỗi, nhưng nó không xuất ra mảng. Và tôi không biết ý của anh ta bằng cách viết trình điều khiển, tôi phải kiểm tra những gì? Tất cả các bạn đã chứng tỏ là cực kỳ hữu ích trong quá khứ và tôi chắc chắn lần này bạn sẽ giúp tôi đi đúng hướng
Mã:
#include #include using namespace std; double print(double array); double produce(); int main() { double produce(); double print(); } double produce() { srand(time(0)); double array[25]; for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } return *array; } double print (int array) { cout << array << endl; }
lee1210
- Ngày 10 tháng 1 năm 2005
- Dallas, TX
- Ngày 20 tháng 9 năm 2009
Ngoài ra, và tôi chắc chắn đó là một sai lầm trung thực, tôi chắc chắn rằng giáo sư của bạn có ý giả ngẫu nhiên.
Ngoài ra, trong main, bạn đang khai báo double () s mới, không gọi sản xuất và in. Lấy double đi ở đó và chuyển vào một đối số như đã thảo luận ở trên, và thay đổi kiểu trả về của cả hai thành void.
-Đọc
gnasher729
Cấm
- Ngày 25 tháng 11 năm 2005
- Ngày 20 tháng 9 năm 2009
Và bạn sẽ viết lời gọi hàm 'production' như thế nào?
Và bên trong hàm 'chính' của bạn, bạn đã viết hàm nào trong hai hàm, một nguyên mẫu hàm hay một lệnh gọi hàm?
iBookG4user
Áp phích gốc- Ngày 27 tháng 6 năm 2006
- Seattle, WA
- Ngày 20 tháng 9 năm 2009
lee1210 đã nói: Một vài điều: Mảng của bạn nên có kiểu int [], không phải double []. Bạn cần chấp nhận một mảng int để sản xuất và in. Bạn cần khai báo một int [] trong main, chuyển nó vào để sản xuất, điền vào đó, sau đó chuyển nó để in. Các<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.
Ngoài ra, và tôi chắc chắn đó là một sai lầm trung thực, tôi chắc chắn rằng giáo sư của bạn có ý giả ngẫu nhiên.
Ngoài ra, trong main, bạn đang khai báo double () s mới, không gọi sản xuất và in. Lấy double đi ở đó và chuyển vào một đối số như đã thảo luận ở trên, và thay đổi kiểu trả về của cả hai thành void.
-Đọc
Được rồi, tôi đã thực hiện các thay đổi mà bạn đề xuất và mã trông hợp lý hơn. Mặc dù bây giờ tôi đang gặp ba lỗi trong vòng lặp for.
Mã:
#include #include using namespace std; double print(int array); double produce(int array); int main() { int array[25]; produce(*array); } double produce(int array) { srand(time(0)); for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } print(array); } double print (int array) { for(int i=0; i<25; i++) { cout << array[i] << endl; } return array; }
Tập tin đính kèm
lee1210
- Ngày 10 tháng 1 năm 2005
- Dallas, TX
- Ngày 20 tháng 9 năm 2009
Tôi nghĩ mục đích là để bạn gọi print trở lại trong main, điều này sẽ ổn thôi.
Ngoài ra, khi bạn truyền mảng để sản xuất, chỉ cần sử dụng mảng chứ không phải mảng *.
-Đọc
iBookG4user
Áp phích gốc- Ngày 27 tháng 6 năm 2006
- Seattle, WA
- Ngày 20 tháng 9 năm 2009
lee1210 đã nói: Thay đổi kiểu đối số của sản xuất thành int [] hoặc int *. Ngay bây giờ nó chỉ là int, vì vậy bạn không thể sử dụng [], v.v. Tương tự với print. Ngoài ra, bạn không cần phải trả lại bất cứ thứ gì từ sản xuất hoặc in ấn. Thay đổi kiểu trả về của họ thành void.
Tôi nghĩ mục đích là để bạn gọi print trở lại trong main, điều này sẽ ổn thôi.
Ngoài ra, khi bạn truyền mảng để sản xuất, chỉ cần sử dụng mảng chứ không phải mảng *.
-Đọc
Nó đã làm việc
Bây giờ, bạn có biết ý của anh ấy khi viết mã để kiểm tra các chức năng không? nó có ý nghĩa gì với anh ấy? Và cảm ơn rất nhiều vì sự giúp đỡ của bạn cho đến nay!
Mã:
#include #include using namespace std; double print(int *array); double produce(int *array); int main() { int array[25]; produce(array); print(array); } double produce(int *array) { srand(time(0)); for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } return *array; } double print (int *array) { for(int i=0; i<25; i++) { cout << array[i] << endl; } return *array; }
chown33
Người điều hành
Thành viên đội ngũ nhân viên- Ngày 9 tháng 8 năm 2009
- Mặt phẳng Abysmal
- Ngày 20 tháng 9 năm 2009
iBookG4user đã nói: Bây giờ, bạn có biết ý của anh ấy khi viết mã để kiểm tra các chức năng không? nó có ý nghĩa gì với anh ấy?
Đặc tả cho biết các số trong mảng phải nằm trong khoảng từ 1 đến 10. Bạn có thể viết một bài kiểm tra xác nhận điều đó.
Nó cũng cho biết các con số phải là ngẫu nhiên. Mặc dù tính ngẫu nhiên có thể khó kiểm tra hơn tưởng tượng, nhưng tính không ngẫu nhiên đơn giản có thể dễ dàng kiểm tra. Đơn giản nhất là xác nhận rằng tất cả các số không có cùng giá trị. Các thử nghiệm phức tạp hơn về tính ngẫu nhiên sử dụng các phân tích thống kê.
Một thử nghiệm khác mà bạn có thể viết là xác nhận hàm sản xuất () trả về các giá trị khác nhau mỗi khi nó được gọi. Đây là một dạng phân tích thống kê đơn giản, tức là đảm bảo rằng các lệnh gọi liên tiếp có kết quả độc lập.
Bạn cũng nên xem xét việc khởi tạo mảng với các giá trị không hợp lệ đã biết, chẳng hạn như -1 hoặc 0, trước khi gọi sản xuất (). Nếu không, một mảng cục bộ chưa được khởi tạo có thể đã chứa các giá trị không thể đoán trước, mà một bài kiểm tra có thể diễn giải là ngẫu nhiên ngay cả khi production () không làm gì cả.
Như một đặc điểm kỹ thuật, tuyên bố về công việc là hơi mơ hồ. Đối với một điều, nó không chỉ định những bài kiểm tra nó phải vượt qua. Tin tôi đi, nếu bạn phó mặc cho hầu hết các lập trình viên lựa chọn các bài kiểm tra trình độ thì đó là một sai lầm lớn. Mã chỉ có thể hoạt động trong một trường hợp, đó là trường hợp mà lập trình viên đã sử dụng để phát triển mã. Nếu điều đó có vẻ điên rồ, tôi có thể đảm bảo với bạn rằng nó đã xảy ra.
iBookG4user
Áp phích gốc- Ngày 27 tháng 6 năm 2006
- Seattle, WA
- Ngày 20 tháng 9 năm 2009
Điều này có tác dụng:
Mã:
if (print(array) 10) // driver { cout << 'Numbers are not between 1 and 10!' << endl; }
NS Sander
đến
- Ngày 24 tháng 4 năm 2008
- Ngày 21 tháng 9 năm 2009
iBookG4user cho biết: Điều đó đủ đơn giản, cảm ơn!
Điều này có tác dụng:
Hãy thử đặt một số 'không hợp lệ' vào mảng của bạn (giả sử, 11) và xem liệu hàm này có phát hiện ra điều đó không.
iBookG4user
Áp phích gốc- Ngày 27 tháng 6 năm 2006
- Seattle, WA
- Ngày 21 tháng 9 năm 2009
Sander cho biết: Hãy thử đặt một số 'không hợp lệ' vào mảng của bạn (giả sử, 11) và xem liệu hàm này có phát hiện ra điều đó không.
Tôi tạm thời đặt mảng để cho phép các số lớn hơn 10 và nó đã phát hiện ra nó, cảm ơn NS
Sander
đến
- Ngày 24 tháng 4 năm 2008
- Ngày 22 tháng 9 năm 2009
iBookG4user cho biết: Tôi tạm thời đặt mảng để cho phép các số lớn hơn 10 và nó đã phát hiện ra, cảm ơn
Ngay cả khi nó không phải là phần tử đầu tiên trong mảng ..?
Lý do tôi hỏi là vì hàm print () của bạn (ít nhất là phiên bản cuối cùng được hiển thị trong luồng này) chỉ trả về phần tử đầu tiên của mảng (được chuyển đổi thành một đôi).
Bài ViếT Phổ BiếN