Scientific Notation

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
small_ticket
22-10-2004, 15:44   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

İyi günler,
Ben kullanıcı tarafından girilen sayılar scientific notation şeklinde yazmak istiyorum.
yane kullanıcı 245.689 girerse bunu 2.45689*10^2 şeklinde yazmam ve kullanmam lazım benim aklımda şöle bir kod var

float a;
int count;
cout<<"enter the number : ";
cin>>"a";
if(a>0)
{
     while (a<10) {
        a /=10;
        count++;
    }
}else{
      while(a>-10) {
        a /=10;
        count--;
      }
}
cout<<"the number you entered is" <<a<<"10^"<<count;

Fakat bilmek istediğim bunu yapabilecek bir fonksiyon ya da daha ii bir algoritma olup olmadığı...
Teşekkürler, İyi çalışmalar...

Banned
22-10-2004, 16:51   |  #2  
Banlandı
Teşekkür Sayısı: 0
161 mesaj
Kayıt Tarihi:Kayıt: Eki 2004

Oh be small_ticket. C bitti, C++'a başladınız demek bu sene. Çok sevindim, hayırlı olsun. :)

Bu yazdığın koda bakınca, benim dikkatimi çeken ilk şey şu: Veri tipi doğru mu seçilmiş? Yani, bu program [ya da bir başka programda kullanılacak bir fonksiyon her neyse] girilen veriyi neden sayısal olarak değerlendiriyor? Bu bir işlemde kullanılacak mı? Başka bir şeylerin bileşeni de olsa, sanki bu doğrudan metin formatlamayla ilgili bir fonksiyon olacakmış gibi görünüyor. Yani, bilgisayar ne yapsın ki bilimsel gösterimi falan di mi?

Bu durumda, neden int kullanalım? Al bir karakter dizisi, koy girdiyi diziye, bul noktayı. Kaydır kaydır, sola doğru, gel gel gel, hah işte tam orası, index 1'de kalsın nokta. Kaç kere kaydırdın? Saymadın mı? Say, onu da al, 10^bilmem kaç diye ekle stringin sonuna.

Sayıdan bahsediyorsak, veri türü de sayısal olacak diye bir şart mı var yani?

Anlaştık di mi small_ticket? Kod istemicen di mi şimdi? :P

small_ticket
22-10-2004, 20:14   |  #3  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

theOnlyGenius bu girilen sayıyı toplama çıkarma çarpma gibi işlemlerde kullanacağım o yüzden float olarak alıyorum. ok??

Banned
22-10-2004, 23:52   |  #4  
Banlandı
Teşekkür Sayısı: 0
161 mesaj
Kayıt Tarihi:Kayıt: Eki 2004

Tamam small_ticket, kızma ya hemen. Öyle olsun; ona göre bakalım biz de...

Bu durumda, kodda minik hatacıklar var. [Hem de bir sürü]

1. count değişkenine ilk değer vermemişsin. int count; şeklindeki satır, int count=0; olsun.
2. While döngülerindeki < ve > operatörleri ters olmuş.
3. a/=10 dersen, 10 int olacağından, sonuç da hoş olmaz. a/=float(10) deyiver.
4. Çıktıda gerekli boşluk karakterleri yok. Metin çirkin ve anlaşılırlıktan uzak...
vs vs...

Her halükarda, sayıyı string olarak ele almak çok daha iyi olacak kardeşim. (Yuvarlama muvarlama vs vs...) Emin ol. Sen istersen a'yı char dizisi olarak al gene. İşin bitince sayı yapıverirsin...

small_ticket
23-10-2004, 00:37   |  #5  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

yok theOnlyGenius kızdığım felan... saolasın dediklerini düşüneceğim... belki tekrar birşeyler sorarım sana...