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

Đề tài: Số hoàn thiện lớn nhất trong mảng 1 chiều. Giúp mình sửa lỗi???

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

    Mặc định Số hoàn thiện lớn nhất trong mảng 1 chiều. Giúp mình sửa lỗi???

    --> đề là xuất hoàn thiện Nhỏ Nhất nha mọi người, tớ gõ lộn cái title

    Các bạn giúp tớ fix bài này, ko bik nó sai chỗ nào nữa, khi mình nhập phần tử thứ nhất là giá trị 0, thì kết quả là HTNN=0 (mặc dù 0 không phải số HT)

    Code:
    // Bai152.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include<stdio.h>
    #include<conio.h>
    
    void Nhap(int a[], int &n)
    {
    	printf("Nhap so luong phan tu trong mang: ");
    	scanf("%d",&n);
    	for(int i=0; i<n; i++)
    	{
    		printf("\nNhap a[%d]: ",i);
    		scanf("%d",&a[i]);
    	}
    }
    
    void Xuat(int a[], int n)
    {
    	printf("\nMang da nhap la:");
    	for(int i=0; i<n; i++)
    		printf("%4d",a[i]);
    }
    
    int ktht(int n)
    {
    	int s=0;
    	for (int i=1; i<n; i++)
    		if(n%i==0)
    			s=s+i;
    	if(s==n)
    		return 1;
    	return 0;
    }
    
    int HoanThienDauTien(int a[], int n)
    {
    	for(int i=0; i<n; i++)
    		if(ktht(a[i])==1)
    			return a[i];
    
    	return 0;
    }
    
    int HoanThienNhoNhat(int a[], int n)
    {
    	int lc=HoanThienDauTien(a,n);
    	if (lc==0)
    		return 0;
    	for(int i=0; i<n; i++)
    		if(ktht(a[i])==1)
    		{
    			if(a[i]<lc)
    				lc=a[i];
    		}
    	return lc;
    }
    
    void main()
    {
    	int Mang[100];
    	int n;
    	printf("Chuong trinh tim so hoan thien nho nhat trong mang 1 chieu so nguyen\n\n\n");
    	Nhap(Mang,n);
    	Xuat(Mang,n);
    	printf("\n\nSo hoan thien dau tien la: %4d",HoanThienDauTien(Mang,n));
    	printf("\n\nSo hoan thien nho nhat la: %4d",HoanThienNhoNhat(Mang,n));
    	getch();
    	return;
    }
    Đã được chỉnh sửa lần cuối bởi bk7million : 29-05-2009 lúc 12:00 AM. Lý do: sai chính tả

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

    bạn thêm 1 câu kiểm tra vào hàm này là ok
    int ktht(int n)
    {
    if (n==0) return 0;
    int s=0;
    for (int i=1; i<n; i++)
    if(n%i==0)
    s=s+i;
    if(s==n)
    return 1;
    return 0;

    }

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

  1. Tìm phần tử nhỏ nhất trong mảng 1 chiều.....giúp mình tìm lỗi
    Gửi bởi cnf_cntt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 26-02-2011, 09:14 PM
  2. Kỹ thuật C Độ rộng tối thiểu trong C/C++, giúp mình
    Gửi bởi tuant2n trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 16-10-2010, 07:15 PM
  3. Lập trình C++0x Lỗi khi cấp phát động và nhập giá trị cho mảng 2 chiều cần anh em chỉ giúp!!!
    Gửi bởi linh_060 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 31-07-2010, 11:58 PM
  4. Nhập vào mảng một chiều,xuất ra màn hình giúp với
    Gửi bởi phanvanngoc 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: 30-05-2010, 12:22 PM
  5. Hoàn thiện Class cộng, trừ, nhân, chia phân số.
    Gửi bởi hellboy1088 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 27-10-2008, 10:43 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