Bài toán in ra tam giác vuông cân?

Em mới học lập trình C nên không hiểu lắm. Cho em hỏi ngu tí là 2 dòng code dưới đây có thuật toán giống nhau nhưng sao kết quả in ra màn hình lại khác nhau vậy? Dòng code dưới (em search trên mang) thì in ra tam giác vuông cân rất đẹp, còn đoạn code trên (do em tự viết) cũng in ra tam giác nhưng nó lại bị méo.

Đoạn code tự viết:

#include<stdio.h>
int main(void){
	int n,i,j;
	printf("Bai toan tam giac vuong can:\n");
	printf("Hay nhap mot gia tri bat ky: ");
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			if(j<=i) printf("* ");
			else printf("\n");

}

Kết quả in ra:
image

Đoạn code search trên mạng:

#include<stdio.h>
int main(void){
	int n,i,j;
	scanf("%d",&n); //nhap n=5
	for(i=1;i<=n;i++){
		for(j=1;j<=i;j++){
			printf("* ");
		}
		printf("\n");
	}
}

Kết quả in ra:

5 //Nhap n=5
*
* *
* * *
* * * *
* * * * *

Tại sao lại là else?

2 Likes

Cùng ý tưởng thôi. Do sau khi in hết số sao thì lại thay bằng xuống dòng :smiley: vì vậy xuống dòng không chuẩn. Code 2 mới đúng.

2 Likes

2 bài toán khác nhau mà?

một cái chạy theo n và 1 cái chạy theo i

Quả là thế. Cám ơn anh nhiều. Vậy cơ bản ở đây là do dùng xuống dòng “\n” không chuẩn và và dùng thừa hàm if.

Em dùng else ở đây là để sau khi nó in hết dấu sao thỏa mãn điều kiện thì tự động xuống dòng thôi ạ.

1 Like

Bài toán giống nhau nhưng cơ bản là code của em viết thừa và dùng hàm if không chuẩn nên mới gây ra hiện tượng trên thôi.
Edit: Problem solved

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