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

Đề tài: Bài tập lập trình shell trong linux

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    3

    Mặc định Bài tập lập trình shell trong linux

    Các bạn chỉ giúp mình làm 2 bài tập lập trình bằng shell trong linux như sau:

    - Tìm số lớn nhất trong dãy số nhập vào
    - Đảo ngược 1 dãy số. Ví dụ: 1 2 3 4 đảo ngược lại: 4 3 2 1

    Mình đang cần gấp!
    Cám ơn các bạn!

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi hvmdownload Xem bài viết
    Các bạn chỉ giúp mình làm 2 bài tập lập trình bằng shell trong linux như sau:

    - Tìm số lớn nhất trong dãy số nhập vào
    - Đảo ngược 1 dãy số. Ví dụ: 1 2 3 4 đảo ngược lại: 4 3 2 1

    Mình đang cần gấp!
    Cám ơn các bạn!
    Bài tập sao không tự làm mà lại vác lên diễn đàn để hỏi? Nên tự đọc tài liệu, mày mò và thử làm, vướng ở đâu thì mới hỏi.

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Bài 1: Tìm số lớn nhất trong dãy số nhập vào từ keyboard

    C Code:
    1. /* Find out a max imum in an array of  numbers */
    2.  
    3. #include <stdio.h>
    4. #include <stdlib.h>
    5.  
    6. /* Input array a with n elements */
    7. void input (int *a, int n);
    8. /* Find maximum between 2 numbers */
    9. int max2nums (int a, int b);
    10. /* Find maximum among an array of numbers */
    11. int maxs (int *arr, int n);
    12.  
    13. int main (int argc, char* argv[])
    14. {
    15.     int n, i;
    16.     int *arr;
    17.    
    18.     printf ("Numbers of array: =\t");
    19.     scanf ("%d", &n);
    20.     arr = (int *) malloc ( sizeof (int) * n);
    21.     if ( NULL == arr) {
    22.         printf ("Allocation of memory failed\n");
    23.         return 0;
    24.     }
    25.    
    26.     input (arr, n);
    27.    
    28.     for (i = 0; i < n; i++) {
    29.         printf ("Enter a[%d] = %d\t", i, arr[i]);
    30.     }
    31.     printf ("max = %d", maxs (arr, n));
    32.    
    33.     return 0;
    34. }
    35.  
    36. void input (int *a, int n)
    37. {
    38.     int i;
    39.    
    40.     for (i = 0; i < n; i++) {
    41.         printf ("Enter a[%d] = \t", i);
    42.         scanf ("%d", &a[i]);
    43.     }
    44. }
    45.  
    46. int maxs (int *a, int n)
    47. {
    48.     int max = a[0];
    49.     int i;
    50.    
    51.     for (i = 1; i < n; i++) {
    52.         max = max2nums (max, a[i]);
    53.     }
    54.  
    55.     return max;
    56. }
    57.  
    58. int max2nums (int a, int b)
    59. {
    60.     return ((a > b) ? a : b);
    61. }


    Tiến hành compile dùng gcc:
    gcc -o max max.c
    ./max

    Sorry, em không đọc kỹ yêu cầu. Lần sau em sẽ cẩn thận hơn.
    Đã được chỉnh sửa lần cuối bởi chinh : 11-05-2009 lúc 03:56 PM.

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    186

    người ta hỏi lập trình Bash chứ không phải C đâu mà...
    Ước mơ vươn tới Linux Developer.
    Đang trong quá trình tập luyện:
    1. C system programming
    2. GNU distribution
    3. Gtk+/Gnome Application Programming.

    Bác nào giỏi lĩnh vực này giúp Kim với nha. Kim cám ơn nhiều !!!

  5. #5
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Bài 2: Đảo ngược dãy số đầu vào
    C Code:
    1. /* Reverse an array of numbers */
    2. #include <stdio.h>
    3.  
    4. /* Input an array a with n elements */
    5. void input (int *a, int n);
    6. /* Reserve an array */
    7. int* reverse (int *a, int n);
    8.  
    9. int main (int agrc, char* argv[])
    10. {
    11.     int i;
    12.     int n;    
    13.     int *arr;
    14.     int *arr_out;
    15.    
    16.     printf ("Enter number of elements of array: \t");
    17.     scanf ("%d", &n);
    18.    
    19.     arr = (int*) malloc (sizeof (int) * n);
    20.     if (NULL == arr) {
    21.         printf ("Memory allocation failed\n");
    22.         return 0;
    23.     }
    24.    
    25.     input (arr, n);
    26.    
    27.     arr_out = reverse (arr, n);
    28.     for (i = 0; i < n; i++) {
    29.         printf ("arr_out [%d] = %d \t", i, arr_out[i]);
    30.     }
    31.    
    32.     return 0;
    33. }
    34.  
    35. void input (int *a, int n)
    36. {
    37.     int i;
    38.    
    39.     for (i = 0; i < n; i++) {
    40.         printf ("Enter a[%d] \t", i);
    41.         scanf ("%d", &a[i]);
    42.     }
    43. }
    44.  
    45. int* reverse (int *a, int n)
    46. {
    47.     int i;
    48.     int *b;
    49.     b = (int*) malloc (sizeof (int) * n);
    50.     for (i = 0; i < n; i++) {
    51.         b[n-i-1]=a[i];
    52.     }
    53.     return b;
    54. }
    Compile dùng gcc:
    gcc -o reverse reverse.c
    ./reverse

    sorry, em không đọc kỹ yêu cầu. Lần sau em sẽ cẩn thận hơn.

    Bash Code:
    1. #/bin/bash
    2.  
    3. # input an array of elements
    4.     echo -n "n= "
    5.     read n
    6.    
    7.     for ((i=0; i<n; i++))
    8.     do
    9.         echo -n "a[$i] " =
    10.         read a[$i]
    11.     done
    12.  
    13. #max of an array
    14.     max=${a[0]}
    15.     echo "max1 = $max"
    16.     for ((i=1; i<n; i++))
    17.     do
    18.         if [ "${a[$i]}" -gt "$max" ]; then
    19.             max=${a[$i]}
    20.         fi
    21.     done
    22.     echo "max = $max"
    23. exit $?
    Bài 2 viết tương tự nhé.

    Bài 1 mình viết lại bằng cách gọi các chương trình con.

    Bash Code:
    1. #/bin/bash
    2.  
    3. # input an array of elements
    4. function input()
    5. {
    6.     echo -n "n= "
    7.     read n
    8.    
    9.     for ((i=0; i<n; i++))
    10.     do
    11.         echo -n "a[$i] " =
    12.         read a[$i]
    13.     done
    14. }
    15.  
    16. #max of two numbers
    17. function max2nums()
    18. {
    19.     if [ "$1" -gt "$2" ]; then
    20.         max1=$1
    21.         echo $1
    22.     else
    23.         max1=$2
    24.         echo $2
    25.     fi
    26.     return $max1
    27. }
    28.  
    29. #max of an array
    30. function maxs()
    31. {
    32.     max=${a[0]}
    33.     for ((i=1; i<n; i++))
    34.     do
    35.         max=$(max2nums ${a[$i]}  $max)
    36.     done
    37.     echo "max = $max"
    38. }
    39.  
    40. input
    41. maxs
    42.  
    43. exit $?

    Bài 2 viết tương tự nhé.

    Lưu file này tên là maxs.sh.

    Trước khi chạy thì cấp quyền cho nó: chmod 755 maxs.sh

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

  1. Tài liệu lập trình Shell trong Linux, em đang cần, giúp em với
    Gửi bởi duy_2525 trong diễn đàn Công cụ, Tài liệu lập trình trên Linux
    Trả lời: 4
    Bài viết cuối: 05-04-2012, 09:21 AM
  2. Tạo Thread Trong Shell Linux ?
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình shell Linux
    Trả lời: 9
    Bài viết cuối: 28-04-2011, 01:50 PM
  3. Lập trình C Lập trình shell trong Linux
    Gửi bởi haihungit_9x trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 4
    Bài viết cuối: 29-10-2010, 10:00 AM
  4. Linux Lập trình trong môi trường shell
    Gửi bởi AlexF trong diễn đàn Công cụ, Tài liệu lập trình trên Linux
    Trả lời: 1
    Bài viết cuối: 20-04-2010, 08:33 PM
  5. Giải giúp bài tập lập trình shell trong linux
    Gửi bởi hvmdownload trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 26-03-2009, 10:40 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