2016-05-28 2 views
-4

たとえば、42556です。数字の桁数がわからない場合は、最初の桁をどのようにして決定しますか?私は私に合ったアルゴリズムを見つけることができませんでした!数字の桁数を知らずに数字の最初の数字を判別するにはどうすればいいですか?C++

int firstdigit(int n) { 
      int x = n; 
      while(n != 0) { 
      x = n%10; 
      n = n/10; 

      } 
     return x; 
    } 
+0

@MikeDunlaveyを使用して整数の形を得ることができ、私は最後の数を決定する方法S(6) –

+0

@MikeDunlaveyはあなたに与えていないということ最後の数字、この場合は6? – nicomp

+1

**最後に**タイトルでは、**最初の**は質問=即時downvote。 – LogicStuff

答えて

1

aと仮定すると、入力番号です。

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() { 
    long a = 42556; 
    long num; 
    num=floor(log10(a))+1; 
    //cout<<num<<" "<<"\n"; //prints the number of digits in the number 

    cout<<a/(int)pow(10,num-1)<<"\n"; //prints the first digit 
    cout<<a%10<<"\n";     //prints the last digit 

    return 0; 
} 

ライブデモhere

+0

私の質問に答えるためのすべてのおかげで! –

+1

私はstackinオーバーフローで多くの質問latleyをanswerinfg見た –

1

の反復除算(私は42556で4を決定することを意味します)あなたが最後の桁に達した10まで:

int lastDigit(int n) { 
    n = abs(n); // Handle negative numbers 
    int ret = n; 
    while (n > 0) { 
     ret = n % 10; 
     n /= 10; 
    } 
    return ret; 
} 
+0

数値が基数10であると仮定します。 –

+0

@nicomp thx man –

0

これを試してみてくださいになるまで10によって

+0

ありがとうございます。 –

+0

@DragosStamatin:スタックオーバーフローに感謝する良い方法があります。あなたは答えをupvote/acceptすることができます –

+0

@drescherjm:これを指摘してくれてありがとう。それは私が –

1

あなたはでそれを割るに保つことができる:結果が10未満

num = 42556 
while num > 9 
    num = num/10 
1

すべての回答は、あなたが整数であると仮定しています。しかし、一般的に、あなたが最初の関数<cmath>からfloor、私は思っすなわち

#include <cmath> 
int getlastdigit(double number) 
{ 
    long long n = (long long)floor(number); 
    while(n > 9) 
     n /= 10; 
    return n; 
} 
関連する問題