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

Đề tài: Bài tập về mảng

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    6

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

    Mình có làm bài tập về mảng như sau:
    1.Nhập a[n] kiểu int (n từ 8 đến 20)
    2.Tính s=(-1)^n*x^2*n/(2*n!), x=0.25
    3.Tính int t=r/s. s tính được ở câu 2. r là tổng pt của a[n] có chữ số cuối là 5, nếu không là tổng pt chẵn của a[n]
    4.Xóa pt của mảng a <= t. Không dùng mảng phụ, không sắp xếp mảng.

    Bài mình làm rồi nhưng ch trình không chạy được Mọi người chỉ cái sai giúp, học hỏi kinh nghiệm.

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. #define MAX 20
    5.  
    6. void nhap(int a[MAX],int n);
    7. void xuat(int a[MAX],int n);
    8. int giaithua(int n);
    9. float tongs(float x,int n);
    10. float tongr(int a[MAX],int n);
    11. void xoa(int a[MAX],int &n,int t);
    12.  
    13. void main()
    14. {
    15.  int a[MAX],n,t;
    16.  float x=0.25;
    17.  do
    18.  {
    19.   printf("Nhap n(8 --> 20): ");
    20.   scanf("%d",&n);
    21.  }
    22.  while(n<8||n>20);
    23.  nhap(a,n);
    24.  xuat(a,n);
    25.  giaithua(n);
    26.  t=int (tongr(a,n)/tongs(x,n));
    27.  xoa(a,n,t);
    28.  xuat(a,n);
    29.  getch();
    30. }
    31.  
    32. void nhap(int a[MAX],int n)
    33. {
    34.  int i;
    35.  printf("Nhap mang: ");
    36.  for(i=0;i<n;i++)
    37.  {
    38.   printf("a[%d]: ",i);
    39.   scanf("%d",&a[i]);
    40.  }  
    41. }
    42.  
    43. void xuat(int a[MAX],int n)
    44. {
    45.  int i;
    46.  printf("Xuat mang: ");
    47.  for(i=0;i<n;i++)
    48.   printf("a[%d]= %d\n",i,a[i]);
    49. }
    50.  
    51. int giaithua(int n)
    52. {
    53.  int s;
    54.  s=n*giaithua(n-1);
    55.  return s;
    56. }
    57.  
    58. float tongs(float x,int n)
    59. {
    60.  float s=0;
    61.  s=pow(-1,n)*pow(x,2*n)/(2*giaithua(n));
    62.  return s;
    63. }
    64.  
    65. float tongr(int a[MAX],int n)
    66. {
    67.  int i,t;
    68.  float r1=0,r2=0;
    69.  for(i=0;i<n;i++)
    70.  {
    71.   if(a[i]%5==0)
    72.    r1+=a[i];
    73.   if(a[i]%2==0)
    74.    r2+=a[i];
    75.  }
    76.  for(i=0;i<n;i++)
    77.   if(a[i]%5) return r2;
    78.   else return r1;
    79. }
    80.  
    81. void xoa(int a[MAX],int &n,int t)
    82. {
    83.  int i,j;
    84.  for(i=0;i<n;i++)
    85.  {
    86.   if(a[i]<=t)
    87.   { for(j=i;j<n-1;j++);
    88.     n--;
    89.   }
    90.  }
    91. }

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà Nội
    Bài viết
    138

    Bài làm của bạn thừa vẫn thừa mà thiếu vẫn thiếu.

    Hàm nhập cho trường hợp này bạn nên làm nó theo mẫu sau:

    C Code:
    1. /* n là chiều dài mảng
    2.  * Nhập mảng với các phần tử nằm từ cận dưới đến cận trên
    3.  */
    4. void nhap(int a[], int n, int cận_dưới, int cận trên);
    5. Hoặc: void nhap(int a[], int cận_dưới, int cận trên); // Vì MAX đã được xác định là chiều dài mảng rồi
    6. Hoặc: void nhap(int a[MAX], int cận_dưới, int cận trên);

    Các câu hỏi sau cực kỳ dễ, có thể không cần hàm xuất mảng, vì bài toán không yêu cầu.

    Dr sẽ không làm cho bạn toàn bộ mà chỉ hướng dẫn bạn thôi, hãy cố gắng tự mình suy nghĩ và làm nó tốt hơn!

    @: Nhớ đọc Nội quy tham gia thảo luận bạn nhé!
    Tất cả các câu hỏi của thành viên (không vi phạm luật lệ tham gia) gửi vào box Java, Linux nếu không thành viên nào trả lời hỗ trợ trong vòng 24h, ban quản trị sẽ trực tiếp hỗ trợ. Các bạn giới thiệu và loan tin giúp điều này

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

    Hix mình vẫn chưa biết tại sao chương trình lại bị lỗi sau khi đã nhập mảng vào. Xem lại mà ko tìm đc sao lại bị lỗi ct ~.~ Mọi người chỉ giúp.
    Còn 1 điều muốn hỏi là khi mình sử dụng hàm và trong hàm, giá trị của mảng thay đổi thì khi xuất, nó sẽ thay đổi ra ngoài như tham biến hay là không đổi như tham trị.
    Đã được chỉnh sửa lần cuối bởi Altair : 02-04-2008 lúc 06:43 PM.

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

    Vấn đề của bạn là ở hàm tính giai thừa, bạn hãy xem lại hàm này vì điều kiện không đủ nên sẽ gây tràn bộ đệm khi sử dụng.
    ttecak ?

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

    Trích dẫn Nguyên bản được gửi bởi comeonbaby Xem bài viết
    Vấn đề của bạn là ở hàm tính giai thừa, bạn hãy xem lại hàm này vì điều kiện không đủ nên sẽ gây tràn bộ đệm khi sử dụng.
    Thnx bạn, mình đã thay đệ qui bằng vòng lặp thì chương trình không bị lỗi nữa ^^ Nhưng còn sai, để sửa lại rồi chạy thử xem.

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