# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها > سوال: الگوریتم پیدا کردن تعداد رقم های یک عدد

## amir_grdo

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

----------


## Salar Ashgi

سلام ، دوست عزیز ، برای اینکار 3 راه وجود داره !!!!

1) روش بازگشتی  2) یک فرمول ریاضی         3) روش حلقه های تکرار

===============================================

1) روش بازگشت : این روش میگه که ، تعداد ارقام هر عدد برابر است با ، تعداد ارقام خارج

قسمت تقسیم آن عدد بر 10 به علاوه یک !!

کد سی پلاس پلاس :

int tedad(int n){
if(n<10)
return 1;
else
return 1+tedad(n/10);
}

===============================================

2) فرمول ریاضی : یک فرمول ریاضی برای تعداد ارقام وجود داره :



# 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

خیلی ممنون از توضیح کامل و مفیدتون.
ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟

----------


## Salar Ashgi

> خیلی ممنون از توضیح کامل و مفیدتون.
> ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟


=============================

هر 3 کد تست شده ، و کاملا درست است ، من اشکالی نمی بینم ، داخل While یعنی

تا زمانیکه n  مخالف صفر است !!!

اگه باز توضیحی نیاز بود ، در خدمتم !!!

----------


## amir_grdo

من متوجه نشدم n/=10 یعنی چی؟

----------


## اوبالیت به بو

> من متوجه نشدم n/=10 یعنی چی؟


يعني:
n:= n /10;

----------


## Salar Ashgi

> من متوجه نشدم n/=10 یعنی چی؟


===============================================

سلام ، به این عملگر ها ، عملگرهای جایگزینی گفته میشود ، n/=10  ، یعنی n را بر 10 

تقسیم کرده ، و خارج قسمت تقسیم در n قرار می گیرد !!! و برای سایر عملگرها (+و - و*) 

نیز اینگونه است !!!

----------


## mahdi.kheibari

سلام دوست عزیز خسته نباشید میتوانید همین مسئله را با زبان #C کد نویسی و پیاده سازی کنید؟ ممنون :قلب:  :قلب:

----------


## m.m.dadzeh

استاد میشه این کد را به ربان پایتون بنویسید.

----------

