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ố 14 kết quả

Đề tài: Tìm số lớn thứ 2 và nhỏ thứ 2 trong 5 số bất kì nhập vào từ bàn phím?

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

    Mặc định Tìm số lớn thứ 2 và nhỏ thứ 2 trong 5 số bất kì nhập vào từ bàn phím?

    Mình có bài tập thế này: "Nhập 5 số thực bất kì từ bàn phím, tìm ra số thực lớn thứ 2 và nhỏ thứ 2 trong 5 số ấy".

    Các bạn cho mình hỏi liệu có thể giải bài này mà không cần dùng mảng trong C không (chỉ dùng kiến thức căn bản như vòng lặp, lệnh điều kiện...), nếu có các bạn có thể cho mình ý tưởng được không. Mình cảm ơn.

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    59

    mình nghỉ là được, bạn có thể dùng 5 biến để lưu dữ liệu, a1, a2, a3, a4, a5 (theo thứ tự lưu giá trị giảm dần chẳn hạn) và thêm biến tạm temp dùng để đổi vị trí giữa hai biến.
    Ban đầu nhập vào giá trị a1
    Tiếp nhập vào a2, kiểm tra xem a2 có lớn hơn a1 hay không, nếu lơn hơn thì đổi chỗ.
    Tiếp nhập vào a3, kiểm tra a3 và a1, nếu a3 lớn hơn thì đổi rồi qua bước tiếp, nếu không thì so sánh với a2 rồi qua bước tiếp (dùng hai lệnh if)
    ...
    Tương tự cho a4, a5
    cuối cùng in ra số a2, là lớn thứ nhì, a4 là nhỏ thứ nhì.

  3. #3
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Trích dẫn Nguyên bản được gửi bởi viethai1431 Xem bài viết
    Mình có bài tập thế này: "Nhập 5 số thực bất kì từ bàn phím, tìm ra số thực lớn thứ 2 và nhỏ thứ 2 trong 5 số ấy".

    Các bạn cho mình hỏi liệu có thể giải bài này mà không cần dùng mảng trong C không (chỉ dùng kiến thức căn bản như vòng lặp, lệnh điều kiện...), nếu có các bạn có thể cho mình ý tưởng được không. Mình cảm ơn.
    Bác test thử cái này...hơi khó nhìn tí

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. int main(void)
    5. {
    6.     int max,min,mx,mn,tp;
    7.     printf("Nhap vao so thu 1: ");
    8.     scanf("%d",&max);
    9.     printf("Nhap vao so thu 2: ");
    10.     scanf("%d",&min);
    11.     if (max<min)
    12.     {
    13.         max+=min;
    14.         min=max-min;
    15.         max-=min;
    16.     }
    17.     mx=min;
    18.     mn=max;
    19.     for (short unsigned int i=0;i<3;i++)
    20.     {
    21.         printf("Nhap vao so thu %d: ",3+i);
    22.         scanf("%d",&tp);
    23.         if (tp<min)
    24.         {
    25.             mn=min;
    26.             min=tp;
    27.         }
    28.         if (tp>max)
    29.         {
    30.             mx=max;
    31.             max=tp;
    32.         }
    33.         if (tp>min && tp<mn) mn=tp;
    34.         if (tp<max && tp>mx) mx=tp;
    35.     }
    36.     printf("2 so nho va lon nhi la: %d %d.",mn,mx);
    37.     getch();
    38.     return 0;
    39. }
    Đã được chỉnh sửa lần cuối bởi azurelonely : 30-07-2011 lúc 08:16 PM. Lý do: Chưa đọc kỹ đề
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

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

    chương trình của mình có hơi dài nhưng chắc nó dễ hiểu. mình không phải học chuyên nghành tin học, biết c mới có 3 bữa nay thôi!
    trong chương trình đoạn tìm số lớn nhất (max1) và nhỏ nhất (min1) chắc dễ hiểu còn tìm max2 thì đầu tiên mình tìm giá trị để gán cho max2 sao cho max2 != max1. xong rồi coi giá trị nào không bằng max1 mà lớn nhất. cách tìm min2 tương tự
    Bạn nào có ý kiến xin hồi âm về phamtandatx@gmail.com Xin cám ơn
    //Tim so max1, max2, min1, min2
    #include<stdio.h>
    #include<conio.h>
    void main (void)
    {
    unsigned long a,b,c,d,e,max1,max2,min1,min2;
    printf("nhap a:");
    scanf("%d",&a);
    printf("nhap b:");
    scanf("%d",&b);
    printf("nhap c:");
    scanf("%d",&c);
    printf("nhap d:");
    scanf("%d",&d);
    printf("nhap e:");
    scanf("%d",&e);
    //bat dau tim max1
    max1=a;
    if (max1<b) max1=b;
    if (max1<c) max1=c;
    if (max1<d) max1=d;
    if (max1<e) max1=e;
    //gan gia tri cho max2
    max2=max1;
    if (max2!=a) max2=a;
    if (max2!=b) max2=b;
    if (max2!=c) max2=c;
    if (max2!=d) max2=d;
    if (max2!=e) max2=e;

    //bat dau tim max2
    if (max1!=a) if (max2<a) max2=a;
    if (max1!=b) if (max2<b) max2=b;
    if (max1!=c) if (max2<c) max2=c;
    if (max1!=d) if (max2<d) max2=d;
    if (max1!=e) if (max2<e) max2=e;
    //tim min1
    min1=a;

    if (min1>b) min1=b;
    if (min1>c) min1=c;
    if (min1>d) min1=d;
    if (min1>e) min1=e;
    //gan gia tri cho min2
    min2=min1;
    if (min2!=a) min2=a;
    if (min2!=b) min2=b;
    if (min2!=c) min2=c;
    if (min2!=d) min2=d;
    if (min2!=e) min2=e;
    //bat dau tim min2
    if (min2!=a) if (min2>a) min2=a;
    if (min2!=b) if (min2>a) min2=b;
    if (min2!=c) if (min2>a) min2=c;
    if (min2!=d) if (min2>a) min2=d;
    if (min2!=e) if (min2>a) min2=e;

    printf("so lon nhat la:%d.\n",max1);
    printf("so lon thu hai la:%d.\n",max2);
    printf("so nho nhat la:%d.\n",min1);
    printf("so nho thu hai la:%d.\n",min2);
    getch();
    getch();
    }

  5. #5
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Tớ đã sữa lại...ở đây
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

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

    Mặc định Tìm số lớn thứ 2 và nhỏ thứ 2 trong 5 số bất kì nhập vào từ bàn phím?

    Trích dẫn Nguyên bản được gửi bởi azurelonely Xem bài viết
    Bác test thử cái này...hơi khó nhìn tí

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. int main(void)
    5. {
    6.     int max,min,mx,mn,tp;
    7.     printf("Nhap vao so thu 1: ");
    8.     scanf("%d",&max);
    9.     printf("Nhap vao so thu 2: ");
    10.     scanf("%d",&min);
    11.     if (max<min)
    12.     {
    13.         max+=min;
    14.         min=max-min;
    15.         max-=min;
    16.     }
    17.     mx=min;
    18.     mn=max;
    19.     for (short unsigned int i=0;i<3;i++)
    20.     {
    21.         printf("Nhap vao so thu %d: ",3+i);
    22.         scanf("%d",&tp);
    23.         if (tp<min)
    24.         {
    25.             mn=min;
    26.             min=tp;
    27.         }
    28.         if (tp>max)
    29.         {
    30.             mx=max;
    31.             max=tp;
    32.         }
    33.         if (tp>min && tp<mn) mn=tp;
    34.         if (tp<max && tp>mx) mx=tp;
    35.     }
    36.     printf("2 so nho va lon nhi la: %d %d.",mn,mx);
    37.     getch();
    38.     return 0;
    39. }
    Cảm ơn bạn, bài của bạn đúng rồi nhưng mình vẫn chưa hiểu ý nghĩa của lệnh if đầu tiên, bạn có thể giải thích cho mình không?

  7. #7
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Trích dẫn Nguyên bản được gửi bởi viethai1431 Xem bài viết
    Cảm ơn bạn, bài của bạn đúng rồi nhưng mình vẫn chưa hiểu ý nghĩa của lệnh if đầu tiên, bạn có thể giải thích cho mình không?
    ban đầu sẽ có 2 giá trị là max và min...sau đó nhập số thứ 3 vào
    - Nếu số nhập vào này lớn hơn max thì số này là max còn giá trị cần tìm lớn nhì sẽ là max hiện tại
    - Nếu số nhập vào này nhỏ hơn min thì số này là min còn giá trị còn tìm nhỏ nhì sẽ là min hiện tại
    - Nếu số nhập vào này nhỏ hơn max và lớn hơn giá trị lớn nhì hiện lại (ở lần đầu thì giá trị lớn nhì là min) thì nó sẽ là giá trị lớn nhì --> gán lớn nhì là giá trị nhập vào
    - Tương tự với nhỏ nhì

    bài này bạn có thể làm với n số (n>2)
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. int main(void)
    5. {
    6.     int max,min,mx,mn,tp,mem;
    7.     printf("Nhap vao so luong phan tu: ");
    8.     scanf("%d",&mem);
    9.     printf("Nhap vao so thu 1: ");
    10.     scanf("%d",&max);
    11.     printf("Nhap vao so thu 2: ");
    12.     scanf("%d",&min);
    13.     if (max<min)
    14.     {
    15.         max+=min;
    16.         min=max-min;
    17.         max-=min;
    18.     }
    19.     mx=min;
    20.     mn=max;
    21.     for (short unsigned int i=0;i<mem-2;i++)
    22.     {
    23.         printf("Nhap vao so thu %d: ",3+i);
    24.         scanf("%d",&tp);
    25.         if (tp<min)
    26.         {
    27.             mn=min;
    28.             min=tp;
    29.         }
    30.         if (tp>max)
    31.         {
    32.             mx=max;
    33.             max=tp;
    34.         }
    35.         if (tp>min && tp<mn) mn=tp;
    36.         if (tp<max && tp>mx) mx=tp;
    37.     }
    38.     printf("2 so nho va lon nhi la: %d %d.",mn,mx);
    39.     getch();
    40.     return 0;
    41. }
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  8. #8
    Ngày gia nhập
    12 2010
    Bài viết
    31

    theo ý tưởng của một bạn trên diễn đàn, mình không nhớ ở đâu nữa, mình góp thêm cho vui:
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
        
    float max1max2min1min2temp;
       
    printf("Nhap vao day so:");
       for(
    int i=0i<5i++)
       {
          
    scanf("%f", &temp);
          if(
    i==0max1=min1=temp;
          if(
    i==1&&max1<tempmax2=max1max1=temp;
          else if(
    i==1max2=temp;
          if(
    max1<tempmax2=max1max1=temp;
          else if(
    max2<tempmax2=temp;
          if(
    i==1&&min1>tempmin2=min1min1=temp;
          else if(
    i==1min2=temp;
          if(
    min1>tempmin2=min1min1=temp;
          else if(
    min2>tempmin2=temp;
       }
       
    printf("%f la so lon thu hai, %f la so nho thu 2!"max2min2);
       
    getch();

    Đã được chỉnh sửa lần cuối bởi muramasa : 01-08-2011 lúc 03:50 PM.
    10 năm tu luyện

  9. #9
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Nếu có 5 số thì theo em là xắp xếp rồi đưa ra là nhanh nhất

    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. int swap (int &a, int &b)
    4. {
    5.     int tam = a; a = b; b = tam;
    6. }
    7. int main ()
    8. {
    9.     int a[5];
    10.     cout << "Nhap 5 so bat ki: ";
    11.     cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];
    12.     for (int i = 0; i < 5; i ++)
    13.         for (int j = i+1; j < 5; j ++)
    14.             if (a[i] > a[j]) swap (a[i], a[j]);
    15.         cout << "min2: " << a[1] << "\nMax2: "<< a[3];
    16.     return 0;
    17. }
    Nhớ một người,
    Là yêu hay là thích .... ?

  10. #10
    Ngày gia nhập
    12 2010
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    687

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    Nếu có 5 số thì theo em là xắp xếp rồi đưa ra là nhanh nhất

    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. int swap (int &a, int &b)
    4. {
    5.     int tam = a; a = b; b = tam;
    6. }
    7. int main ()
    8. {
    9.     int a[5];
    10.     cout << "Nhap 5 so bat ki: ";
    11.     cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];
    12.     for (int i = 0; i < 5; i ++)
    13.         for (int j = i+1; j < 5; j ++)
    14.             if (a[i] > a[j]) swap (a[i], a[j]);
    15.         cout << "min2: " << a[1] << "\nMax2: "<< a[3];
    16.     return 0;
    17. }
    không được dùng mảng ,đề bài nè

    Các bạn cho mình hỏi liệu có thể giải bài này mà không cần dùng mảng trong C không (chỉ dùng kiến thức căn bản như vòng lặp, lệnh điều kiện...), nếu có các bạn có thể cho mình ý tưởng được không. Mình cảm ơn.

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

  1. Trả lời: 6
    Bài viết cuối: 01-05-2013, 11:10 AM
  2. Socket trong phần mềm chat video, làm thế nào để tín hiệu nhận được nhanh nhất.
    Gửi bởi toctai trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 13-06-2012, 09:19 AM
  3. Tim từ ngắn nhất và dài nhất trong chuổi lỗi has stopped working?
    Gửi bởi satthuprao trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 27-05-2012, 11:51 AM
  4. Code cho ẩn kí tự khi nhập password vào textbox trong form đăng nhập
    Gửi bởi mrkiemhiep trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 16-03-2011, 11:10 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