PDA

View Full Version : سوال: چطوری رقم صفر رو از یه عدد حذف کنم ؟



mamali-mohammad
چهارشنبه 02 آذر 1390, 23:34 عصر
سلام
من دارم یه برنامه مینویسم
تو این برنامه عدد صفر نباید به کار بره
حالا میخوایم اگه کاربر عدد 1025 رو وارد کرد ، خروجیش 125 باشه
یا مثلا اگه 301450 رو وارد کرد خروجیش 3145 باشه
چه باید کنم ؟
ممنون

mamali-mohammad
پنج شنبه 03 آذر 1390, 14:24 عصر
دوستان کمک می کنید ؟

ghasemweb
پنج شنبه 03 آذر 1390, 15:24 عصر
پیشنهاد من اینه که شما عدد رو به صورت رشته بگیری از نو string یا char به صورت آرایه بعدش با حلقه صفرها رو حذف کنی. من با سی مدتیه به هم زدم :بامزه: کامپایلرشو ندارم که کد بذارم واست. موفق باشید

mamali-mohammad
پنج شنبه 03 آذر 1390, 16:07 عصر
با ارایه نمیخوام باشه
با تابع هم نمیخوام باشه
میخوام کاملا ساده باشه

quiet_programmer
پنج شنبه 03 آذر 1390, 17:14 عصر
با سلام.


با ارایه نمیخوام باشه

میخوام کاملا ساده باشه

این دوتا با هم در تناقضن.

برای اینکه بدون استفاده از آرایه بخوای کد کنی کارت یکم سخت میشه.
1024 رو در نظر بگیر برای کد کردن حذف صفر بدون استفاده از آرایه باید 1024 رو تقسیم بر 10 کنی باقی مانده میشه 4 خارج قسمت 102. جالب بود؟ خوب 4 جداشد با 0 مقایسه کن. صفر نیست پس چون رقم اوله ضربدر 10 به توان صفر(صفر از کجا اومد؟ چون اولین رقم غیر صفر رو جدا کردیم پس یک منهای یک ) کنی میشه 4. تا اینجارو داشته باش. بعد میای خارج قسمت تقسیم قبل رو 102 هست رو دوباره به 10 تقسیم کن. خارج قسمت میشه 10 باقی مانده 2. 2 هم جدا شد با صفر مقایسه کن صفر نیست پس جون دومین رقمه 2 رو ضربدر عدد 10 به توان یک (یک از کجا اومد؟ چون دومین رقم غیر صفر رو جدا کردیم پس دو منهای یک) که میشه 20 بعد با عدد 4 جمعش میکنیم میشه 24. تا اینجا 24 رو داشته باش. بعد دوباره خارج قسمت تقسیم قبلی (یعنی عدد 10) رو به 10 تقسیم کن. باقی مانده 0 خارج قسمت 1. صفر هم جدا شد. حالا صفر رو با صفر مقایس کن. صفره!!
پس بیخیالش میشیم و کاری انجام نمیدیم. بعد خارج قسمت تقسیم قبلی (یعنی 1) رو به 10 تقسیم میکنیم. خارج قسمت میشه 0 و باقی مانده 1. باز یه رقم غیر صفر جدا شد. چون سومین رقم غیر صفر جدا شدست اونو ضربدر 10 به توان دو کن میشه 100 و با 24 جمع کن میشه 124!!!:متعجب: چون خارج قسمت تقسیم قبلی صفر شد کار تقسیم رو تموم میکنیم.

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

یاحق.
موفق باشید.

mamali-mohammad
پنج شنبه 03 آذر 1390, 19:05 عصر
ممنون داداش
اما باری عددهای دیگه چه کنم ؟
هر دفعه باید 10 به توان x رو زیاد کنم
میشه یه کد کوچولو بنویسی خودم کاملش می کنم
ممنون

mamali-mohammad
پنج شنبه 03 آذر 1390, 19:36 عصر
اینو نوشتم
جواب نمیده :

#include <conio.h>
#include <stdio.h>
int main()
{
int num=0,digit,sum=0,i,su;
while(1){
printf("Number:");
scanf("%d",&num);
printf("After:");
do{
digit = num%10;
i=1;
i += 1;
if(digit !=0)
su=digit^i;
sum += su;
num /= 10;
} while(num !=0);
printf("%d\n",sum);
sum=0;
}
return 0;
}

mamali-mohammad
جمعه 04 آذر 1390, 14:06 عصر
بلاخره نوشتمش
ممنون

elyass_bahrami
دوشنبه 20 فروردین 1397, 14:31 عصر
سلام دوستان
من تازه عضو شدم
همین سوال دوستمون رو دارم . چجوری میشه صفر های یک عدد رو حذف کرد البته داخل C++
تو نت درباره تبدیل string به int ی سری مطالبی خوندم اما متوجه نشدم

elyass_bahrami
یک شنبه 26 فروردین 1397, 17:11 عصر
سلام
من دارم یه برنامه مینویسم
تو این برنامه عدد صفر نباید به کار بره
حالا میخوایم اگه کاربر عدد 1025 رو وارد کرد ، خروجیش 125 باشه
یا مثلا اگه 301450 رو وارد کرد خروجیش 3145 باشه
چه باید کنم ؟
ممنون

سورس کدش برای c++
#include<iostream>
using namespace std;
int main()
{
int a;
int i,z,s,sum=0;
do
{
cout << "Enter a Integer Number: ";
cin >> a;
if (a > 0)
{
for (i = 2; i <= a; i++)
{
z = a%i;
s = a / i;
if (z == 0)
{
sum = sum + s;
}
}
if (sum == a)
cout << sum << " is a Perfect Number !" << endl;
else
cout << a << " Is not a Perfect Number !" << endl;
}
} while (a > 0);
system("pause");
}

تازه به توان ۲ هم میرسونه :-)