Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối
Kết quả 11 đến 20 của 24
  1. #11
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    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;
    cho em hỏi cái bSqrt là gì ạ?

  2. #12
    - hàm sqrt là hàm lấy căn bậc 2 của 1 số float , ví dụ sqrt(25) sẽ bằng 5. Bạn cần #include <math.h> mới gọi hàm này được. bạn ý đặt tên biến bSqrt là có ý nếu bSqrt = true tức là trong vòng for ta đã từng tìm được 1 số nguyên i sao cho i*i == n => n là số chính phương. Nếu bSqrt = flalse thì tức là chạy hết vòng for vẫn chưa tìm được một số nguyên i nào thỏa mãn i*i == n => n không phải số chính phương.

    - bạn có thể tham khảo code dưới về hàm sqrt
    Mã:
    #include<iostream>
    #include<conio.h>
    #include <stdio.h>
    #include <math.h>
    using namespace std;
    
    
    int main(){
        int n;
        cout<<"Nhap n : ";
        cin>>n;
        
        int can = sqrt(n);
        
        if(can*can == n)
            cout<<n<<" la so chinh phuong";
        else
            cout<<n<<" khong phai so chinh phuong";
       
        cin.get();
        cin.get();
        return 0;
    }
    - nhớ là câu "int can = sqrt(n);" thì biến "can" sẽ bị ép kiểu từ float về int, nên nếu kết quả lấy căn thực tế là 4,52342... thì biến "can" thực chất sẽ bằng 4 cơ [IMG]images/smilies/biggrin.png[/IMG]

  3. #13
    Nếu chỉ để kiểm tra 1 số n nhạp vào từ bàn phím thì mình nghĩ bạn dùng đoạn code như này là đc rồi
    -------------
    kt=sqrt(n);
    if(kt*kt==n)
    cout<<n<<" LA so chinh phuong"<<endl;
    else
    cout<<n<<" KHONG la so chinh phuong"<<endl;

    - - - Nội dung đã được cập nhật ngày 28-08-2014 lúc 01:18 AM - - -

    Còn nếu bạn muốn liệt kê như kiểu cái hình đen đen kia thì mình nghĩ dùng while cũng đc
    -------------------
    int i=1
    while(i<n)
    {
    kt=sqrt(i);
    if(kt*kt==i)
    cout<<i<<" LA so chinh phuong"<<endl;
    i++;
    }

    - - - Nội dung đã được cập nhật ngày 28-08-2014 lúc 01:21 AM - - -

    - - - Nội dung đã được cập nhật ngày 28-08-2014 lúc 01:23 AM - - -

    Trích dẫn Gửi bởi prog10
    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.
    mình nhầm lẫn, thank bạn nhé =D

  4. #14
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    tks mọi người ạ ! em làm đc bài đó rồi, có bài này : "Viết chương trình nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo thứ tự tăng dần của các chữ số. "

    em làm theo cách liệt kê từng trường hợp nó dài quá :ss có cách nào ngắn hơn đc không ạ?

  5. #15
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi luannguyen96
    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 ạ?

    Đính kèm 18709
    Mình làm cách này không biết có ổn không, mọi người xem giúp mình với!

    Mã:
    #include "stdafx.h"
    
    
    int _tmain(int argc, _TCHAR* argv[]) {
    
    	float test;
    	std::cin >> test;
    
    	if(sqrt(test) == long(sqrt(test)))
    		std::cout << "ok" << std::endl; //Số chính phương
    	else
    		std::cout << "not ok" << std::endl; //Không phải số chính phương
    
    	getch();
    	return 0;
    }

  6. #16
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    x=n/100; //chia lấy ra phần tử hàng trăm
    y=(n/10)%10; // chia lấy ra phần tử hàng chục
    z=n%10; //chia lấy ra phần tử hàng đơn vị
    max=x; //bắt đầu so sánh các số
    if(y>max)
    max=y;
    if(z>max)
    max=z;
    min=y;
    if(z<min)
    min=z;
    cout<<"So Theo Thu Tu Tang Dan La "<<(min*100+((x+y+z)-(max+min))*10+max)<<endl;

  7. #17
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi minhquanvn9x
    nhập n số nguyên từ bàn phím và tìm ra số lớn nhất bạn à đề nó thế.
    nó sẽ in ra màn hình thế này:
    ban can nhap bao nhieu so nguyen?
    =>ban nhap 3 so nguyen:
    so thu 1 la:1
    so thu 2 la:7
    so thu 3 la:5
    => so lon nhat la 7
    ... ý như thế bạn à có thể nhập n số nguyên.
    Khai báo mảng số nguyên rồi dùng vòng for xét bạn à

  8. #18
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi minhquanvn9x
    #include <iostream>
    using namespace std;
    void main()
    {
    int n,a,i;
    cout<<"nhap n:";

    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"nhap gia tri so thu "<<i<<":";
    cin>>a;
    }
    for(a=0;a<n;a++)
    {
    if(a>a+1)
    cout << a << endl;
    else
    cout << a+1 << endl;
    }
    system("pause");
    }
    mình làm kiểu này sao không ra được số lớn nhất nhỉ?
    #include <iostream>
    using namespace std;
    int main()
    {
    int n,a,i;// ví dụ int a[100] mới là khai báo mảng nhé
    cout<<"nhap n:";
    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"nhap gia tri so thu "<<i<<":";
    cin>>a;
    }
    //cout<<a[0];//bạn thử thêm dòng này vào sẽ báo lỗi ngay vì không in đc phần tử a[0], vì cin>>a; không phải là nhập mảng
    // cin>>a[i] mới nhập được mảng bạn nhé
    for(a=0;a<n;a++)// vi du n=4, khi đó a={0,1,2,3}, đây không phải là làm việc với mảng
    { // chỉ làm việc được với chỉ số(index) của mảng, các phần tử của mảng
    if(a>a+1)//điều kiện này luôn sai với mọi a>0 và a<n nên sẽ in ra các giá trị a+1
    cout << a << endl;
    else
    cout << a+1 << endl;
    }
    return 0;
    }

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

    Bạn xem thử code của mình và so sánh với vòng for thứ 2 của bạn nhé
    --------------------------
    #include <iostream>
    using namespace std;
    int main()
    {
    int n,a[100],i,max;// ví dụ int a[100] mới là khai báo mảng nhé
    cout<<"nhap n:";
    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"Nhap gia tri "<<"a["<<i<<"]= ";
    cin>>a[i];
    }
    max=a[0];
    for(i=0;i<n;i++)
    {
    if(a[i]>max)
    max=a[i];
    }
    cout<<"Max = "<<max<<endl;
    return 0;
    }

  9. #19
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Nếu bạn chỉ cần kiểm tra 1 số nguyên n nhập từ bàn phím thì mình nghĩ chỉ cần như này là đủ:
    x=sqrt(n);
    if(x*x!=n)
    cout<<"KHONG la so chinh phuong"<<endl;
    else
    cout<<"La so chinh phuong"<<endl;
    return 0;

    - - - Nội dung đã được cập nhật ngày 03-09-2014 lúc 12:55 PM - - -

    Vì "số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên", kiểm tra điều kiện
    x=sqrt(n);
    if(x*x!=n)
    là đủ rồi
    Dùng vòng lặp bài này phức tạp thêm

  10. #20
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mình lấy ví dụ như liệt kê số chính phương bé hơn n chẳng hạn, hoặc tính tổng các số chính phương bé hơn n, lúc này dùng vòng lặp hợp lí hơn

    - - - Nội dung đã được cập nhật ngày 03-09-2014 lúc 12:58 PM - - -

    - - - Nội dung đã được cập nhật ngày 03-09-2014 lúc 12:58 PM - - -

    Trích dẫn Gửi bởi minhquanvn9x
    cho mình ké chủ đề với nhé... đỡ phải lập.
    mình có bài này:
    nhập n số nguyên từ bàn phím, lấy số lớn nhất. mình định dung hàm for và if nhưng làm mãi loan hết lên. bạn nào biết giúp mình với.cảm ơn nhiều
    Bạn nói rõ đề bài đi ạ, mình đọc không hiểu

 

 
Trang 2 của 3 Đầu tiênĐầu tiên 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
  •