مقسوم علیه

Learn65

Member
برنامه ای بنویسید که تعدادی عدد صحیح از ورودی دریافت نموده، مقسوم علیه آنها را چاپ کند.
از دوستان برنامه نویس خواهشمندم که به من بگن کجای کار ایراد داره؟؟؟؟؟؟

# include<conio.h>
# include<stdio.h>
main()
{
int num;
int i,m=0;
clrscr();
printf("enter Number: ");
scanf("%d",&num);
while(num=!0);
{

m++;
i=num%m;
if (i==0)
{
printf("\n Denominator =%d",m);
}
scanf("%d",&num);
}

getch();
return 0;
 

the_king

مدیرکل انجمن
1) متغیر m قراره برای هر کدام از اعداد num ای که وارد می شود، مقسوم علیه های مشترک را پیدا کند،
پس بایستی برای همه آنها از 0 آغاز می گردید ولی در برنامه شما، صرفا آنرا در ابتدای کد و فقط برای
اولین عدد num برابر 0 قرار دادید، در حالی که بعد از دریافت هر عدد num بایستی آنرا مجددا صفر می کردید.

2) هیچ حلقه ای برای اینکه مشخص شود که m تا چه مقداری افزایش بیابد ایجاد نکردید، در واقع برنامه شما
یک حلقه تکرار کم دارد، زیرا به محض اینکه یک مقسوم علیه را نمایش دادید، فورا به سراغ دریافت عدد
num بعدی رفتید که صحیح نیست. بایستی افزایش مقدار m تا زمانی که m از num بزرگتر نشده، ادامه یابد.

لطفا کدهایتان را با استفاده از دکمه (
code.gif
) در داخل پست تان در میان تگ های [CODE] قرار دهید تا اینطور
راست به چپ و به هم ریخته نمایش داده نشود.

کمی برنامه تان را دستکاری کردم، مثلا چاپ تمامی مقسوم علیه ها در یک سطر چاپ می شوند و صرفا یک
کد برای دریافت عدد num وجود دارد. در حلقه do while اصلی برنامه، بجای true از عدد 1 استفاده کردم، زیرا
در بعضی از کامپایلر های زبان ++C عبارت true بصورت استاندارد تعریف نشده است و شناسایی نمی شود.

کد:
# include<conio.h>
# include<stdio.h>

int main(int argc, char* argv[])
{
	int num;
	int i, m;
	clrscr();
	do
	{
		printf("\n enter Number (0 for exit) : ");
		scanf("%d", &num);
		if (num == 0)
			break;
		printf("\n Denominators = 1");
		for (m = 2; m <= num; m++)
		{
			i = num % m;
			if (i == 0)
				printf(",%d", m);
		}
	} while (1);
	printf("Please enter any key to continue.");
	getch();
	return 0;
}
 

جدیدترین ارسال ها

بالا