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

Đề tài: Hỏi về đếm số lượng các phần tử kề nhau mà cả 2 đều chẵn

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    5

    Mặc định Hỏi về đếm số lượng các phần tử kề nhau mà cả 2 đều chẵn

    Nhờ mọi người xem và chạy thử đoạn code này rồi chỉ bảo dùm em với
    phần demso cho ra kết quả không tuơng thích vởi em cầu của bài toán, em tìm cách sửa mà không ra nhở mọi người giúp em

    Bài này yêu cầu : Cho mảng 1 chiều các số nguyên A có N phần tử. Hãy đếm số lượng các phần tử kề nhau mà cả 2 đều chẵn bằng cách đệ quy

    Code:
    #include <conio.h>
    #include <stdio.h>
    void nhap(int a[],int n,int &i)
    {
    	for (i;i<n;i++)
    
    
    	{printf("nhap ma tran %d\t",i);
    	scanf("%d",&a[i]);
    	}
    }
    void xuat(int a[],int n)
    {       for (int i=0;i<n;i++)
    	printf("%4d",a[i]);
    }
    
    int demso(int a[],int i, int n,int &dem)
    {
    	n=n+1;
    	if(n<=0)
    	return 0;
    	 if(a[i-1]%2==0 )
    		{
    		if ((a[i-2]%2==0 && i>2) || (a[i]%2==0 && i<n))
    		dem++;
    		demso(a,i-1,n,dem);
    		}
           return dem;
    
    }
    
    void main()
    {       clrscr();
    	int dem=0;
    	int a[20],n,i=0;
    	printf("hay nhap gia tri n");
    	scanf("%d",&n);
    	nhap(a,n,i);
    	xuat(a,n);
    	demso(a,i,n, dem);
    	printf(" ket qua %d",dem);
    	getch();
    
    }

    Vui lòng để code trong tag code. Đọc Nội quy để biết thêm chi tiết
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 23-01-2008 lúc 02:08 PM. Lý do: Nhắc nhở vi phạm

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Đầu tiên code bạn viết không phải C++, bạn nên hiểu C và C++ là khác nhau, đặt tiêu đề thì ghi rõ ra là : "Tìm số phần tử chẵn trong mãng " chẳng hạn. Về hàm đệ qui của bạn thì khá rối, mình cũng không có thời gian để sựa theo ý bạn nên mình viết lại bằng C++, bạn có chỗ nào không hiểu thì hỏi :
    PHP Code:
    #include <iostream>

    void CountingRecursion(int *ptrint posint ssizeint &count)
    {
      
    //Nếu vị trí đang xét == size - 1, chú ý mình pass size vào là size - 1 ở main.
      
    if(pos == ssize){
        
    //bạn trả count về, thì mình in ra luôn.
        
    std::cout << "count = " << count 1;
        return;
      } 
      else{
        if(((
    ptr[pos]%2) == 0) && ((ptr[pos 1]%2)==0)){
          
    count++;    
        }
        
    //đệ qui đây, tăng vị trí xét lên 1
        
    CountingRecursion(ptrpos+1ssizecount);
      }
    }

    int main()
    {    
      
    int *arrPtr;
      
    int size;
      
    std::cout << "Please input size of array :\n";
      
    std::cin >> size;
      
    arrPtr = new int[size];
      
    std::cout << "Enter elements : \n";
      
    //Bạn có thể viết lại 1 hàm nhập, mình thì thấy không 
       //cần thiết lắm, mình gôm nó vào main luôn
      
    for(int x 0sizex++){
        
    std::cin >> arrPtr[x];
      }
      
    std::cout << '\n';

      
    int count 0;
      
    CountingRecursion(arrPtr0size 1count); 
      
    delete[] arrPtr;

     } 
    Còn hàm input của bạn thì nó hơi bị lạ :
    PHP Code:
    void nhap(int a[],int n,int &i)
    {
        for (
    i;i<n;i++)


        {
    printf("nhap ma tran %d\t",i);
        
    scanf("%d",&a[i]);
        }

    Tại sao bạn phải pass i vào ?

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

    Bài của bạn thì sửa lại thế này:
    Code:
    #include <conio.h>
    #include <stdio.h>
    
    void nhap(int a[],int n,int &i)
    {
    	for (i;i<n;i++)
    	{
    		printf("nhap ma tran %d\t",i);
    		scanf("%d",&a[i]);
    	}
    }
    
    void xuat(int a[],int n)
    { 
    	for (int i=0;i<n;i++)
    	{
    		printf("%4d",a[i]);
    	}
    }
    
    int demso(int a[],int i, int n,int &dem)
    {
    	n=n+1;
    	
    	if(n<=0)
    	{
    		return 0;
    	}
    	if (i == 1)//thieu diem dug cho i
    	{
    		if (a[1] % 2 == 0)
    		{
    			if (a[0] % 2 == 0)
    			{
    				return 1;
    			}
    		}
    		return 0;
    	}
    	
    	if(a[i-1]%2==0 )
    	{
    		if ((a[i-2]%2==0 /*&& i>2) || (a[i]%2==0 && i<n)*/))
    		{
    			dem++;
    		}
    //	demso(a,i-1,n,dem);//chi xet cho th pt cuoi cung chan 
    	}
    		demso(a,i-1,n,dem);
    	return dem;
    
    }
    
    void main()
    {       //clrscr();
    	int dem=0;
    	int a[100],n,i=0;
    	printf("hay nhap gia tri n");
    	scanf("%d",&n);
    	nhap(a,n,i);
    	xuat(a,n);
    	demso(a,i,n, dem);
    	printf(" ket qua %d",dem);
    	getch();
    
    }
    Nếu cải tiến hơn thì làm như sau:

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    void NhapMang (int A[100], int &n)
    {
    	printf("Nhap so luong phan tu: ");
    	scanf("%d", &n);
    
    	printf("\n");
    
    	for (int i = 0; i < n; i++)
    	{
    		printf("Nhap phan tu thu %d: ", i + 1);
    		scanf("%d", &A[i]);
    	}
    
    	printf("\n");
    }
    
    void XuatMang (int A[100], int n)
    {
    	if (n == 1)
    	{
    		printf("%4d", A[0]);
    	}
    	else
    	{
    		XuatMang (A, n - 1);
    		printf("%4d", A[n - 1]);
    	}
    }
    
    int DemLanCanChan (int A[100], int n)
    {
    	if (n == 1)
    	{
    		return 0;
    	}
    	
    	if (A[n - 1] % 2 == 0)
    	{
    		if (A[n - 2] % 2 == 0)
    		{
    			return 1 + DemLanCanChan (A, n - 1);
    		}
    	}
    
    	return DemLanCanChan (A, n - 1);
    }
    
    void main ()
    {
    	int A[100];
    	int n;
    
    	NhapMang (A, n);
    	XuatMang (A, n);
    
    	int k = DemLanCanChan (A, n);
    	printf("\nKQ = %d\n", k);
    	getch();
    }
    Đúng như Ran_rook nói nếu bạn khai thêm biến i thì nó sẽ tạo thêm nhiều biến khi gọi nhiều hàm liên tục
    ___KÔ BIÊT CÓ ĐÚNG KÔ (MÌNH CŨNG ĐANG HỌC VỀ ĐỆ QUI ĐỂ..."THI" ... HIX HIX )

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

    Còn hàm input của bạn thì nó hơi bị lạ :

    Code:
    void nhap(int a[],int n,int &i)
    {
    for (i;i<n;i++)


    {printf("nhap ma tran %d\t",i);
    scanf("%d",&a[i]);
    }
    }

    Tại sao bạn phải pass i vào ?
    Bạn thêm i vì trong hàm nhập bạn ấy truyền giá trị i = 0 từ hàm main vào hàm (kô hay)
    Đã được chỉnh sửa lần cuối bởi º┴¶† HACK †¶┴º : 30-01-2008 lúc 09:15 AM.

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

  1. Lập trình C Sắp xếp mảng 1 chiều:Phần tử chẵn về đầu tiếp đến là số 0(nếu có)và phần tử lẻ ở cuối
    Gửi bởi daicaoboi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 04-04-2017, 12:54 AM
  2. Viết hàm tính s là tổng các phần tử trước phần tử chẵn cuối cùng của mảng.
    Gửi bởi viettan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 10-01-2011, 03:54 AM
  3. Bài tập C++ tính số cặp bit liền kề (bit chẵn và lẻ) có giá trị khác nhau
    Gửi bởi linh_bkan1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 06-12-2010, 06:02 PM
  4. Trộn hai mảng chẵn lẽ xen kẽ với nhau
    Gửi bởi prince7seas trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 21-07-2010, 11:56 PM
  5. Bài tập C++ Nối 2 danh sách liên kết chẵn, lẻ lại với nhau như thế nào?
    Gửi bởi phatngoit 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: 16-06-2010, 05:16 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