# GÓC SÁNG TẠO > Khu vực lập trình > C/C++ >  hỏi về do... while

## collagenadiva

mình dùng lệnh do while để nhập các số trong (a,b) mà nó không chạy ai giải thích cho mình với
do {
printf ("
 x[%d]:",i);
scanf ("%d",&x_);
i++;
} while ( i<=n && x>a && x<b);
thank trước :innocent:_

----------


## kingkonghn

Bạn sử dụng C đúng ko? Nên mình ko thể sửa giúp bạn đoạn code đó vì mình ko có học hixhix, nhưng mình có thể cho bạn ví dụ, theo mình hỉu thì do..while là thế này:
do {
// Nhap vao 1 so n>0;
} while (n<0);
Điều kiện trong while ngược lại trong do thì phải, ko nhớ rõ nữa, phần này mình học ko kĩ cho lắm.
Thân !

----------


## myphamuc93

dùng if thì vẫn chạy được nhưng mình không hiểu sao mình dùng do while có điều kiện rùi mà nó không chạy trong (a,b) được

----------


## bebannha

bà con giúp em với (_ _!)

----------


## nhatlun3030

đưa cả bài lên đi,bạn đưa có đoạn đó ai ma sửa nổi,theo mình cái đó ko co gì sai cả,chac chương trình bị out chỗ nào đó,nhưng chỗ while nên co i<n thôi vì nếu ko sẽ bị chạy dư đó

----------


## npd.fpt

> mình dùng lệnh do while để nhập các số trong (a,b) mà nó không chạy ai giải thích cho mình với
> do {
> printf ("
>  x[%d]:",i);
> scanf ("%d",&x_);
> i++;
> } while ( i<=n && x>a && x<b);
> thank trước :innocent:_


_
Bạn cho đề đi . mà theo mình thì ban sai điều kiện rồi (i<=n && x>a && x<b) như vậy thù cả 3 điề kiện phải xảy ra cùng một lúc thì nó mới thực hiện . bạn nên đọc kỹ lại đề rồi thay bằng VÀ hay HOẠC_

----------


## iposter

bạn chưa gán i với 1 giá trị nào mà bắt nó in ra rồi [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## gcat1

đề là nhập dãy số trong (a,b) thế thui

----------


## cushinthang

Mình cũng học C++ nhưng học theo cáh trình diễn cout: theo mình nếu nó hok chạy thì voin main( ) bạn có vấn đề.Còn đk thi i<n là được òy

----------


## kevin_cn08b

đây là C chứ có phải C++ đâu

----------


## goalkinh

#include<conio.h>
#include<stdio.h>
main()
{
int i,a,b;
scanf("
%d",&a);
printf("
so thu nhat la%d",a);
scanf("
%d",&b);
printf("
so thu hai la%d",b);
scanf ("%d",&i);
do {

if(i>a&&i<b)
printf ("
 %d:",i);
else
printf("hay nhap lai");

} while ( i<a ||i>b);
getch();
bai nay minh chay th­­u thay on 
neu muon nhap lien tuc thi hay dung mang la xong!

----------


## ngochan

*uhm*

topic khá lâu rồi, kô biết bạn còn cần kô.
cái đề bài của bạn tối nghĩa quá, hơi khó hiểu, tuy nhiên mình nhìn đoạn code của bạn thì mình đoán nó không chạy theo ý bạn, tức cứ khi nhập xong nó sẽ thoát luôn khỏi vong do while. Lý do là ban tăng i lên 1 và khi đó x_ là 1 giá trị default chứ không phải giá trị của bạn vừa nhập. bạn vừa nhập x[i-1]. Bạn thử sửa thành 
do {

printf ("
 x[%d]:",i);
scanf ("%d",&x);

i++;
} while ( i<=n && x[i-1]>a && x[i-1]<b);_

----------


## myphamchatluong

đây là c nhưng bạn cũng cần có câu điều kiện cho phép nhập này nên nói rõ điều kiện để cho c ko hiểu lầm ,mà tớ khuyên cậu nên học c++ đi nó cải tiến c nhiều lắm đó và thử sử dụng phép in sau khi thực hiện do...while xem sao

----------


## boylangtu

mình có ý như thế này:

#include <iostream.h>
#define MAX 100

void main()
{
int n,x,i=0;
int a[MAX];
cout<<"nhap n:";
cin>>n;
do
{
cout<<"a["<<i<<"]"<<"=";
cin>>x;
cout<<endl;
i++;
}while(i<n&&x>3&&x<10);
}
chỉ cho nhập các số lờn hơn 3,bé hơn 10,nếu nhập không thỏa sẽ không hiển thị vị trí tiếp theo trong mảng để nhập giá trị,đồng thời thoát.còn viết = c thì chỗ nào có cout thay bằng printf,cin thay bằng scanf.
bài của bạn chạy ko được là đúng rùi,bạn phải khai báo một biến mà bạn muốn nhập vào,chẳng hạn biến k.khi i<n thì in ra x_ rùi bạn nhấp k cho phẩn tử này(nghĩa là lúc này x[0]=k,tiếp theo x[1]...đến x[n-1] vì mảng bắt đầu từ x[0],bạn cũng có thể thay đổi từ x[1]...x[n] không ảnh hưởng gì cả).bạn thử đi nhé,chúc vui._

----------


## ngocquangyb

#include <iostream.h>
#define MAX 100

void main()
{
int n,x,i=0;
int a[MAX];
cout<<"nhap n:";
cin>>n;
do
{
cout<<"a["<<i<<"]=";
cin>>x;
cout<<endl;
i++;
}while(i<n&&x>3&&x<10);
}
bạn chạy thử xem thế nào,mình chưa test thử nũa,đang ngồi ở tiệm net mà.hihi.mà chắc là nó chạy đấy.
nếu viết bằng c thì thay cout,cin bằng printf,scanf.nha.ok?chúc vui.

----------


## nguyen_phuonglien

#include <iostream.h>
#define MAX 100
void main()
{

}

----------


## goldenfalcon

#include <iostream.h>
#define MAX 100
void main()
{
int n,x,i=0;
int a[MAX];
cout<<"nhap n:";
cin>>n;
do
{
cout<<"a["<<i<<"]=";
cin>>x;
cout<<endl;
i++;
}while(i<n&&x>3&&x<10);
}
bạn chạy thử nha,mình đang ở tiệm net nên chưa test.mà chắc là chạy
nếu viết =c thì thay cout,cin = printf,scanf nha.chúc bạn thành công

----------


## mathanhcong

sai là vì o? lệnh while phài là while(( i<=n) && (x_>a) && (x<b));, chu khong phải là : while ( i<=n && x>a && x<b);
khi chạy chương trình nếu gặp lỗi thì hãy đọc kĩ dòng báo lỗi, rồi theo đó mà sửa thôi 1_

----------

