01/10/2018, 17:31
Lỗi hàm nhập xuất và vòng lặp do{ }while( );
Em chào các anh chị. cho em hỏi 2 vấn đề ạ:
- Khi em sử dụng hàm nhập để nhạp n và a[ ] tại sao hàm xuất của em trong code bên dưới không lấy được giá trị n( do vậy nên nó không xuất ra màn hình được ạ). Nhưng khi em cho nhập riêng n trong hàm main thì không bị lỗi thế ạ.
- Sao điều kiện của code em trong vòng lặp do{ }while(); lại bị sai ạ. khi em nhập giá trị lần lượt là -3 và 300 thì chạy được( nó bắt được lỗi ạ) mà nhập giá trị 3 mà vẫn vị sai cùng điều kiện thế em dùng
if( ) thì lại chạy ổn ạ.
Em cảm ơn ạ.
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<cstring>
#define max 100
using namespace std;
void nhapMang(int a[],int n){
cout<<" nhap n: ";
lap:
cin>>n;
if( 100<n || n<=0){
cout<<" nhap n sai. nhap lai: ";
goto lap;
}
// do{
// cout<<" nhap n sai. nhap lai: ";
// goto lap;
// }while(100<n || n<=0);
for(int i=0;i<n;i++){
cin>>a[i];
}
}
void xuatMang(int a[],int n){
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
int a[max],n,b[max],m;
nhapMang(a,n);
xuatMang(a,n);
}
Bài liên quan
Tham số truyền vào ham(int &a) và ham(int *a) khác nhau thế nào
Mình xin trả lời hai ý của bạn :
Khi bạn cần nhập số trong hàm thì bạn nên dùng tham chiếu, hoặc con trỏ
vì khi bạn muốn thay đổi giá trị của một biến truyền vào hằng mà không truyền con trỏ hay đại loại thế mà chỉ truyền vào hàm cái giá trị của biến thôi thì
vòng lặp do - while thì nó sẽ thực hiện các lệnh trong ngoặc
do { }
trước rồi mới kiểm tra điều kiện xem có cần lặp tiếp hay không (đúng hay sai)nếu bạn dùng cái
goto
rồi thì không cần dùng vòng lặp đâu, dùng if thôi.nếu dùng vòng lặp thì không cần dùng cái goto.
Mình cảm ơn cậu nhiều. m bắt đầu nghĩ là nó kiểm tra trước thì mới cho lặp do{ }. nên bị sai. mình đã sửa được rồi.