01/10/2018, 16:59
In ra số lớn nhất trong mảng
#include<stdio.h>
#include<conio.h>
#define max 100
void NhapMang(int a[max], int &n);
void XuatMang(int a[max], int n);
int largest(int a[max], int n);
void smallest(int a[max], int n);
int main()
{
int a[max];
int n;
NhapMang(a, n);
XuatMang(a, n);
largest(a, n);
smallest(a, n);
return 0;
}
void NhapMang(int a[max], int &n)
{
printf("Nhap so luong phan tu : ");
scanf("%d", &n);
for (int i = 1; i<=n; i++)
{
printf("Nhap a[%d] : ", i);
scanf("%d", a + i);
}
}
void XuatMang(int a[max], int n)
{
for (int i = 1; i<=n; i++)
printf("a[%d]=%d ",i, a[i]);
printf("
");
}
void soam(int a[max], int n)
{
for (int i = 1; i <= n; i++)
{
if (a[i]%2==0 && a[i]<20)
{
printf("cac so chan nho hon 20: %d
", a[i]);
}
}
}
void last(int a[max],int n) {
for (int i = 1; i <= n; i++)
{
if (i == n )
{
printf("gia phan tu cuoi cung trong mang a[%d]=%d ",i, a[i]);
}
}
}
int largest(int a[max], int n)
{
int temp;
temp = a[0];
for (int i = 0; i <= n; i++)
{
if (temp < a[i])
{
temp = a[i];
}
}
printf("so lon nhat la %d ",temp);
} /*0 1 2 3 4 */
void smallest(int a[max], int n)
{
int min;
min = a[0];
for (int i = 1; i <= n; i++)
{
if (min>a[i])
{
min= a[i];
}
}
printf("
so nho nhat : %d
",min);
}
em suy nghĩ mãi vẫn biết tại sao nó không in ra đúng số lớn nhất !!! mọi người giúp em với ạ
Bài liên quan
a[i] cũng giống a+i thôi bác nó mình mình đã khai bao a là mảng rồi mình cộng i vào thì nó cũng hiểu là a[i]
bác xem giúp bài của em nó in ra số nhỏ nhất thì đc nhưng mà in ra số lớn nhất sai mình k biết nó sai từ cái nào
Bạn cứ sửa hết lỗi đi đã.
mình đã sửa nhưng ,mà
void NhapMang(int a[max], int &n) không sử dụng tham chiếu thì giá trị lớn nhất thì nó auto bằng 1 mình đã sử dụng con trỏ mà vẫn không dc
Con trỏ dùng được chứ, bạn cứ post code bạn đã sửa lại dùng con trỏ lên đây xem thử vấn đề ở đâu.
Reference
Vì lúc nhập mảng bạn cho vòng lặp chạy từ 1 nên a[0] mang giá trị rác.Trong hàm largest temp=a[0] và cho vòng lặp chạy từ 0 nên sau vòng lặp max=a[0]=giá trị rác.Bạn có thể sửa bằng cách lúc nhập mảng cho i chạy từ 0 hoặc trong hàm largest gán temp=a[1] và for(int i=1;i<=n;i++) là được.
mình làm theo con trỏ thế này bạn xem giúp mình !
nó auto ra số lớn nhất nhỏ nhất là 0
nó còn k xuất ra giá trị trong hàm last với soam
mình cảm ơn bạn mình sửa dc r ^^
nhưng mà đó là khi mình làm tham chiếu mượn c++ khi làm về con trỏ c thuần thì nó không in ra đúng số nhất nhỏ nhất còn
nó còn k xuất ra giá trị hàm last và soam
bạn coi giúp mình
sao làm n mà không phải là &n
Tại vì hàm scanf yêu cầu đối số là địa chỉ trong khi đó n là con trỏ vốn có giá trị là một địa chỉ rồi nên mình truyền vào là n thay vì …&n.
mà sao phải cho i từ 0 -> n
nếu cho từ 1 <= n thì
vd : n=3 thì i từ 0 1 2 thì cũng có 3 phần tử
n=3 thì i từ 1 2 3 thì cũng có 3 phần tử
bạn giải thích giúp mình với ạ
Bác tham khảo clip của boss nha , em cũng học boss
Nếu bác cho từ 1 thì nó sẽ bỏ qua phần tử đầu ( như ví dụ của bác là số 0 ) và nó đẻ thêm 1 số rác ở cuối mảng vì n =3 mà mảng có mỗi 3 phần tử , bác cho n = 3 là vượt mảng rồi
Bạn có thể tham khảo về mảng ở đây: https://www.youtube.com/watch?v=9b2D-7ybkrk