Mong được giúp về vòng lặp lồng nhau

Để bài là vẽ tam giác:
Capture

Khi mình dùng vòng lặp for như sau thì vẽ được:

    #include <iostream>
    using namespace std;

    int main(int argc, char** argv) {
    	int h;
    	cout<<"Nhap chieu cao h: ";
    	cin>>h;
    	for(int i=0;i<h;i++)
    	{
    		for(int j=0;j<h;j++)
    		{
    			if(j==0||i==h-1||i==j)
    			{
    				cout<<"*";
    			}else
    			{
    				cout<<" ";
    			}
    			
    		}
    		cout<<"\n";
    	}
    	return 0;
    }

Còn khi mình dùng while như thế nay thì ko vẽ được, mình dùng while sai ở chỗ nào nhỉ, ai giúp mình với, và có thể viết mẫu giúp mình đối với vòng do while dc ko, mình cảm ơn nhiều:

    #include<iostream>
    using namespace std;
    int main()
    {
    	int h,i=0,j=0;
    	cout<<"Nhap chieu cao h";
    	cin>>h;
    	while(i<h)
    	{
    		while(j<h)
    		{
    			if(j==0||i==h-1||i==j)
    			{
    				cout<<"*";
    			}else
    			{
    				cout<<" ";
    			}
    		j=j+1;		
    		}
    	cout<<"\n";
    	i=i+1;
    		
    	}	
    }
1 Like

Nếu i vừa tăng lên 1, 2, 3 thì j ở dòng này bằng bn bạn?
Bạn mong muốn j = bao nhiêu, và code bạn thì j = bao nhiêu?
=> Bạn có thể fix rồi chứ?

4 Likes

Mình vẫn chưa hiểu đỗ trần à @@ mình muốn j nó chạy từ 0 đến h-1 để duyệt các điều kiện @@

Đúng rồi. Và giờ
Bạn thử in ra giá trị của j trước khi vào vòng while xem.

3 Likes

Bạn fix đc chưa? Xl, tôi muốn bạn tự sửa sẽ tốt hơn

2 Likes

Mình fix được rồi hihi, trc khi vào while mình sẽ gán cho j=0. Cách như thế có ổn ko nhỉ, mk thấy chạy được nhưng liệu còn cách viết nào hay hơn ko nhỉ. Cảm ơn Đỗ Trần nhiều nhé <3

Mình không biết bạn sửa được lỗi chưa nhưng góp ý với bạn vẽ tam giác nên vẽ dấu * và 1 dấu cách, khoảng trống để 2 dấu cách.

4 Likes

Mình vừa thử lain thấy tam giác nhìn hợp lí hơn r, cảm ơn bạn nha

1 Like
Cách của tôi
cout<<"*";
cout<<"* *";
cout<<"*   *";
cout<<"*     *";
cout<<"* * * * *";
À, tôi không chắc nó có hay hơn không.

Bình thường mấy bài này thầy cho để các bạn hiểu hơn về sự hoạt động của vòng lặp thui.
Hàm do while bạn làm được chưa?
Cũng tương tự như hàm while nhưng khác là thực thi lệnh rồi mới xét điều kiện (Nên lệnh bao giờ cũng được thực thi ít nhất 1 lần)

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?