Chào mọi người, mình có chương trình xóa các số hoàn hảo trong mảng một chiều A gồm n phần tử và xuất ra lại mảng A sau khi xóa nhưng hàm xóa của mình thực chất chỉ là xuất lại các số không phải là số hoàn hảo còn mảng A thì lại giữ nguyên, có cách nào để xóa hẳn các số hoàn hảo trong mảng A không ạ?
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void nhapmang(char A[][100],int n)
{
for(int i=0;i<n;i++)
{
printf("Nhap phan tu A[%d]=",i);
scanf("%s",&A[i]);
}
}
void xuatmang(char A[][100],int n)
{
for(int i=0;i<n;i++)
{
printf(" %s ",A[i]);
}
}
int kttunhien(char *s)
{
int i=0;
while (i<strlen(s))
{
if(s[i]<'0'||s[i]>'9') return 0;
i++;
}
return 1;
}
int shh(int n)
{
int tg=0;
if(n<1) return 0;
for(int i=1;i<n;i++)
{
if(n%i==0) tg=tg+i;
}
if(n==tg) return 1;
else return 0;
}
void xoashh(char A[][100],int n)
{
int tg;
for(int i=0;i<n;i++)
{
if(kttunhien(A[i]))
{
tg=atoi(A[i]);
if(shh(tg)==0) printf(" %s ",A[i]);
}
else printf(" %s ",A[i]);
}
}
main()
{
char A[100][100];
int n;
printf("Nhap so phan tu trong mang n=");
scanf("%d",&n);
while(n<10)
{
printf("Nhap lai n>=10.");
printf("\nNhap so phan tu n=");
scanf("%d",&n);
}
nhapmang(A,n);
printf("Mang A la:");
xuatmang(A,n);
printf("\nMang A sau khi xoa cac so hoan hao la:");
xoashh(A,n);
getch();
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?