Program akışı da şu şekilde olabilir;

> Dişli gruplarının sayısı her zaman iki olmayabilir :) Bu durumda iç içe 
> FOR döngülerinden yararlanamayız. :)

* Döngüler illa ki FOR olmak zorunda değil. Bunun pek çok dilde birden fazla 
yöntem var. (Aralarında ufak tefek farklılılar olmakla birlikte)
REPEAT / UNTIL bunlardan biri. Diğeri de WHILE döngüsü. Her ikisi ni de bu iş 
için rahatlıkla kullanabilirsin.

0 - ANA DİŞLİ Tablosundan Dişli Sayısı ve  Sonraki Dişli Grubu Oku
1 - Sonraki Dişli Grubu eşit SIFIR ise ve ana Dişli Grubu Sıfırdan büyük ise ; 
HESAPLA; ardından 3 e git
2 - Sonraki Dişli Grubu sıfırdan büyük ve Dişli Sayısı SIFIR ise;
     a ) ANA Dişli  Gruplarının değerlerini al (ALT DİŞLİ TABLOSUNDAN) - Liste1 
i oluşturur.
     b ) Alt Liste_oluşturulacak_mı_kontrol_et 


     c )  while/repeat X=0 dan Liste1 sayısında ve alt Liste oluşturulacak ise
                   ---------- b ) SONRAKİ Dişli Grubunun Değerine göre ALT 
DİŞLİ TABLOSUNDAN Liste2 yi oluşturur.

                   FOR Y=0 dan Liste2 sayısında
                          HESAPLA
                   ----- 
                  Alt Liste_oluşturulacak_mı_kontrol_et


3- Ana dişli grubunda bir sonraki kayıt değerini al
4 - 0. adıma git (Ana dişli grubundaki kayıtlar bitinceye kadar ....)
 Algoritmanın 1 numaralı adımındaki hesabı ufak tefek modifikasyonla 2.b 
bölümüne alıp tek bir döngü de yapabilirsin. Yani Default olarak her zaman 
Liste1 ve Liste2 var olur. O zaman algoritma şöyle olur sanki; (modifikasyona 
ihtiyacı olabilir)

0 - ANA DİŞLİ Tablosundan Dişli Sayısı ve  Sonraki Dişli Grubu Oku
1 - Liste1 Oluştur - (Liste1 her zaman var) - Ana Dişli Grubu - Dişli Sayısı 
Sıfır ise ALT DİŞLİ TABLOSUNDAN Liste1 Oluştur -(Ana Dişli Tablosundan Alırsa 
TEK DEğer)

2 - FOR Liste1 sayısınca ....
   b ) Alt Liste_oluşturulacak_mı_kontrol_et  // Buraya Dikkat !!!
     ---- b.1 - Liste2 Oluştur - (Liste2 her zaman var) - Ana Dişli Grubunda 
Sıfır
 ise ALT DİŞLİ TABLOSUNDAN Liste2 Oluştur/Değilse Ana Dişli Grubundan Al
 (ANA Dişli Grubundan  Aldığında TEK DEğer)
     ------ while/repeat Döngüsünün içine Liste2 Oluşturma Girmeli ki ALT Dişli 
Tablosunda Olmayan Değerler için de Hesapla Yapılsın


  c )  while/repeat X=0 dan Liste1 sayısında ve alt Liste oluşturulacak ise
      b.1 - Liste2 Oluştur - (Liste2 her zaman var) - Ana Dişli Grubunda Sıfır
 ise ALT DİŞLİ TABLOSUNDAN Liste2 Oluştur/Değilse Ana Dişli Grubundan Al
 (ANA Dişli Grubundan Aldığında TEK DEğer)
      c.1 ) SONRAKİ Dişli Grubunun Değerine göre ALT DİŞLİ TABLOSUNDAN Liste2 
yi oluşturur. /// Buraya dikkat !!!

  



                   FOR Y=0 dan Liste2 sayısında



                          HESAPLA

                   ----- 
     
Alt Liste_oluşturulacak_mı_kontrol_et   /// Buraya dikkat !!!


Buradaki b/c/c.1 aralarındaki bağlantıyı kontrol değişkenleri ile kontrol 
etmelisin. Böylece n tane kadar iç içe döngü gerçekleştirilir. ALt Dişli 
Grubundan Çıkış Repeat/Until döngüsünde kullanılan Alt_Liste_Oluşturulacak_mı 
logic değerine bağlı. Ancak bu algoritmada Liste1 + Liste2 Kesinlikle Dinamik 
boyutta olmalı. Boyutları listeler oluşturulurken çekilen verilere göre dinamik 
olarak artmalı/azalmalı. 

Yazımda ufak tefek hatalar olabilir. :(

Kolay Gelsin.
 
                                          
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap