30/09/2018, 19:41

Tìm kiểu dữ liệu cho biến

Thầy giáo e ra đề bài thế này: nhập vào chương trình 1 số nguyên, nếu giá trị 1 in ra " lap vong for", nếu giá trị 0 in ra " lap vong while", nếu giá trị k phải là 1 hoặc 0 thì in ra " nhap lai". Chương trình chạy liên tục, chỉ thoát khi người dùng bầm phím “q” trên bàn phím.
E làm bài mà k biết nên khai báo biến ở kiểu gì? Ở lớp e mới học câu lệnh if, while, for.

Gió viết 21:51 ngày 30/09/2018

while(true){
char s[10];
scanf("%s",s);
if(strcmp(s,“0”)) puts(“for”);
else if(strcmp(s,“1”)) puts(“while”);
else if(strcmp(s,“q”)) break;
}

Son Hoang Kim viết 21:57 ngày 30/09/2018

Bạn ơi, mình code bằng C++ như thế này nhưng lại báo lỗi, mình sửa như thế nào vậy bạn?

  #include <iostream>
  using namespace std;
  int main(int argc, char** argv) {
  	while (true)
  	{char a[10];
  	 cin >> a;
  	 if (a=="q") 
  	 break;
  	 if (a==0)
  	 cout <<"for";
  	** else if (a==1)** 
  	 cout<< "while";
  	 else cout <<"lai";
  	}
  	
 	return 0;
  }

Lỗi thông báo là: [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive] tại chỗ mình đánh dấu trong bài code.

Phuong Ho viết 21:45 ngày 30/09/2018
#include <iostream>
 using namespace std;
 int main() {

 while (true)
{char a;
 cin >> a;
 if (a=='q')
 break;
 if ((int)a-'0'==0)
 {
 cout <<"for"<<endl;
 cout<<"nhap lai"<<endl;
 }
else if ((int)a-'0'==1)
 {
     cout<< "while"<<endl;
     cout<<"nhap lai"<<endl;
 }

 }

 }

Bạn xem thế này được ko

Son Hoang Kim viết 21:51 ngày 30/09/2018

#include <iostream>
using namespace std;
int main() {

while (true)
{char a;
cin >> a;
if (a==‘q’)
break;
if ((int)a-‘0’==0)
{
cout <<“for”<<endl;
cout<<“nhap lai”<<endl;
}
else if ((int)a-‘0’==1)
{
cout<< “while”<<endl;
cout<<“nhap lai”<<endl;
}

}

}

Bạn ơi, bài của bạn chạy rồi nhưng mình k hiểu đoạn này lắm ((int)a-‘0’==0) hay ((int)a-‘0’==1)
Sao phải khai báo lại biến a theo kiểu int và có dấu trừ ở đoạn sau?
Nếu như sau nay mình muốn code chương trình mà có cả số và kí tự thì mình nên dùng kiểu dữ liệu nào để xử lí?
Mình cảm ơn bạn

Phuong Ho viết 21:54 ngày 30/09/2018

Trong cái code C++ gốc của bạn, bạn khai báo a là dạng char

  • Nhưng ở lệnh a==“q”, bạn so sánh với double quote “q” là string.
  • Ở dưới bạn lại so sánh vs 0, và 1 là integer nên mình nghĩ nó bị lỗi là đúng rồi.

Trong code của mình, mình chèn thêm (int) a -‘0’ mục đích là chuyển đổi từ char sang integer thôi, sau đó mới thực hiện so sánh vs số 0 là integer

Bài liên quan
0