PDA

View Full Version : سوال: الگوریتم پیدا کردن تعداد رقم های یک عدد



amir_grdo
جمعه 22 شهریور 1387, 04:12 صبح
اگه میشه یه الگوریتم بدید که یک عدد رو بگیره و مشخص کنه این عدد چند رقمی هست.

Salar Ashgi
جمعه 22 شهریور 1387, 09:36 صبح
سلام ، دوست عزیز ، برای اینکار 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, 13:41 عصر
خیلی ممنون از توضیح کامل و مفیدتون.
ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟

Salar Ashgi
جمعه 22 شهریور 1387, 14:36 عصر
خیلی ممنون از توضیح کامل و مفیدتون.
ولی در روش سوم کدی که داخل while نوشتین اشتباه نیست؟

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

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

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

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

amir_grdo
شنبه 23 شهریور 1387, 00:31 صبح
من متوجه نشدم n/=10 یعنی چی؟

اوبالیت به بو
شنبه 23 شهریور 1387, 01:11 صبح
من متوجه نشدم n/=10 یعنی چی؟

يعني:

n:= n /10;

Salar Ashgi
شنبه 23 شهریور 1387, 08:57 صبح
من متوجه نشدم n/=10 یعنی چی؟

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

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

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

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

mahdi.kheibari
شنبه 15 تیر 1398, 13:50 عصر
سلام دوست عزیز خسته نباشید میتوانید همین مسئله را با زبان #C کد نویسی و پیاده سازی کنید؟ ممنون:قلب::قلب:

m.m.dadzeh
چهارشنبه 25 تیر 1399, 11:16 صبح
استاد میشه این کد را به ربان پایتون بنویسید.