C++ konsol uygulaması için bir vize projem var, ancak bazı sebeplerden dolayı derslere giremediğim için hocanın belirlemiş olduğu bazı şartlar altında programı yazmakta güçlük çekiyorum ve yardıma ihtiyacım var.

Hocanın verdiği ödevin programının çıktısı yukarıdaki gibi olacak. Ancak aşağıdaki şartları istemesi nedeniyle pek sağlıklı bir mantıkla çalışan ve görevinin tamamını yerine getiren bir program yazamadım. Hocanın istediği şartlar şunlar:
- -Sadece if kullanılacak, döngü falan yasak. Yani for, while, do-while, goto, switch, until, repeat-until, try-catch tarzı komutlar kullanılmayacak.
- -Program 19 basamaklı sayılara kadar ayırma işlemi yapacak.
- -En fazla 10 adet noktalı virgül kullanılacak.
- -En fazla 3 adet değişken kullanılacak.
- -Iostream.h, conio.h kütüphaneleri ve getch() kullanılacak.
Aşağıda benim denemiş olduğum program var fakat 5 basamağa kadar desteklediği için pek bir işe yaramıyor. 10 noktalı virgül kullanarak en fazla bu kadar yapabildim, ? ve : operatörlerini kullanarak bu şekilde yazılabiliyor hocanın istediği program ama biraz ameleliğe giriyor. Amelelik olsa da hocanın belirlediği şartlar altında programı yazmak için yardımınıza ihtiyacım var arkadaşlar. Araştırmalarıma göre özyineleme diye birşeyle de yapılabiliyormuş ama beceremedim bir türlü. Yardımlarınızı bekliyorum, şimdiden teşekkürler.
#include <iostream.h>
#include <conio.h>
int main()
{
unsigned long long sayi;
cout << "Pozitif bir tamsayi giriniz: ";
if (!(cin >> sayi) || (sayi > 99999))
return !!(cout << "Hatali sayi girdiniz." << endl);
cout << sayi;
unsigned long long bolum, arti;
if (arti = bolum = sayi / 10000)
cout << " = " << bolum << "*10000";
if (bolum = (sayi = sayi % 10000) / 1000)
cout << (arti ? " + " : " = ") << bolum << "*1000";
if (arti |= bolum, bolum = (sayi = sayi % 1000) / 100)
cout << (arti ? " + " : " = ") << bolum << "*100";
if (arti |= bolum, bolum = (sayi = sayi % 100) / 10)
cout << (arti ? " + " : " = ") << bolum << "*10";
if (arti |= bolum, bolum = sayi % 10)
cout << (arti ? " + " : " = ") << bolum << "*1";
getch();
}