View Full Version : سوال: الگوریتم پیدا کردن تعداد رقم های یک عدد
amir_grdo
جمعه 22 شهریور 1387, 05:42 قبل از ظهر
اگه میشه یه الگوریتم بدید که یک عدد رو بگیره و مشخص کنه این عدد چند رقمی هست.
salar_cpp_cs
جمعه 22 شهریور 1387, 11:06 قبل از ظهر
سلام ، دوست عزیز ، برای اینکار 3 راه وجود داره !!!!
1) روش بازگشتی 2) یک فرمول ریاضی 3) روش حلقه های تکرار
===============================================
1) روش بازگشت : این روش میگه که ، تعداد ارقام هر عدد برابر است با ، تعداد ارقام خارج
قسمت تقسیم آن عدد بر 10 به علاوه یک !!
کد سی پلاس پلاس :
int tedad(int n){
if(n<10)
return 1;
else
return 1+tedad(n/10);
}
===============================================
2) فرمول ریاضی : یک فرمول ریاضی برای تعداد ارقام وجود داره :
http://i38.tinypic.com/ml08ib.jpg
# include <iostream>
# include <conio>
# include <math>
int main()
{
int k,a;
cin>>k;
a=floor(log(k)/log(10))+1;
cout<<a;
getch();
}
================================================
3- روش حلقه های تکرار :
#include <iostream>
#include <conio>
int main(){
int n,k=0;
cin>>n;
while(n!=0){
n/=10;
k++;
}
cout<<k;
getch();
}
===============
موفق و پیروز باشید !!!!
amir_grdo
جمعه 22 شهریور 1387, 03:11 بعد از ظهر
خیلی ممنون از توضیح کامل و مفیدتون.
ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟
salar_cpp_cs
جمعه 22 شهریور 1387, 04:06 بعد از ظهر
خیلی ممنون از توضیح کامل و مفیدتون.
ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟
=============================
هر 3 کد تست شده ، و کاملا درست است ، من اشکالی نمی بینم ، داخل While یعنی
تا زمانیکه n مخالف صفر است !!!
اگه باز توضیحی نیاز بود ، در خدمتم !!!
amir_grdo
شنبه 23 شهریور 1387, 02:01 قبل از ظهر
من متوجه نشدم n/=10 یعنی چی؟
obalitjoOon
شنبه 23 شهریور 1387, 02:41 قبل از ظهر
من متوجه نشدم n/=10 یعنی چی؟
يعني:
n:= n /10;
salar_cpp_cs
شنبه 23 شهریور 1387, 10:27 قبل از ظهر
من متوجه نشدم n/=10 یعنی چی؟
===============================================
سلام ، به این عملگر ها ، عملگرهای جایگزینی گفته میشود ، n/=10 ، یعنی n را بر 10
تقسیم کرده ، و خارج قسمت تقسیم در n قرار می گیرد !!! و برای سایر عملگرها (+و - و*)
نیز اینگونه است !!!
این انجمن با استفاده از vBulletin نسخه 3.7.1 کار می کند
تمامی حقوق سیستم این انجمن متعلق به شرکت Jelsoft Enterprises Ltd می باشد.