Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 3 123 CuốiCuối
Kết quả 1 đến 10 của 24
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Giúp đỡ về bài tập c++

    em năm nay mới vào đh, giờ đang tự học c++ ở nhà [IMG]images/smilies/clap_grin.gif[/IMG]
    em có làm mấy bài tập nhưng không biết đúng hay không, các bác xem giúp em với ! [IMG]images/smilies/2.gif[/IMG] ! nếu có sai sót chỗ nào chỉ em để em khắc phục a! tks các bác nhiều [IMG]images/smilies/clap_grin.gif[/IMG]


    bài 1: Viết chương trình tính tiền cước TAXI.
    Biết rằng: - KM đầu tiên là 5000đ.
    - 200m tiếp theo là 1000đ.
    - Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000đ.
    Hãy nhập số km sau đó in ra số tiền phải trả.


    BÀI EM LÀM:
    Mã:
    int km=0;
    int tien=5000;
    cout<< "nhap so km" << endl;
    cin >> km;
    int m = km * 1000;
    if(m<1200){
    cout << "so tien phai tra la" << tien << endl;
    }
    if(1200<=m && m<= 30000){
    int a = m /200;
    int n = a-5;
    cout << "so tien phai tra la" << tien +1000 *n << endl;
    }
    if(m>30000){
    int b = m - 30000;
    int c = b /1000;
    cout << "so tien phai tra la " << tien +1000 *145 +3000 *c  << endl;
    }
    Bài 2:
    Nhập vào 3 số nguyên dương a, b, c. Kiểm tra xem 3 số đó có lập thành tam giác không? Nếu có hãy cho biết tam giác đó thuộc loại nào? (Cân, vuông, đều, …)



    BÀI EM LÀM:


    Mã:
    int a = 0;
    	int b = 0;
    	int c = 0;
    	cout << "nhap vao 3 canh tam giac " << endl;
    	cin >> a;
    	cin >> b;
    	cin >> c;
    	if (a > 0 && b > 0 && c > 0){
    		if (a + b > c && b + c > a && a + c > b){
    			while (a == b || a == c || b == c)
    			{
    				cout << "tam giac can" << endl;
    				break;
    			}
    			while (a == b == c){
    				cout << "tam giac deu" << endl;
    				break;
    			}
    			while (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a){
    				cout << "tam giac vuong" << endl;
    				break;
    			}
    			while (a == !b ==! c){
    				cout << "tam giac thuong" << endl;
    				break;
    
    			}
    		}
    		else{
    			cout << "khong co tam giac" << endl;
    		}
    	}
    	else{
    		cout << "khong co tam giac" << endl;
    	}


    Còn nữa nhưng em chưa làm xong hết, có gì em sẽ upl lên sau! [IMG]images/smilies/2.gif[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0
    em bị lỗi gì @@ [IMG]images/smilies/dont_know.gif[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kusoipro
    em bị lỗi gì @@ [IMG]images/smilies/dont_know.gif[/IMG]
    chỉ là kiểm xem có đúng thoi ko anh, tại em làm mà ko biet đúng hay sai [IMG]images/smilies/clap_grin.gif[/IMG]

  4. #4
    Ngày tham gia
    Feb 2014
    Bài viết
    0
    Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000đ. Ví dụ 30km đầu tiên hết 150k thì 31km là 153k, 32km là 156k, 33km là 159k hay như nào bạn. Ý đồ đầu bài có phải như này không???

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 10:46 PM - - -

    Theo mình thì đề bài trên có thể gây hiểu lầm cho người làm và giá taxi sẽ rất đắt. Còn những km từ km 30 trở đi sẽ không tính đc
    200m tiếp theo cộng 1000đ, thì từ 1km đến 2km chia thành 5 đoạn 200, vậy thì ta có: Tiền 2km đầu tiên = 5000+ (200*1000 + 200*2000 + 200*3000 + 200*4000 + 200*5000)
    Theo mình thì đầu bài nên là:
    - KM đầu tiên là 5000đ.
    - Cứ 200m tiếp theo là cộng thêm 1000đ vào tổng tiền trước đó
    - Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000đ vào tổng tiền trước đó.
    Hãy nhập số km sau đó in ra số tiền phải trả.

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 10:49 PM - - -

    Đây là bài mình làm, mọi người góp ý cho
    ---------------------------------------
    #include<iostream>
    #include<math.h>
    using namespace std;
    int main()
    {
    int S=0,t1=5000,t2,t3;
    float km;
    do
    {
    cout<<"Nhap so km = ";// m la so met
    cin>>km;
    }while(km<1);
    if(km<1.2)
    {
    cout<<"So tien phai tra la "<<t1+(km-1)*5000<<endl;

    }
    if(km>=1.2 && km <=30)
    {
    t2 = t1+(km-1)*5000;
    cout<<"So tien phai tra la "<< t2 <<endl;
    //200 = 1000
    //1000 = 5000, vay la 5000/1km
    }
    if(km>30)
    { t3 = t1+29*5000+(km-30)*3000;
    cout<<"So tien phai tra la "<< t3 <<endl;
    }
    return 0;
    }

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 11:41 PM - - -

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    em cảm ơn mấy anh a !

    em mới làm bài này: Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay không? (số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên).

    BÀI EM LÀM :
    Mã:
    int i = 1;
    	int n = 0;
    	do
    	{
    		cout << "nhap so nguyen duong n " << endl;
    		cin >> n;
    
    	} while (n<0);
    	for (i = 1; i <= n; i++){
    		if (i*i == n){
    			cout << "n la so chinh phuong" << endl;
    			break;
    		}
    		else{
    			cout << "n khong phai la so chinh phuong" << endl;
    		}
    	}
    có cách nào làm nó hiện thẳng " là số chính phương" luon dc ko ạ?


  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sao switch đc [IMG]images/smilies/biggrin.png[/IMG]

    p/s: Với lại đi dưới 1km cũng có thể xảy ra, dưới 0 mới error.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ^ Đúng ra là phải bắt đầu bằng câu:

    int x=sqrt(n);

    chứ.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái này dễ mà bạn

    Mã:
    bool    bSqrt=false;for (i = 1; i <= n; i++)if (i*i == n){    bSqrt = true;    break;}if(bSqrt)       cout << "n la so chinh phuong" << endl;else            cout << "n khong phai la so chinh phuong" << endl;

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi huudien1993
    Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000đ. Ví dụ 30km đầu tiên hết 150k thì 31km là 153k, 32km là 156k, 33km là 159k hay như nào bạn. Ý đồ đầu bài có phải như này không???

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 10:46 PM - - -

    Theo mình thì đề bài trên có thể gây hiểu lầm cho người làm và giá taxi sẽ rất đắt. Còn những km từ km 30 trở đi sẽ không tính đc
    200m tiếp theo cộng 1000đ, thì từ 1km đến 2km chia thành 5 đoạn 200, vậy thì ta có: Tiền 2km đầu tiên = 5000+ (200*1000 + 200*2000 + 200*3000 + 200*4000 + 200*5000)
    Theo mình thì đầu bài nên là:
    - KM đầu tiên là 5000đ.
    - Cứ 200m tiếp theo là cộng thêm 1000đ vào tổng tiền trước đó
    - Nếu lớn hơn 30km thì mỗi km thêm sẽ là 3000đ vào tổng tiền trước đó.
    Hãy nhập số km sau đó in ra số tiền phải trả.

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 10:49 PM - - -

    Đây là bài mình làm, mọi người góp ý cho
    ---------------------------------------
    #include<iostream>
    #include<math.h>
    using namespace std;
    int main()
    {
    int S=0,t1=5000,t2,t3;
    float km;
    do
    {
    cout<<"Nhap so km = ";// m la so met
    cin>>km;
    }while(km<1);
    if(km<1.2)
    {
    cout<<"So tien phai tra la "<<t1+(km-1)*5000<<endl;

    }
    if(km>=1.2 && km <=30)
    {
    t2 = t1+(km-1)*5000;
    cout<<"So tien phai tra la "<< t2 <<endl;
    //200 = 1000
    //1000 = 5000, vay la 5000/1km
    }
    if(km>30)
    { t3 = t1+29*5000+(km-30)*3000;
    cout<<"So tien phai tra la "<< t3 <<endl;
    }
    return 0;
    }

    - - - Nội dung đã được cập nhật ngày 25-08-2014 lúc 11:41 PM - - -

    ------------------------------------------
    Cũng có thể sử dụng switch...case cho bài này

    tks anh, để em sửa lại bài này [IMG]images/smilies/2.gif[/IMG]

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Chắc chắn là nếu đồng hồ tính khoảng cách chỉ 1.1 km thì bạn phải trả số tiền là : 5000 + 1000 = 6000 chứ không phải chỉ là 5000.
    Tương tự nếu đồng hồ chỉ 30.1 km thì số tiền bạn phải trả là : 5000 + 29*5000 + 3000 = 5000+145000+3000 = 153000 chứ không phải là 150000.
    Lắt léo ở đây là chỉ cần bước qua ranh giới 1mét thôi là bạn phải tính luôn cho nguyên khối ( bạn còn nhớ cách tính tiền điện thoại hồi xưa chứ ).
    Mình đưa ra một hướng như sau :

    Mã:
    #include<iostream>#include<math.h>using namespace std;int main(){    float   km;    int     met,block;    int     tien = 5000;    // Khởi tạo tiền phải trả ở nấc ít nhất     do    {        cout<<"Nhap so km = ";        cin>>km;    }    while(km<=0);           // Chỉ tính tiền khi Taxi có lăn bánh    if(km > 30)             // Nếu đã đi trên 30Km    {        met = (int)((km-30)*1000);        block = met/1000 + ( (met%1000) ? 1:0 );        tien += (29*5000 + block*3000);    }    else if(km > 1)         // Nếu đã đi trên 1Km tới 30KM    {        met     = (int)((km-1)*1000);        block   = met/200 + ( (met%200) ? 1:0 );        tien += block*1000;    }    cout<<"So tien phai tra la "<< tien <<endl;    return 0;}

 

 
Trang 1 của 3 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •