lostyazilim
tr.link

algoritma yardım lazım

6 Mesajlar 819 Okunma
lstbozum
tr.link

digrev digrev WM Aracı Kullanıcı
  • Üyelik 11.10.2018
  • Yaş/Cinsiyet 34 / E
  • Meslek ÖĞRENCİ
  • Konum İstanbul Anadolu
  • Ad Soyad A** E**
  • Mesajlar 193
  • Beğeniler 4 / 7
  • Ticaret 0, (%0)
Arkadaşlar saatlerdir kafamdaki algoritmayı kuramadım Şöyle anlatayım bir dizi var misal 100 elemanlı



$dizi=array();
for($i=0;$i<100;$i++){
$dizi[]=$i;
}


bunu bir döngüye alıyorum .Yapmak istediğim döngüye her girdiğinde ilk 10 elemanı ekrana yazdırıp sonra bir daha girdiğinde artık gerikalan 90 elemandan başlayıp tekrar 10 defa ekrana yazdırp böyle devam edicek en son eleman kalmayınca döngüden çıkacak Projenini bir yerinde böyle bir algoritma lazım oldu .Recurive yapmaya çalıştım yapamadım
 

 

wmaraci
reklam

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)
Tam olarak yapmaya çalıştığın şeyi yazabilirsen daha net yardımcı olabiliriz. Kod bir defa çalıştığında dizideki 10 elemanı yazıp daha sonra tekrar çalıştığında 10 elemanı yazacaksa veritabanına ihtiyacın var. yok ben dizinin tüm elemanlarını döneceğim ama her 10 elemanda bir şunu yapmak istiyorum dersen farklı bir çözümü var. Biraz daha detaylı anlatabilirsen daha kolay yardımcı oluruz.
 

 

digrev digrev WM Aracı Kullanıcı
  • Üyelik 11.10.2018
  • Yaş/Cinsiyet 34 / E
  • Meslek ÖĞRENCİ
  • Konum İstanbul Anadolu
  • Ad Soyad A** E**
  • Mesajlar 193
  • Beğeniler 4 / 7
  • Ticaret 0, (%0)
Hocam bende nasıl anlatacağımı bilemedim bidaha anlatmaya çalışıyım Hocam ben recursive ile yapmaya çalışıyorum önce burdaki gibi


$arx=array();
for($i=0;$i<100;$i++){
$ar[]=$i;
}



bir döngüyle diziyi 100 elemanlı hale getiriyorum. sonra recursive fonksiyona bu diziyi veriyorum aşağıdaki gibi



function recursiveFonksiyon($array){

$elemanSayisi=count($array);



do{
for($i=$elemanSayisi;$i>$elemanSayisi-20;$i--){
echo $i;
recursiveFonksiyon($array)


}

}while();



}


inşallah buraya kadar anlatabilmişimdir .Çünkü kafam durdu mavi ekran veriyorum şu an ..Şimdi esas zor olan şu bu 20 elemanı zaten yazdırdım recursive fonksiyon bidaha çalıştığında artık geri kalan 80 tane eleman üzerinden işleme devam etmeli ve yine 20 elemanı yazdırmalı sonra tekrar ve tekrar ta ki artık 100 elemanda bitene kadar ondan sonrada döngüden çıkmalı.Hocam buda nerden çıktı derseniz eğer ..projemde böyle bir algortima gerekti.Nolur anlatabilmiş olayım
 

 

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)
Bir yöntem bu şekilde.

$ar = array();
$cursor = 0;
for ($i = 0; $i < 100; $i++) {
$ar[] = $i;
}

function fonksiyon($array, $cursor, $adet)
{
if ($cursor < count($array)) {
$max = $adet+$cursor;
for ($i = 0+$cursor; $i < $max; $i++) {
echo $array[$i].PHP_EOL;
$cursor++;
}
echo "$adet Tane Saydım.".PHP_EOL;
return $cursor;
}else{
echo "Sayacak eleman kalmadı";
return $cursor;
}
}

$cursor = fonksiyon($ar,$cursor,10);
$cursor = fonksiyon($ar,$cursor,10);
$cursor = fonksiyon($ar,$cursor,10);
$cursor = fonksiyon($ar,$cursor,10);
$cursor = fonksiyon($ar,$cursor,10);
$cursor = fonksiyon($ar,$cursor,10);


Çıktı olarak sana :

0
1
2
3
4
5
6
7
8
9
10 Tane Saydım.
10
11
12
13
14
15
16
17
18
19
10 Tane Saydım.
20
21
22
23
24
25
26
27
28
29
10 Tane Saydım.
30
31
32
33
34
35
36
37
38
39
10 Tane Saydım.
40
41
42
43
44
45
46
47
48
49
10 Tane Saydım.
50
51
52
53
54
55
56
57
58
59
10 Tane Saydım.


şeklinde bir çıktı sağlar. Her saydırmada kaldığı yerden o kadar sayar.


Bir diğer yöntem ise, her 20 tanede bir işlem yaptırmak istiyorsun diyelim mesela.


$ar = array();
$cursor = 0;
for ($i = 0; $i < 100; $i++) {
$ar[] = $i;
}

for ($i = 0; $i < count($ar); $i++) {
echo $ar[$i] . PHP_EOL;
if ($i % 20 == 0 && $i != 0) {
echo "20 Tane saydım" . PHP_EOL;
}
}


Array içini dönerken her if ile her 20 (veya sen kaç belirleyeceksen) adette bir istediğin işlemi yaptırabilirsin.
 

 

wmaraci
wmaraci

digrev digrev WM Aracı Kullanıcı
  • Üyelik 11.10.2018
  • Yaş/Cinsiyet 34 / E
  • Meslek ÖĞRENCİ
  • Konum İstanbul Anadolu
  • Ad Soyad A** E**
  • Mesajlar 193
  • Beğeniler 4 / 7
  • Ticaret 0, (%0)
hocam cok saol zaman ayırdığın için
 

 

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)
Yardımcı olabildimse ne mutlu.
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al