PDA

View Full Version : مبتدی: بررسی این کد ؟



vb8334
چهارشنبه 20 مرداد 1389, 22:32 عصر
با سلام به تمامی دوستان

دوستان من یه سوال داشتم زمانی که این کد رو اجرا میکنم این کد قراره یه عدد مثبت بگیره

مثلآ من عدد 40 رو وارد کردم که برنامه از 0 تا 40 باید بره وا عداد زوج و فرد رو جمع کنه ولی چرا

عددی که دادم بیشتر میره اینو میدونم که زمانی که عدد برابر 40 میشه دوباره جمع میکنه
ولی راه حلش چیه؟

راستی میشه انتهای حلقه z-=2; f-=3; رو قرار داد ولی به نظرتون بهتر از این نمیشه؟

یه چیز دیگه کدی هستش که بشه برنامه رو ببنده مثله کد End توی ویبی

اینم کد :




#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int n,i,z=0,f=0;
printf("Enter Your Number : ");
scanf("%d",&n);
if(n>0)
if(n%2==0)
{
for(i=0;i<=n;i++)
{

z+=2;
f+=3;

}
z-=2;
f-=3;

printf(" \n ********************************* \n ");
printf("Majmooe Adad zoj: %d \n ",z);
printf(" \n ********************************* \n ");
printf("Majmooe Adad Fard: %d \n ",f);
}
else
printf(" =====> Exit <====== \n ");
system("PAUSE");
return 0;
}


ممنون

drstrike
چهارشنبه 20 مرداد 1389, 23:31 عصر
مثلآ من عدد 40 رو وارد کردم که برنامه از 0 تا 40 باید بره وا عداد زوج و فرد رو جمع کنه ولی چرا

عددی که دادم بیشتر میره اینو میدونم که زمانی که عدد برابر 40 میشه دوباره جمع میکنه
ولی راه حلش چیه؟

سلام
دوست عزیز برنامه رو یه خورده قاطی نوشتی!
اون شرطی که باقیمانده عدد بر 2 رو چک می کنه باید داخا حلقه بزاری (البته به جای n باید i گذاشته بشه)
این اصلاح شده برنامه شماست:

#include <stdio.h>
#include <conio.h>

int main()
{
int n,i,z=0,f=0;
clrscr();
printf("Enter Your Number : ");
scanf("%d",&n);
for(i=1;i<=n;i++)
if(!(i%2))
z+=i;
else
f+=i;
printf("even sum= %d and odd sum= %d\n",z,f);
getch();
return 0;
}




یه چیز دیگه کدی هستش که بشه برنامه رو ببنده مثله کد End توی ویبی

تابع (exit(0 رو از هدر stdlib فراخوانی کن.

vb8334
چهارشنبه 20 مرداد 1389, 23:49 عصر
ممنون دوست عزیز

کد من درسته اون دستور شرطی که اول نوشتم برای اینکه ببینه عددی که وارد شده منفی و فرد نباشه
برای اینکه عددی که وارد میکنیم باید زوج باشه در ضمن کد من هم قرار اعداد فرد رو چاپ کنه هم زوج رو

ممنون

feree123
پنج شنبه 21 مرداد 1389, 02:25 صبح
با سلام به تمامی دوستان

دوستان من یه سوال داشتم زمانی که این کد رو اجرا میکنم این کد قراره یه عدد مثبت بگیره

مثلآ من عدد 40 رو وارد کردم که برنامه از 0 تا 40 باید بره وا عداد زوج و فرد رو جمع کنه ولی چرا

عددی که دادم بیشتر میره اینو میدونم که زمانی که عدد برابر 40 میشه دوباره جمع میکنه
ولی راه حلش چیه؟

راستی میشه انتهای حلقه z-=2; f-=3; رو قرار داد ولی به نظرتون بهتر از این نمیشه؟

یه چیز دیگه کدی هستش که بشه برنامه رو ببنده مثله کد End توی ویبی

اینم کد :




#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
int n,i,z=0,f=0;
printf("Enter Your Number : ");
scanf("%d",&n);
if(n>0)
if(n%2==0)
{
for(i=0;i<=n;i++)
{


z+=2;
f+=3;


}
z-=2;
f-=3;


printf(" \n ********************************* \n ");
printf("Majmooe Adad zoj: %d \n ",z);
printf(" \n ********************************* \n ");
printf("Majmooe Adad Fard: %d \n ",f);
}
else
printf(" =====> Exit <====== \n ");
system("PAUSE");
return 0;
}


ممنون



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




#include <stdio.h>
#include<iostream.h>
#include<conio.h>

int main ()
{
int n,i,z=0,f=0;
printf("Enter Your Number : ");
cin>>n;
if(n>0)
if(n%2==0)
{
for(i=1;i<=n;i++)
{


z+=2;
f+=3;


}
z-=2;
f-=3;


printf(" \n ********************************* \n ");
printf("Majmooe Adad zoj: %d \n ",z);
printf(" \n ********************************* \n ");
printf("Majmooe Adad Fard: %d \n ",f);
}
else
printf(" =====> Exit <====== \n ");
getch ();
return 0;
}

mehdimdp
جمعه 22 مرداد 1389, 14:17 عصر
مهمترین اشکال کد شما این بود که در حلقه ی FOR از شرط زیر استفاده کرده بودید:


for(i=0;i<=n;i++)

که این حلقه n+1 بار اجرا می شه
برای رفع اشکال می تونید به یکی از دو روش زیر عمل کنید:


for(i=1;i<=n;i++)

یا


for(i=0;i<n;i++)

andy_madadian
شنبه 23 مرداد 1389, 17:23 عصر
با سلام به تمامی دوستان

دوستان من یه سوال داشتم زمانی که این کد رو اجرا میکنم این کد قراره یه عدد مثبت بگیره

مثلآ من عدد 40 رو وارد کردم که برنامه از 0 تا 40 باید بره وا عداد زوج و فرد رو جمع کنه ولی چرا

عددی که دادم بیشتر میره اینو میدونم که زمانی که عدد برابر 40 میشه دوباره جمع میکنه
ولی راه حلش چیه؟

راستی میشه انتهای حلقه z-=2; f-=3; رو قرار داد ولی به نظرتون بهتر از این نمیشه؟

یه چیز دیگه کدی هستش که بشه برنامه رو ببنده مثله کد End توی ویبی

اینم کد :




#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
int n,i,z=0,f=0;
printf("Enter Your Number : ");
scanf("%d",&n);
if(n>0)
if(n%2==0)
{
for(i=0;i<=n;i++)
{


z+=2;
f+=3;


}
z-=2;
f-=3;


printf(" \n ********************************* \n ");
printf("Majmooe Adad zoj: %d \n ",z);
printf(" \n ********************************* \n ");
printf("Majmooe Adad Fard: %d \n ",f);
}
else
printf(" =====> Exit <====== \n ");
system("PAUSE");
return 0;
}


ممنون


با عرض معذرت
شما يا كد را به بدترين روش ممكن نوشتين يا اينكه صورت سوال را افتضاح بيان كردين.
برداشت من اينه كه مثلا براي عدد 40 دو تا جواب به ما بده يكي:

1+3+5+7+9+...+39

و يكي ديگه حاصل:

2+4+6+8+...+40







int f=0, z=0, n;
cin>>n;
for (i=1; i<=n; i++)
{
if (i%2==0) z++;
else f++;
}