Chủ đề: Bài tập C về mảng 1 chiều
-
01-01-2007, 03:53 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài tập C về mảng 1 chiều
tìm số âm lớn nhất
Mã:int soamlonnhat(int a[],int n) //tra ve so am lon nhat ? k phai tra ve vi tri dau nha{ int soamlonnhat = 1; for (int i=0;i<n;i++) { if (a[i]<0) { soamlonnhat = a[i];break;} if (soamlonnhat = 1) return 1 ; //khong co so am lon nhat } for (int j=i;j<n;j++) if ((a[j]<0) && (a[j]>soamlonnhat)) soamlonnhat = a[j]; return soamlonnhat;
Còn tìm số dương nhỏ nhất (cũng giống ý tưởng trên ai sữa dùm mình) thank nhiềuView more random threads:
- Test case | Tạo test Project với NUnit?
- làm thế nào để là 1 ltv giỏi
- khác nhau của struct và typedef
- in ra hinh tam giac??
- SQRT trong C
- khai báo mảng 2 chiều có bao nhiêu cách trong C++
- [Solved] Bảng cửu chương
- Cảnh báo khi build project trên visual studio 2010
- Cần bài tập và code về con trỏ
- Lập trình đồ họa trên C/C++
-
01-01-2007, 05:23 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sai nhiều .. Không có logic .
* Cách tìm số âm lớn nhất trong mảng :
1. Quét từng phần tử
2. Kiểm tra nó có âm hay không ?
3. Nếu là số âm thì so sánh nó với số trước đó.
4. Sau mỗi lần so sánh gán giá trị vào một biến ( biến này phải là số âm nhỏ nhất trong khoảng xác định )
5. Trả lại giá trị số âm lớn nhất đó.
Have Fun [IMG]images/smilies/biggrin.png[/IMG] !
* Số dương tương tự
-
02-01-2007, 12:58 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Pete thiếu 1 điều, làm sao xác định số âm đầu tiên để so sánh với các số sau đó, Đây là giải thuật của mình:
-
02-01-2007, 05:09 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sao lại không nhỉ? Duyệt từ đầu, nếu thấy một số <0 nào đó thì nó sẽ là số âm đầu tiên chứ?. Nếu duyệt đến hết mảng mà chẳng thấy một số <0 nào thì kết luận: "Làm gì có số âm nào mà bảo tìm số âm lớn nhất?? " Hì hì
* Cách tìm số âm lớn nhất trong mảng :
1. Quét từng phần tử
2. Kiểm tra nó có âm hay không ?
3. Nếu là số âm thì so sánh nó với số trước đó.
4. Sau mỗi lần so sánh gán giá trị vào một biến ( biến này phải là số âm nhỏ nhất trong khoảng xác định )
5. Trả lại giá trị số âm lớn nhất đó.
-
02-01-2007, 05:22 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:int i = 0, t;while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tienif (i = n) cout <<"Day so ko co so am."; // day ko co so amelse{ t = a[i]; for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat if ((a[j] < 0) && (a[j] > t)) t = a[j]; cout <<"So am lon nhat: " <<t;}
Mình làm như vậy nhưng kết quả vẫn ko chính xác
Mã:int i = 0, t;while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tienif (i = n) cout <<"Day so ko co so am."; // day ko co so amelse{ t = a[i]; for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat if ((a[j] < 0) && (a[j] > t)) t = a[j]; cout <<"So am lon nhat: " <<t;} return t;
thank! gà lắm mấy bác đừng chửi tội nghiệp
-
02-01-2007, 06:53 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình thử chạy hàm của bạn. nó báo lỗi là cần phải trả về giá trị. bạn có thể fix lại ko
-
02-01-2007, 07:00 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
* Cách tìm số âm lớn nhất trong mảng :
1. Quét từng phần tử
2. Kiểm tra nó có âm hay không ?
3. Nếu là số âm thì so sánh nó với số trước đó.
4. Sau mỗi lần so sánh gán giá trị vào một biến ( biến này phải là số âm nhỏ nhất trong khoảng xác định )
5. Trả lại giá trị số âm lớn nhất đó.
Mã:int i = 0, t;while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tienif (i = n) cout <<"Day so ko co so am."; // day ko co so amelse{ t = a[i]; for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat if ((a[j] < 0) && (a[j] > t)) t = a[j]; cout <<"So am lon nhat: " <<t;}
-
03-01-2007, 09:04 AM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Em thấy ý của pete97 đầy đủ rồi
"biến này phải là số âm nhỏ nhất trong khoảng xác định"
+ Kiểm tra xem có âm hay không
- Nếu có và bằng -32768 thì chọn luôn làm số nhỏ nhất và thoát
- Nếu có và không bằng thì số ấy cho biến
-
03-01-2007, 05:29 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
@huynguyen : thuật giải của mình chẳng thiếu gì cả ... Đọc lại nhé : 2. Kiểm tra từng phần tử xem có âm hay không chắc chắn phải đưa ra số đầu tiên chứ ( ngoại trừ trường hợp toàn =0 hoặc >0 ) . 3. " Số trước đó " =>cái này phải hiểu là số âm vì đi tìm số âm cơ mà .
Đọc kĩ lại nhé [IMG]images/smilies/biggrin.png[/IMG] .. 5 ý của mình logic với nhau đấy[IMG]images/smilies/biggrin.png[/IMG]
-
10-01-2007, 05:24 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
minh co cach lam bai loai nay don gian hon mot chut.minh se khoi tao hai mang.mang tim so nguyen lon nhat.va mot mang la mang so nguyen am lon nhat.No hoi dai nhung minh nghi dai nhung ma no chat che hon.
Mã:int lonnhat(int a[],int n){ int lc=a[0]; for(int i=0;i<n;i++) if(lc<a[i]) lc=a[i]; return lc; }int amlonnhat(int a[],int n){ int x=lonnhat(a,n); for(int i=0;i<n;i++) if(a[i]==x && a[i]<0) return lc; return -1;//truong hop nay la trong mang khong co so am nao lon nhat}
Dưới ánh nắng mặt trời đang lên, những đống pallet nhựa An Giang trải dài mênh mông như những bức tranh tự nhiên đầy sắc màu. Mỗi chiếc pallet nhựa không chỉ là một vật dụng thông thường mà còn là...
Pallet nhựa An Giang giao hàng...