Rastgele girilen bir rasyonel sayının ondalık kısmının ve tam kısmının hane sayısını bulan algoritmayı yazınız.
Sayı girmek.
Tam ve ondalık hane sayısını bulmak.
Sonuçları ekrana yazdırmak.
Sayının tam kısmını elde etmek için rasyonel sayının değerini tam sayıya dönüştürerek yeni int değişkene atarız. 150.25 ---int---> 150
Sayının ondalık kısmını elde etmek için sayi%10
sıfır olmadığı sürece hane sayacını artırıp sayıyı 10’la çarparız.
32.46
➡ sayi%10!=0
➡ 32.46*10
(1)
324.6
➡ sayi%10!=0
➡ 324.6*10
(2)
3246
➡ sayi%10!=0
➡ 3246*10
(3)
32460
➡ sayi%10=0
Değişkenlerin tanımlanması.
sayi
nın girilmesi.
t_sayi
ya sayının tam değerinin atanması.
t_sayi!=0
iken:
t_sayi
10’a bölüp tam_h
nın artırılması
sayi%10!=0
iken:
sayi
10’la çarpıp ondalik_h
nın artırılması.
Sonuçların ekrana yazdırılması.
// C++ dilinde float türü girdiler beklenenden biraz farklı saklandığı için diğer//dillerde geçerli yöntemlerin kodlamaya yeni başlayanları zorlayacağını düşündüğümüzden//bu soruyu farklı bir yöntemle çözmeyi yeğledik (Sayıyı string olarak okuyup strşng üzerinden işlemler yaparark).//Float tipiyle ilgili daha fazla bilgi almak için http://floating-point-gui.de///adresine göz atabilirsiniz.#include <iostream>using namespace std;int main() {// Değişkenlerin tanımlanmasıint i, tam = 0, ondalik = 0;string sayi;cin >> sayi; // sayının string olarak girilmesi// noktaya kadar olan sayıların sayısının bulunmasıfor (i = 0; i < sayi.length(); i++) {if (sayi[i] != '.') {tam++;} else {break;}}ondalik = sayi.length() - tam - 1; // noktadan sonra sayıların sayısının bulunması// Sonuçların yazdırılmasıcout << "Tam kisminin hane sayisi=" << tam << endl;cout << "Ondalik kisminin hane sayisi=" << ondalik;}
# Değişkenlerin tanımlanmasıondalik_h = 0; tam_h = 0sayi = float(input()) #`sayi`nın girilmesisayi1 = sayi# “t_sayi”ya sayının tam değerinin atanmasıt_sayi = int(sayi)while t_sayi != 0:# “t_sayi” 10’a bölüp “tam_h”nın artırılmasıt_sayi = t_sayi // 10tam_h += 1while sayi % 10 != 0:# “sayi” 10’la çarpıp “ondalik_h”nın artırılmasısayi = sayi * 10ondalik_h += 1# Sonuçların ekrana yazdırılmasıprint('Tam kisminin hane sayisi=', tam_h);if sayi1 % 10 != 0:# `sayı%10=0` olması için birlerin 0 olması lazım ama hane# sayısına bir fazla eklemiş olduğumuzdan yazdırmadan önce sayıyı 1 azaltırız.print('Ondalik kisminin hane sayisi=', ondalik_h - 1)else:print('Ondalik kisminin hane sayisi= ', ondalik_h)
import java.util.*;public class HaneSayisi {public static void main(String arg[]) {Scanner input = new Scanner(System.in);// Değişkenlerin tanımlanmasıint ondalik_h = 0, tam_h = 0, t_sayi;float sayi, sayi1;sayi = input.nextFloat(); // “sayi”nın girilmesisayi1 = sayi;t_sayi = (int) sayi; // “t_sayi”ya sayının tam değerinin atanmasıwhile (t_sayi != 0) {// “t_sayi” 10’a bölüp “tam_h”nın artırılmasıt_sayi = t_sayi / 10;tam_h++;}while (sayi % 10 != 0){// “sayi” 10’la çarpıp “ondalik_h”nın artırılmasısayi = sayi * 10;ondalik_h++;}// Sonuçların ekrana yazdırılmasıSystem.out.println("Tam kisminin hane sayisi= " + tam_h);if (sayi1 % 10 != 0)// `sayı%10=0` olması için birlerin 0 olması lazım ama hane// sayısına bir fazla eklemiş olduğumuzdan yazdırmadan önce sayıyı 1 azaltırız.System.out.println("Ondalik kisminin hane sayisi= " + (ondalik_h - 1));elseSystem.out.println("Ondalik kisminin hane sayisi= " + (ondalik_h));input.close();}}
150.25Tam kisminin hane sayisi= 3Ondalik kisminin hane sayisi= 2
sayı%10=0
olması için birlerin 0 olması lazım ama hane sayısına bir fazla eklemiş olduğumuzdan yazdırmadan önce sayıyı 1 azaltırız.