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

Đề tài: [C] Tìm lỗi logic trong đoạn chương trình sau?

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Quảng Ngãi
    Bài viết
    9

    Exclamation [C] Tìm lỗi logic trong đoạn chương trình sau?

    xóa tất cả các số chính phương trong mảng một chiều các số nguyên?
    Code:
    #include"stdio.h"
    void nhap(int a[],int &n);
    void xuat(int a[],int n);
    int ktchinhphuong(int k);
    void xoavitri(int a[],int &n,int k);
    void xoachinhphuong(int a[],int &n);
    void main()
    {
    	int a[100],n;
    	printf("nhap so phan tu n:");
    	scanf("%d",&n);
    	nhap(a,n);
    	printf("mang vua nhap la:\n");
    	xuat(a,n);
    	printf("mang sau khi xoa la:");
    	xoachinhphuong(a,n);
    }
    void nhap(int a[],int &n)
    {
    	for(int i=0;i<n;i++)
    	{
    		printf("nhap thanh phan a[%d]:",i);
    		scanf("%d",&a[i]);
    	}
    
    }
    void xuat(int a[],int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		printf("%d",a[i]);
    		printf("\n");
    	}
    }
    int ktchinhphuong(int k)
    {
    	for(int i=0;i<=k;i++)
    		if(i*i==k)
    			return 1;
    	return 0;
    }
    	
    void xoachinhphuong(int a[],int &n)
    {
    	for(int j=0;j<n;j++)
    		if(ktchinhphuong(a[j]))
    			xoavitri(a,n,j);
    	xuat(a,n);
    }
    void xoavitri(int a[],int &n,int k)
    {
    	for(int i=k;i<n;i++)
    	{
    		a[i]=a[i+1];
    
    	}
    	n--;
    }
    VD:mảng la:1 4 8 9
    mảng sau khi xóa là:
    4 8
    Đã được chỉnh sửa lần cuối bởi shinichi_haha : 27-03-2007 lúc 09:03 PM.
    mson

  2. #2
    Ngày gia nhập
    02 2007
    Nơi ở
    TP.HCM - dưới cầu SG
    Bài viết
    12

    Code:
    void xoachinhphuong(int a[],int &n)
    {
      for(int j=0;j<n;j++)
        if(ktchinhphuong(a[j]))
          xoavitri(a,n,j);
      xuat(a,n);
    }
    Lỗi là do vòng lặp for: Trường hợp a[j] là chính phương, a[j+1] ko chính phương thì bạn xóa phần tử a[j], sau đó j tăng lên 1 => như vậy phần tử ko chính phương ngay kế đã ko được kiểm tra vì nó đã bị chép đè về phía trước 1 vị trí.
    2 chú ý nho nhỏ:
    hàm xoavitri(): chỉ số i =k -> n-2 bởi vì ko tồn tại a[i+1] ứng với n-1.
    hàm nhap(): ko thay đổi gì giá trị n => chỉ cần truyền tham trị n là đủ.
    Thân!
    Nơi nào khiến anh dừng bước, nơi đó có em.

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    í mà số chính phương là số ntn quên nhỉ >

  4. #4
    No Avatar
    javi Khách

    để nghị viết code rõ ràng, có tab, nhìn một đống thế kia ai muốn đọc

    Số chính phương là số bình phương của số khác. 4, 9, 25 ...

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

  1. Code C++ Trí tuệ nhân tạo : Thuật toán vương hạo về logic mệnh đề
    Gửi bởi langman trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 02-10-2016, 04:11 PM
  2. Tư duy trừu tượng và tư duy logic trong lập trình khác nhau như thế nào?
    Gửi bởi datinh_o0o7 trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 5
    Bài viết cuối: 21-05-2012, 10:29 PM
  3. 2 câu đố logic trong bài test xin việc...
    Gửi bởi OWickedFox trong diễn đàn Giải trí - Thư giãn
    Trả lời: 7
    Bài viết cuối: 05-08-2009, 04:27 PM
  4. Logic trong CNTT
    Gửi bởi DKhanh trong diễn đàn Giải trí - Thư giãn
    Trả lời: 6
    Bài viết cuối: 21-03-2009, 11:39 AM
  5. xin tài liệu về logic mệnh đề& logic vị từ
    Gửi bởi nthung trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 4
    Bài viết cuối: 07-02-2009, 09:30 AM

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