Em muốn hỏi về vòng lặp while của bài này ạ

bài này là phương trình bậc 1 em muốn hỏi dòng 4 hoặc 5 của ( printf…vui long nhập lại )
mấy anh chị phẩu thuật cho em được không của vòng lặp while này nè em hơi rối là tại sao có 2 cái while, cảm ơn m.n nhiều

<#include<stdio.h>
int main() {
float a,b;
printf("Nhap gia tri a: "); while(scanf("%f",&a) != 1){while(getchar() != '\n') {} printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");}
printf("Nhap gia tri b: "); while(scanf("%f",&b) != 1){while(getchar() != '\n') {} printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");}
if (a==0) {
if (b==0) {
printf("phuong trinh vo so nghiem");
}
else {
printf("phuong trinh vo nghiem");
}
}
if (a!=0) {
if (b!=0) {
printf("phuong trinh co 1 nghiem duy nhat %f",-b/a);
}
else {
printf("phuong trinh co 1 nghiem %.2f");
}
}
return 0;
}>

Đặt đoạn code trong <đoạn code> xem cho dễ bạn

printf(“Nhap gia tri a: “);
while(scanf(”%f”,&a) != 1){while(getchar() != ‘\n’) {}
printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");}

vậy hả anh, em hok hiểu @@!!

ghi trước đoạn code 3 dấu ` với đằng sau đoạn code thêm 3 dấu nữa nhen bạn, coi cho dễ xuống dòng nữa nhìn rồi quá =))

Format lại code bằng cách thêm 3 dấu ` vào đầu và cuối code:

// code

Hình như đây không phải là code bạn viết?

1 Like

vâng k phải ạ nên em muốn hỏi mọi người giải phẩu dòng 4 hoạt động ra sao ^^

   printf("Nhap gia tri a: "); 
   while(scanf("%f",&a) != 1)
  { 
   while(getchar() != '\n') {} 
   printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");
  }

dòng nào bạn ghi vầy cho dễ =)) có màu cho đẹp

1 Like

Thằng code vô duyên thế, nếu đã nhập được số thực thì cần quái gì nhập kí tự nữa :expressionless:
Thằng đó muốn người dùng nhập thông tin, nhưng muốn kiểm tra xem người dùng có nhập số thực không hay là nhập kí tự lạ. Khổ nỗi thằng đó code rất ngu, mà code cũng xấu y như cái bản mặt nó vậy =)) code vừa rút dòng, lại vừa không indent, lại vừa viết vớ va vớ vẩn :v

Cách tốt hơn để giải quyết yêu cầu này là

while (scanf("%s", &tmp) == 1) { // vòng lặp "gần như" vô tận để xem người dùng có nhập cái gì không,
// đại ý là nhập thôi, đừng quan tâm quá
    if (tmp chuyển được thành số thực) {
        // xử lí bài toán: ơn giời biến a (b) đây rồi
        break; // nhập đúng số thực rồi, break thôi
    } else {
        printf("nhập sai cmnr\n");
    }
}
1 Like

đâu cần nói ác vậy, gê qá

Việc đọc và debug code xấu (và ngu học) của thằng khác khiến coder muốn chửi thề :v (#$&()#^(#~$#@($!@ :anger:

1 Like

cảm ơn anh nhé …

ồ mình cảm ơn mà, mình cũng k hiểu đoạn code while đó ,mình mới học đến if rồi giải bài nên k biết người đó sai như vậy ^^.

anh ơi về cái hàm này, em muốn biết nó hoạt động ra sao, với lại anh cho em hỏi là nó bị cái code ngu là thế nào vậy ạ. em chưa biết gì mong anh giúp đỡ

printf(“Nhap gia tri a: “); while(scanf(”%f”,&a) != 1){while(getchar() != ‘\n’) {} printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");}

Bạn vào học lập trình C cơ bản của anh Lê Trần Đạt trên youtube ấy ở trong mấy cái clip có ấy. bạn học xong là hiểu thôi phân này cơ bản tại viết code 1 dòng như vậy nên khó đọc ấy. =))

1 Like

Mình không biết làm gì, thôi rảnh háng copy paste lại code để spam vậy:

#include<stdio.h>
int main()
{
	float a, b;
	printf("Nhap gia tri a: ");
	while (scanf("%f", &a) != 1)
	{
		while (getchar() != '\n');
		printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");
	}
	printf("Nhap gia tri b: ");
	while (scanf("%f", &b) != 1)
	{
		while (getchar() != '\n');
		printf("Gia tri nhan duoc khong phai la so, vui long nhap lai: ");
	}
	if (a == 0)
		if (b == 0)
			printf("phuong trinh vo so nghiem");
		else
			printf("phuong trinh vo nghiem");
	if (a != 0)
		if (b != 0)
			printf("phuong trinh co 1 nghiem duy nhat %f", -b / a);
		else
			printf("phuong trinh co 1 nghiem %.2f");
	return 0;
}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?