2016-04-01 13 views
-6

Kullanıcı, klavyeden n sayıları koyar ve aralarında, en farklı rakamı olan sayıyı bulmalıyım.C program numarasını en farklı rakamlarla bulmak için

Örnek: 123

numarasını girin: 12

numarasını girin:

numarasını girin 5555

en farklı haneli numara 123 (3 farklı hane). Sorun şu ki, vektörleri veya dizileri veya başka bir şeyi kullanmamam gereken bir durumdur. Sadece döngüleri kullanmalıyım ve cümleleri varsa. Belirli bir sayıdaki rakam sayısını nasıl bulacağımı biliyorum, ancak bunların hepsini farklı sayıların sayısını bulmak için nasıl karşılaştırmalıyım?

+0

rapor takibi numaralarını girer ve sadece içinde durum bitlerini kullanarak en basamak –

+0

olan bir sayı tutmak “int”, bu bir dizi (bit) olarak kabul edilmezse. Örneğin, 5'lik basamak için, eğer bit 5 henüz ayarlanmamışsa, rakam sayısını artırın. Sonra bit 5'i ayarlayın. –

+0

Hepsini karşılaştırmanıza gerek yok. Sadece en fazla rakamı olan bir değişkene ihtiyacınız var. Her bir sayıyı okuduktan sonra, önceki maksimumdan daha fazla basamağa sahip olup olmadığını test edin. Eğer öyleyse, değişkeni değiştirirsiniz ve bir diğerini karşılaştırırken kullanırsınız. – Barmar

cevap

-2

En kolay yol, olası her basamaktan (0 - 9 arası) yineleme yapmak ve orada olup olmadığına bakmaktır. Böyle

şey bir dizi benzersiz basamak belirlemek için: kullanıcı olarak bunlardan

int FindNumberDigits(int number) { 
    int uniqueDigits=0; 
    for(int i=0;i<10;++i) { 
     int numberTemp=number; 
     while(numberTemp) { 
      if(numberTemp%10 == i) { 
       ++uniqueDigits; 
       break; 
      } 
      numberTemp/=10; 
     } 
    } 
    return uniqueDigits; 
} 
+0

Teşekkür ederiz! Sonunda birisi aradığım şeyi anladı. –

+0

Not: Tüm negatif sayılarla başarısız. Köşe durumu hatası: 'FindNumberDigits (0)'. – chux

+0

Ve çok karmaşık, yuvalanmış bir döngü gerekli değildir. –

İlgili konular