Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Đổi chỗ phần tử trong C

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    0

    Mặc định Đổi chỗ phần tử trong C

    các bạn có thế tìm lỗi cho mình bài này được không sao mình in ra dãy kết quả thì số bé luôn là 0
    Code:
    //viet chuong trinh tim va doi cho phan tu be nhat voi phan tu lon nhat trong day 1 chieu cac so thuc
    #include <stdio.h>
    #include <conio.h>
    
    
    main()
    {
          float a[100] ,tg;
          int i, n,imin, imax;
          do
          {
              printf ("nhap vao so luong phan tu: ");
              scanf ("%d", &n);
              } while (n>100 || n<=0);
              imin=1;
              imax=1;
              for (i=1; i<=n; i++)
              {
                  printf ("\n nhap vao phan tu thu %d: ", i);
                  scanf ("%f", &a[i]);
                  if (a[imax]< a[i]) imax=i;
                  if (a[imin]> a[i]) imin=i;
                  }
                  a[imin]=tg; a[imin]= a[imax]; a[imax]=tg;
                  for (i=1; i<=n; i++)
                  printf ("%f ",a[i]);
                  getch();
                  }
    đừng nghĩ tình cảm con người là thứ gì đó to tát, nó chỉ là một hạt bụi thổi thì bay, chỉ là 1 cái ly rơi là vỡ, một cánh hoa nở rồi tàn.

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    bài này là đổi vị trí của 2 thằng max min thôi.
    còn lỗi là do mảng pắt đầu từ a[0] chứ ko pải từ a[1]
    HT117-5277

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    bài này là đổi vị trí của 2 thằng max min thôi.
    còn lỗi là do mảng pắt đầu từ a[0] chứ ko pải từ a[1]
    mình thì mình chắc chắn là lỗi không phải do i=1. bởi ở đây mình đã cho i chạy từ 1 đến bé hơn hoặc =n. nếu i= 0 chỉ cần chạy đến bé hơn n còn nếu <=n thì i=1 là đúng, mình đặt imin và imax đều bằng 1 nên i xuất phát chắc chắn phải là 1 chứ không thế là 0. đó không thể là lỗi của chương trình này được. ai có thể chỉ mình lỗi ở đâu không
    đừng nghĩ tình cảm con người là thứ gì đó to tát, nó chỉ là một hạt bụi thổi thì bay, chỉ là 1 cái ly rơi là vỡ, một cánh hoa nở rồi tàn.

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mình nghĩ là code này nó in ra đúng cái mình cần đâu ? Hoặc cụ thể là bạn hỏi cái vấn đề in gì
    Chỉ là kiểm tra xem phần tử i nó có > hơn phần tử max hiện tại ko . Nếu có thì đưa flag (imax) đến trỏ tại vị trí đó.
    Tương tự ở min.
    Sau đó đổi chỗ a[imax] cho a[imin] . Tức là đúng yêu cầu của đề bài
    Đến cái công đoạn hiển thị thì chả thấy đả động gì đến imax imin mà in dãy bình thường từ 1 tới n .
    Chả thấy có ý nghĩa gì trơn luôn
    .

    Việc bạn cần làm để kiểm chứng việc đổi chỗ có thành công ko là :
    {
    In ra dãy trước khi đổi chỗ .
    Thực hiện đổi chỗ.
    In lại dãy sau khi đổi chỗ
    }
    Bạn nhập vào có phần tử 0 là bé nhất thì cuối cùng xem lại dãy thì vẫn thấy 0 là bé nhất chứ có gì đâu ?
    Mình chưa hiểu rõ ý bạn cần hỏi là cái gì nữa
    Đã được chỉnh sửa lần cuối bởi clchicken : 17-10-2011 lúc 09:50 PM.

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Mình nghĩ là code này nó in ra đúng cái mình cần đâu ? Hoặc cụ thể là bạn hỏi cái vấn đề in gì
    Chỉ là kiểm tra xem phần tử i nó có > hơn phần tử max hiện tại ko . Nếu có thì đưa flag (imax) đến trỏ tại vị trí đó.
    Tương tự ở min.
    Sau đó đổi chỗ a[imax] cho a[imin] . Tức là đúng yêu cầu của đề bài
    Đến cái công đoạn hiển thị thì chả thấy đả động gì đến imax imin mà in dãy bình thường từ 1 tới n .
    Chả thấy có ý nghĩa gì trơn luôn
    .

    Việc bạn cần làm để kiểm chứng việc đổi chỗ có thành công ko là :
    {
    In ra dãy trước khi đổi chỗ .
    Thực hiện đổi chỗ.
    In lại dãy sau khi đổi chỗ
    }
    Bạn nhập vào có phần tử 0 là bé nhất thì cuối cùng xem lại dãy thì vẫn thấy 0 là bé nhất chứ có gì đâu ?
    Mình chưa hiểu rõ ý bạn cần hỏi là cái gì nữa
    hi đề bài mình đã viết ở phần code rồi viết chương trình đổi chỗ phần tử bé nhất là lớn nhất trong dãy 1 chiều các số thực. cũng may là mình vừa tìm ra tại sao in ra min lại thành 0. do mình gán sai vị trí tg=a[imin] chứ không phải a[imin]= tg. nhưng mình có nhập vào phần tử bé nhất là 0 đâu. max và min nó nằm trong dãy số thực đc đánh số từ 1 đến n do đó khi in kết quả thì in từ 1 đến n là đúng rồi, sao bạn lại bảo không có ý nghĩa gì.
    đừng nghĩ tình cảm con người là thứ gì đó to tát, nó chỉ là một hạt bụi thổi thì bay, chỉ là 1 cái ly rơi là vỡ, một cánh hoa nở rồi tàn.

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc định Đổi chỗ phần tử trong C

    Trích dẫn Nguyên bản được gửi bởi buttchii Xem bài viết
    hi đề bài mình đã viết ở phần code rồi viết chương trình đổi chỗ phần tử bé nhất là lớn nhất trong dãy 1 chiều các số thực. cũng may là mình vừa tìm ra tại sao in ra min lại thành 0. do mình gán sai vị trí tg=a[imin] chứ không phải a[imin]= tg. nhưng mình có nhập vào phần tử bé nhất là 0 đâu. max và min nó nằm trong dãy số thực đc đánh số từ 1 đến n do đó khi in kết quả thì in từ 1 đến n là đúng rồi, sao bạn lại bảo không có ý nghĩa gì.
    Ẹc, Thế với cái code trên thì làm sao bạn biết việc đổi chỗ đã dc thực hiện đúng hay chưa ?
    Ko lẽ bạn đối chiếu giữa cái đoạn quá trình nhập , enter trên màn hình với đoạn in danh sách ?
    Đã được chỉnh sửa lần cuối bởi clchicken : 18-10-2011 lúc 12:21 AM.

  7. #7
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    hum trước ko rảnh coi code.hum nay coi code xong thì ôi thôi hỡi.bạn vừa nhập vừa xử lý.
    a[imin]=tg.......; a[imin]= a[imax]; a[imax]=tg;
    tg chưa init đây.
    HT117-5277

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

  1. Lập trình C tìm xem trong mảng số nguyên i_Mang[] có bao nhiêu phần tử có giá trị âm & phần tử có giá trị âm trong mảngn
    Gửi bởi fawker trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-05-2013, 03:28 PM
  2. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  3. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  4. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 PM

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