PDA

View Full Version : اعداد پالیندروم



vapa_71
شنبه 02 آذر 1392, 21:22 عصر
سلام دوستان خسته نباشید!
در مورد سوال زیر اگه میشه منو راهنمایی کنید (C++)
برنامه ای بنویسید که اعداد 4 رقمی پالیندروم را بدست آورد
1- اعداد پالیندروم اعدادی هستند که با مغلوب خودشون برابرند مثل 1221
2- آیا حل این مسئله با دانستن حلقه for و while امکان پذیر هست ؟

storm_saeed
شنبه 02 آذر 1392, 23:16 عصر
2 -بله کافی هست .
اول و اخر عدد رو با استفاده از / بدست بیار بعد چک کن با هم برارند یا نه
یه سری متغیر تعریف کنه که یکیش از صفر باشه یکیش از n-1 بعد به تعداد اون عدد رو تقسیم کن بعد چک کن با هم بربرن بعد متغیر اولت ++ و متغیر دومت -- تا جایی این کارو کن که متغیر دوم>متغیر اول

مثلا 11211 ابتدا 11211 صفر بار تقسیم به 10 به 10 میشه و عدد %10 رو بریز یه جا مثلا A(مقدارش 1میشه) بعد دوباره 4 بار / 10 کن و %10 رو بریز تو B بعد چون A==B هست (1و1) این کارو ادامه میدی
# n تعداد رقم عددت هست

vapa_71
یک شنبه 03 آذر 1392, 21:26 عصر
من این برنامه رو نوشتم اما جواب نمیده اشکالش کجاست؟!

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n, num, digit, i=1001, rev = 0;
for(i=1000;i<10000;i++)
{
n = i;
num = i;
do
{
digit = num%10;
rev = (rev*10) + digit;
num = num/10;
}while (num!=0);
if (n==rev)
cout << rev << endl;
}

_getch();
return 0;
}

vapa_71
یک شنبه 03 آذر 1392, 21:27 عصر
شرط if رو که بر میدارم یک سری اعداد عجیب بدست میاد

aminsaeedi
یک شنبه 03 آذر 1392, 23:21 عصر
دوست عزیز
مشکل برنامه شما اینه که متغیر rev در حلقه صفر نمیشه و همیشه مقدار قبلی داره که اگر حلقه را بردارید و با یک عدد از پیش تعیین شده شروع کنید برنامه شما مشکلی نخواهد داشت

Faraz Mehraien
دوشنبه 04 آذر 1392, 08:01 صبح
فکر کنم.اگر تو تعریف متغیر ها یه متغیر int به نام هرچی می خوای بذاری و مساوی n بذاری و اونوقت در if به جای n از اون استفاده کنی دزست بشه.
چون من خودم یه برنامه نوشته بودم که مغلوب را نمایش بده و اگر با خودش برابر بود بگه که با کمک دوستان همین سایت و با راهنمایی بالا حل شد.امیدوارم مفید بوده باشم

مصطفی ساتکی
دوشنبه 04 آذر 1392, 10:48 صبح
هم با خود عدد می تونید و هم به صورت رشته ای در اینجا (http://www.7khatcode.com/123/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%B9%D8%AF%D8%AF-palindrome)توضیح دادم.

vapa_71
دوشنبه 04 آذر 1392, 13:29 عصر
دوست عزیز
مشکل برنامه شما اینه که متغیر rev در حلقه صفر نمیشه و همیشه مقدار قبلی داره که اگر حلقه را بردارید و با یک عدد از پیش تعیین شده شروع کنید برنامه شما مشکلی نخواهد داشت

جواب این دوستمون درست بود ممنونم
اینم جواب صحیح

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n, num, digit, i=1001, rev;
for(i=1000;i<10000;i++)
{
n = i;
num = i;
rev=0;
do
{
digit = num%10;
rev = (rev*10) + digit;
num = num/10;
}while (num!=0);
if (n==rev)
cout << rev << endl;
}

_getch();
return 0;
}