-
17-12-2014, 10:22 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[Bài tap về mảng một chiều] Viết chương trình đếm trong dãy số nguyên có bao nhiêu giá trị nhỏ nhất. ai pro thì xem giùm mình
#include <stdio.h>
#include <conio.h>
void Nhap(int a[],int &n);
void demgtnn(int a[],int n);
void main()
{
int a[100];
int n;
Nhap(a,n);
demgtnn(a,n);
getch();
}
void Nhap(int a[],int &n)
{
printf("Nhap so phan tu cua mang:");
scanf("%d",&n);
for (int i=0;i<n;i++)
{
printf("Nhap a[%d]:",i);
scanf("%d",&a[i]);
}
}
void demgtnn(int a[],int n)
{
int min=a[0];
int dem=0;
for(int i=0;i<n;i++)
{
if(a[i]<min)
{
min=a[i];
dem++;
}
}
printf("Gia tri nho nhat la:%d",min);
printf("
Mang co %d GTNN",dem);
}View more random threads:
- giúp em với ạ :(
- Xử lý biểu thức toán học( thuật toán Balan )
- Bài đơn giản mà không tìm ra lỗi. anh em vào debug hộ cái
- Mở rộng màn hình c++
- Xóa phần tử tại vị trí lẻ
- Lỗi: error C2440: 'initializing' : cannot convert from 'class xxx *' to 'class xxx *' sửa như thế nào?
- Cho em hỏi về cách viết tối ưu lại đoạn code sau
- Bài toán về ma trận trong C++
- Giúp em lỗi ") expected"
- Bài toán maximum sum plateau
-
17-12-2014, 11:02 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Theo cách mình hiểu: xem trong mảng giá trị nào nhỏ nhất và nó xuất hiện bao nhiêu lần.
Nếu đúng ý trên thì hàm đếm của bạn lỗi ở cách đếm; khi chạy nó sẽ xuất ra 1 dãy giá trị giảm dần bắt đầu từ a[0], và các số sẽ không bao giờ trùng (VD: nó có thể ra thế này 8 4 2 1 ; dù rằng mảng có 30 số 1)
void demgtnn(int a[],int n)
{
int min=a[0]; //Giả sử a[0] nhỏ nhất để duyệt từ đầu mảng
int dem=0; //Nếu giả sử a[0] là min, nghĩa là đã có 1 min => đếm phải là 1
for(int i=0;i<n;i++)
{
if(a[i]<min) //Nếu a[i] nhỏ hơn thì min là a[i] và đếm tăng 1, vậy nếu nó bằng thì lại không tăng dù nó vẫn nhỏ nhất (a[i]=min => a[i] là min)
{
min=a[i]; //Tìm ra số nhỏ hơn thì đổi min cho nó, tức là cuộc tìm min sẽ bắt đầu lại từ 0, vậy đếm phải trở về ban đầu (dem=1)
dem++;
}
-------------------------------------------
Mình code lại (không có IDE nên gõ tay nhé) [IMG]images/smilies/dont_tell_anyone.gif[/IMG]
void demgtnn(int a[],int n)
{
int min=a[0];
int dem=1;
for(int i=0;i<n;i++)
{
if(a[i]<min)
{
min=a[i];
dem=1;
}
else
{
if(a[i]==min)
{
dem++;
}
}
}
}
-
17-12-2014, 11:13 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:#include <stdio.h> #include <conio.h> void Nhap(int a[]); void demgtnn(int a[]); int n,i; void main(){ int a[100]; Nhap(a); demgtnn(a); getch(); } void Nhap(int a[]){ printf("Nhap so phan tu cua mang:"); scanf("%d",&n); for (i=0;i<n;i++) { printf("Nhap a[%d]:",i+1); scanf("%d",&a[i]); } } void demgtnn(int a[]){ int min=a[0],temp; int dem=0; for(i=0;i<n;i++){ if (a[i]<min) min = a[i]; } for (i=0;i<n;i++){ if (a[i]==min) dem++; } printf("Gia tri nho nhat la:%d",min); printf(" Mang co %d GTNN",dem); }
Dụng cụ cầm tay (hand tools) là một trong những dụng cụ được sử dụng phổ thông trong cuộc sống hàng ngày của mọi người. Đặc biệt đối với cánh mày râu thì những dụng cụ này đã trở thành quá thân...
Một số bổ ích của bộ bộ đồ cầm tay...