PDA

View Full Version : اشکال در برنامه نزدیک ترین عدد پالیددرام



iranbaby
شنبه 24 فروردین 1387, 15:44 عصر
برنامه ای می خواهیم بنویسیم به این شرح مشکلش کجاست :
برنامه ای بنویسید که یک از ورودی گرفته بررسی کند آیا پالیددرام است یا نه ؟
مثلا : 1441 - 654321123456 ، یک عدد پالیددرام است که اگر از چپ به راست یا راست به چپ نوشته شود یکی می باشد
"این برنامه من نزدیک ترین عدد پالیددرام رو نشان میده"



#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main ()
{
int k , m , z ;
clrscr () ;
printf ("Enter a Number :\n") ;
scanf ("%d" , &k ) ;
do
{
m=k%10 ;
k=k/10
if (z==k) printf ("%d" , z ) ;
}while ( k!=0 ) ;
getch () ;
return 0 ;
}

iranbaby
شنبه 24 فروردین 1387, 15:48 عصر
برنامه دوم هم مشکلش اینه :
برنامه ای بنویسید که حاصل عبارت زیر را محاسبه کند :
دو عدد m و n را بگیرد و n!/m!*(n-m)!p راحساب کند
p نیست ، فقط بخاطر ین نوشتم که درست بتونین بخونین




#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main ()
{
int i , j , k , n , m , q , a , z , w , s ;
clrscr () ;
printf ("Enter 2 Number : [ A Enter B ]\n") ;
scanf ("%d%d" , &n , & m ) ;
for ( i=1 ; i<=n ; i++ )
q=q*i ;
for ( j=1 ; j<=m ; j++ )
a=a*j ;
z=n-m ;
for ( k=1 ; k<=z , k++ )
w=w*k ;
s=q/a*w ;
printf ("%ld" , s ) ;
getch () ;
return 0 ;
}

MRHagh
شنبه 24 فروردین 1387, 16:13 عصر
در مورد سوال اول , منظور شما این است که برنامه ای میخواهید بنویسید که تشخیص بده عددی که از ورودی گرفته شده , متقارن (یا همون پالیندرام) هست یا نه ... درسته ؟!!
اگر اینطور است , شما بهتر است عدد را بصورت رشته یا آرایه بگیرید و بعد نصفش کنید (آرایه یا رشته را نصف کنید) و با هم مقایسه کنید . هر عددی (یا رشته ای ) که هر دو نصفش با هم برابر بود , متقارن (یا پالیندرام) است . کد زیر این خاصیت را برای انواع رشته ها (شامل هر نوع کاراکتر) بررسی میکند و در خروجی پیغام مناسب چاپ میکند :

#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
//*** Function prototype ***
void input (char*);
void analysis (char*);
void print(int, char*);
//*** Main ***
void main ()
{
char *str;
clrscr();
input(str);
analysis(str);
getch();
}
//*** input ***
void input (char *str)
{
cout<<"Enter a string :\n ";
gets(str);
}
//*** analysis ***
void analysis (char *str)
{
int len=strlen(str);
if (!(len%2))
for (int i=0, j=len-1; i<j; i++, j--)
{
if (str[i]==str[j])
continue;
else
{
print(0, str);
return;
}
}
else
{
for (int i=0, j=len-1; i<j-1; i++, j--)
{
if (str[i]==str[j])
continue;
else
{
print(0, str);
return;
}
}
}
print(1, str);
}
//*** print ***
void print (int flag, char *str)
{
if (flag)
cout<<"\nYes...! The "<<"\""<<str<<"\" string is concurrent.";
else
cout<<"\nNo...! Found an asymmetry in \""<<str<<"\" string.";
}
برنامه دوم را هم به شکل زیر اصلاح کردم :

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
/*Write This Software By Mostafa Javadi Moghaddam For Mrs.Haghighi*/
int main ()
{
int i , j , k , n , m , q=1 , a=1 , z=1 , w=1 , s ;
clrscr () ;
printf ("Enter 2 Number : [ A Enter B ]\n") ;
scanf ("%d%d" , &n , & m ) ;
for ( i=1 ; i<=n ; i++ )
q=q*i ;
for ( j=1 ; j<=m ; j++ )
a=a*j ;
z=n-m ;
for ( k=1 ; k<=z ; k++ )
w=w*k ;
s=q/a*w ;
printf ("%d" , s ) ;
getch () ;
return 0 ;
}
باید حواستون باشه متغیرهای بدون مقدار معتبر را وارد محاسبات ریاضی نکنید.

iranbaby
یک شنبه 25 فروردین 1387, 15:49 عصر
آقا ممنون . سوال اول رو درست متوجه شدی ولی این بنده خدا گفته باید فقط با حلقه های شرطی این برنامه اول رو بنویسید ، منم الان مشکلم همینه که با حلقه چه جوری بنویسمش
ببین با حلقه ها می تونی کاری انجام بدی روشون یا نه ؟
" در ضمن برای برنامه 2 هم دستت درد نکنه ممنون "

MRHagh
دوشنبه 26 فروردین 1387, 08:32 صبح
تابع تشخیص پالیندرام با استفاده از حلقه . این تابع پس از بررسی خصوصیت پالیندرام , پیغام مناسب (برای چاپ در خروجی) برمیگرداند :

#include <math.h>

char* PalindromeChecker(double num)
{
int digit1, digit2, temp1=num, temp2=num;
for(int i=0; i<(int)((log10(num)+1)/2); i++)
{
digit1=temp1%10;
temp1/=10;
for(int j=((int)log10(num)+1)-i; j>=1; j--)
{
digit2=temp2%10;
temp2/=10;
}
temp2=num;
if(digit1!=digit2)
return " is not palindrome";
}
return " is Palindrome";
}
تابع را در برنامه paste کنید و عددی که از ورودی میگیرید به آن ارسال کنید و خروجی تابع را چاپ کنید .