PDA

View Full Version : نمیدونم چرا درست اجرا نمیشه



mohammady2
پنج شنبه 23 آبان 1387, 15:25 عصر
برنامه ای باید بنویسم که تشخیص بده عدد کامله یا نه.
نمیدونم چرا درست اجرا نمیشه

#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


int IsComplet(char *s)
{int sum=0,n;
n=atoi(s);
div_t t;
for (int i=0;i<n;i++)
{t=div(n,i);
if (t.rem==0)
{

sum+=i;


}

if (sum==1 || sum==n+1)
return 0;}
sum= 0;
return 1;
}

void main()
{ int n;
char s[400];

clrscr();
printf("please enter your num : ");
gets(s);

if (IsComplet(s))
printf("yes your num is complet");
else{
printf("no .sorry that num is not complet");
getch(); }
getch();

}

A_Salimi
پنج شنبه 23 آبان 1387, 19:43 عصر
فکر میکنم در این خط داری عدد رو بر صفر تقسیم میکنی :




t=div(n,i);


در حلقه for مقدار اولیه i را از صفر تغییر بدید.

mohammady2
پنج شنبه 23 آبان 1387, 23:34 عصر
متشکرم .جوابتون بخش مهمی از اشکال رو رفع کرد به خاطر همون مورد بود که من در خروجی چیزی نمیدیدم . اما حالا مثل اینکه الگوریتم مشکل داره هر عددی میزنم میگه کامل نیست . الگوریتم بالا رو یه ویرایش کوچیک کردم . لطف کنین چک کنید . ممنون


#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


int IsComplet(char *s)
{int sum=0,n;
n=atoi(s);
div_t t;
for (int i=1;i<n;i++)
{
t=div(n,i);
if (t.rem==0)
{

sum+=i;


}

if (sum==1 )
return 0;
else
return 1;}

}

void main()
{ int n;
char s[400];

clrscr();
printf("please enter your num : ");
gets(s);

if (IsComplet(s))
printf("yes your num is complet");
else
printf("no .sorry that num is not complet");
getch();


}

A_Salimi
جمعه 24 آبان 1387, 12:14 عصر
بهتره اول تعریف عدد کامل رو بگید . عدد کامل چه عددیه ؟

و در ضمن تابع IsComplet ایرادی که داره اینه که در حلقه for مرتبا شما شرط را چک میکنید و عددی را
برمیگردانید که درست به نظر نمیرسد .
ضمنا چه ضرورتی دارد که h. Graphicsرا include می کنید ؟

Salar Ashgi
جمعه 24 آبان 1387, 13:55 عصر
سلام . عدد کامل عددی است که مجموع مقسوم علیه های آن از 1 تا خود عدد برابر خود

عدد شود !!!!

مثل : 6 { 1و2و3 } / 28 { 1و2و4و7و14 } و ....

شما این بررسی که آیا مجموع مقسوم علیه ها برابر خود عدد است یا خیر را باید در خارج

حلقه و بعد از اینکه همه مقسوم علیه ها پیدا شدند انجام دهید !!!

در کد زیر شما باید چک کنید که sum برابر خود عدد است یا خیر و نه اینکه sum را با 1

مقایسه کنید !!!!


if (sum==1 )

موفق و پیروز باشید !!!!

mehr64
جمعه 24 آبان 1387, 15:15 عصر
salam
jayi ke sum ro chek mikardi eshtebah bud
avalan bayad dasture if biroone for bashe
dovoman bayad meghdare sum ro ba n moghayese koni
tu injur mavaghe ejraye step be step ba kelide F7 komake khubi hastesh
az menoye option gozineye watch ham mitune taghirate online moteghayer ha ro bebini
bye

#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

int IsComplet(char *s)
{int sum=0,n;
n=atoi(s);
div_t t;
for (int i=1;i<n;i++)
{
t=div(n,i);
if (t.rem==0)
{
sum+=i;

}
}
if (sum==n )
return 1;
else
return 0;}

void main()
{ int n;
char s[400];
clrscr();
printf("please enter your num : ");
gets(s);
if (IsComplet(s))
printf("yes your num is complet");
else
printf("no .sorry that num is not complet");
getch();

}

mehr64
جمعه 24 آبان 1387, 15:40 عصر
سلام من برنامه MAZE رو دارم می خواستم UPLOAD کنم ممنون می شم بهم راهشو نشون بدین
شاید بچه ها بتونن استفاده کنن
بای

mohammady2
جمعه 24 آبان 1387, 23:12 عصر
salam
jayi ke sum ro chek mikardi eshtebah bud
avalan bayad dasture if biroone for bashe
dovoman bayad meghdare sum ro ba n moghayese koni
tu injur mavaghe ejraye step be step ba kelide F7 komake khubi hastesh
az menoye option gozineye watch ham mitune taghirate online moteghayer ha ro bebini
bye




سلام .مرسی از نظرتون خودم دیشب اشکالشو در اوردم گفتم بزارم بقیه هم استفاده کنند
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


int IsComplet(char *s)
{ long int sum=0,n;
n=atoi(s);
div_t t;
for (int i=1;i<n;i++)
{
t=div(n,i);
if (t.rem==0)
sum+=i;

}

if (sum==1 )
return 1;
else
return 0;

}

void main()
{ long int n;
char s[4000];

clrscr();
printf("please enter your num : ");
gets(s);
n=atoi(s);
if (n==1)
printf("one.******");
else
if (n==0)
printf("zero .is not complet");
else
if (IsComplet(s))
printf("yes.this num is complet");
else
printf("no .sorry that num is not complet");
getch();


}

mohammady2
جمعه 24 آبان 1387, 23:19 عصر
دلیل اینکه من SUM رو با یک مقایسه میکنم : عدد اول عددیه که جز بر خودش و یک بر چیز دیگه تقسیم نشه همچین عددی حالا اگر در یک حلقه به تعداد خودش با تمام اعداد قبل از خودش ( و نه برابر با خودش ) مقایسه بشه اگر به هیچ کدوم تقسیم نشه فقط این بین یک میمونه که عدد بر اون بخش پذیر بوده و توی SUM رفته .پس SUM یک یعنی اوله .درسته!

Salar Ashgi
شنبه 25 آبان 1387, 23:06 عصر
دوست عزیز شما گفتی :



برنامه ای باید بنویسم که تشخیص بده عدد کامله یا نه

بعد الان میگی برنامه تشخیص بده عدد اول است یا خیر !!!

عدد اول یه چیزه و عدد کامل چیزی دیگر !!! نمیدونم منظورتون کدوم هستش ؟؟؟

mohammady2
دوشنبه 27 آبان 1387, 23:09 عصر
شرمنده همون عدد کامل .اشتباه لپی بود