Chủ đề: Giúp đỡ về bài tập c++
-
27-08-2014, 04:49 PM #11
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi MHoang
-
27-08-2014, 07:02 PM #12
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
- 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; }
-
28-08-2014, 08:23 AM #13
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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 - - -
Gửi bởi prog10
-
28-08-2014, 02:38 PM #14
Junior Member
- 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 ạ?
-
02-09-2014, 09:31 AM #15
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi luannguyen96
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; }
-
02-09-2014, 05:18 PM #16
Junior Member
- 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;
-
03-09-2014, 03:29 PM #17
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi minhquanvn9x
-
03-09-2014, 05:03 PM #18
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi minhquanvn9x
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;
}
-
03-09-2014, 07:55 PM #19
Junior Member
- 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
-
03-09-2014, 07:58 PM #20
Junior Member
- 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 - - -
Gửi bởi minhquanvn9x
khi đề cập đến đội hình MU, không thể ko nói tới một trong các câu lạc bộ bóng đá huyền thoại và với tầm ảnh hưởng nhất trong lịch sử của môn thể thao vua. Với hơn 1 thế kỷ còn đó và phát triển,...
Đội hình MU - Manchester United:...