Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 20 kết quả

Đề tài: Bài tập C về mảng 1 chiều

  1. #1
    No Avatar
    hooded_angel Khách

    Mặc định Bài tập C về mảng 1 chiều

    tìm số âm lớn nhất
    C Code:
    1. int soamlonnhat(int a[],int n) //tra ve so am lon nhat ? k phai tra ve vi tri dau nha
    2. {
    3.     int soamlonnhat = 1;    
    4.     for (int i=0;i<n;i++)
    5.     {
    6.         if (a[i]<0) { soamlonnhat = a[i];break;}
    7.    
    8.         if (soamlonnhat = 1)
    9.        return 1 ; //khong co so am lon nhat
    10.     }
    11.     for (int j=i;j<n;j++)
    12.    
    13.         if ((a[j]<0) && (a[j]>soamlonnhat)) soamlonnhat = a[j];
    14.    
    15.     return soamlonnhat;

    Thắt mắt là khí mình nhập mảng mình phải nhập mảng đầu tiên A[0]=số âm thì nó mới tiềm số âm nhỏ nhất còn nhập mảng đầu tiên (A[0]= số dương) thì nó ko tìm cho kết quả là 1 luôn ai fix dùm mình thank nhiều ( đầu năm làm đều tốt vận may nhân khắp mà)

    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ều
    Đã được chỉnh sửa lần cuối bởi hooded_angel : 01-01-2007 lúc 08:57 PM.

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    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 !

    * Số dương tương tự
    None!

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    * 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 đó.
    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:
    C++ Code:
    1. int i = 0, t;
    2. while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tien
    3. if (i = n) cout <<"Day so ko co so am."; // day ko co so am
    4. else{
    5.      t = a[i];
    6.      for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat
    7.          if ((a[j] < 0) && (a[j] > t))
    8.             t = a[j];
    9.      cout <<"So am lon nhat: " <<t;
    10. }

  4. #4
    No Avatar
    hooded_angel Khách

    C++ Code:
    1. int i = 0, t;
    2. while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tien
    3. if (i = n) cout <<"Day so ko co so am."; // day ko co so am
    4. else{
    5.      t = a[i];
    6.      for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat
    7.          if ((a[j] < 0) && (a[j] > t))
    8.             t = a[j];
    9.      cout <<"So am lon nhat: " <<t;
    10. }

    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

    Mình làm như vậy nhưng kết quả vẫn ko chính xác

    C++ Code:
    1. int i = 0, t;
    2. while ((i < n) && (a[i] >= 0)) ++i; //xac dinh so am dau tien
    3. if (i = n) cout <<"Day so ko co so am."; // day ko co so am
    4. else{
    5.      t = a[i];
    6.      for (int j = i+1; j < n; ++j) //vong lap tim so am lon nhat
    7.          if ((a[j] < 0) && (a[j] > t))
    8.             t = a[j];
    9.      cout <<"So am lon nhat: " <<t;
    10. } return t;
    có đúng là trả về giá trị t hay là giá trị khác
    thank! gà lắm mấy bác đừng chửi tội nghiệp
    Đã được chỉnh sửa lần cuối bởi hooded_angel : 02-01-2007 lúc 10:27 AM.

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    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
    Hàm mình viết là hàm void, đâu có cần trả về giá trị, chắc là bạn đặt kiểu cho hàm là int hay gì đó rồi. Bạn đặt tên hàm thế này: void TimSoAm() là được rồi. Nếu dùng C thì hình như là void TimSoAm(void) thì phải, mình ko có học C nên cũng ko nhớ rõ, còn C++ thì viết void TimSoAm() là đủ rồi.

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Bài tập C về mảng 1 chiều

    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:
    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ì
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    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, bác Dreaminess ko hiểu ý của em rồi, Pete chỉ nói chung chung là so sánh số âm đang xét với số trước đó
    * 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 đó.
    Cái giải thuật này thiếu nên em mới hỏi Pete câu đó chứ đâu phải em ko biết, giải thuật của em có đầy đủ mà bác.

  8. #8
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    @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é .. 5 ý của mình logic với nhau đấy
    None!

  9. #9
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    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"
    Ta hoàn toàn có thể lấy giá trị đầu tiên là số âm nhỏ nhất mà biến đó có thể biểu diễn được ví dụ :-32768 đối với int. Duyệt qua từng phần tử :
    + 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

  10. #10
    No Avatar
    whitemouse Khách

    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.

    C Code:
    1. int lonnhat(int a[],int n)
    2. {
    3.           int lc=a[0];
    4.           for(int i=0;i<n;i++)
    5.               if(lc<a[i])
    6.                   lc=a[i];
    7.          return lc;
    8. }
    9. int amlonnhat(int a[],int n)
    10. {
    11.          int x=lonnhat(a,n);
    12.          for(int i=0;i<n;i++)
    13.              if(a[i]==x && a[i]<0)
    14.                  return lc;
    15.         return -1;//truong hop nay la trong mang khong co so am nao lon nhat
    16. }

Các đề tài tương tự

  1. Trả lời: 2
    Bài viết cuối: 21-04-2013, 09:46 AM
  2. Lỗi: bố cục trang web tự tăng theo chiều ngang khi chiều cao thay đổi
    Gửi bởi tuanngocpt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-03-2013, 11:25 PM
  3. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  4. Cách truyền mang 1 chiều cho hàm bài con trỏ và mảng một chiều ai có thể giải thích giúp mình
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-03-2012, 09:00 AM
  5. Lời giải bài tập: Chuỗi Ký tự, mảng số nguyên 1 chiều, mảng 2 chiều, tạo Menu
    Gửi bởi xuanngoc trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-10-2011, 01:17 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn