30/09/2018, 18:55
Cho mình hỏi lỗi mình như thế nào ạ
chào mọi người đây là đề bài ạ
và đây là code của e
#include <stdio.h>
#include <conio.h>
#define max 100
void nhapmang(int a[max], int* n);
void caua(int a[max], int n);
void main()
{
int a[max], n;
caua(a, &n);
getch();
}
void nhapmang(int a[max], int* n)
{
printf("nhap n: ");
do
scanf("%d",&(*n));
while(*n<1);
for(int i = 0; i < *n; i++)
{
printf("so %d: ", i + 1);
scanf("%d",&a[i]);
}
}
void caua(int a[max], int n)
{
int i, max;
max = a[0];
for(i = 0; i < n ; i++)
{
if(a[i]>max)
max = a[i];
}
int k;
k=a[0];
for(i = 0; i < n ; i++)
{
if(k > a[i] && k < max)
k = a[i];
}
printf("k lon nhi la %d va vi tri la",k,i +1 );
}
```cho mình hỏi lỗi là gì ạ và mong mọi người giúp
Bài liên quan
lỗi như thế nào vậy bạn
There is no context in which this conversion is possible
4 lỗi đó bạn
Bạn tham khảo thử bài này rồi chỉnh lại bài bạn thử
cảm ơn bạn để mình xem thử lại
http://ideone.com/3o67aa
#define max 100
mà lại khai báo biến max -> 1 lỗivoid caua(int a[], int n)
-> 2 lỗi, int *n mới đúng do bạn truyền vào 1 con trỏscanf("%d",&(*n));
-> 3 lỗi, chỉ cần scanf("%d",n); là ok rồiCòn 1 số lỗi logic mà mình có sửa trong code rồi.
cảm ơn nha bạn mà cho mình hỏi tại sao phải là k rất nhỏ và
if(k < a[i] && a[i] < max)
vậy bạn
à mình hiểu r cảm ơn bạn
Còn câu a thì sao nhỉ có ai có ý tưởng nào tối ưu không
^^ bạn tối ưu thế nào
Hmm, mình sẽ làm là tìm max ngay lúc nhập mảng
Và tìm 2nd max sau khi nhập xong :>
Vậy chỉ tốn 2 for thay vì 3 for như trên.
Mình làm thế này không biết có tối ưu không @drgnz có cách nào hay hơn không nhỉ??
mình chỉ nghĩ ra cách đó thôi.
Tính sort rồi lấy 2 phần tử đầu, nhưng bubble sort là O(n^2), qsort thì là O(nlogn)
Cả 2 đều thua 2 vòng for cho trường hợp n lớn.
À mà code bạn có test bị sai
http://ideone.com/GCeyX7