marcin909090
20.04.2016, 19:46:45
Witam, jak usunąć pojedynczy znak z pliku.
Treść pliku to np. "3,2,4,6,2,3,6,32,3,4,13,425,32,23,4,1,45,34".
Mój skrypt znajduje najmniejszą wartość i zapisuje do nowego pliku czytając plik od początku do końca po znaku. Muszę usunąć tą wartość i znów przeszukać cały plik do momentu aż posortuję liczby w nowym pliku.
Skrypt porównuje po kolei dane liczby, na końcu umieszczając w zmiennej najmniejszą wartością jaką jest na początku "1". Jak usunąć tą wartość z pliku aby dalej szukać kolejnej najmniejszej wartości.
Warunek : Plik musi być czytany znak po znaku albo bajt po bajcie !
kajzur
20.04.2016, 20:17:24
Zapamiętaj w zmiennej ostatnią znalezioną liczbę i omijaj ją w szukaniu. Poza szukaniem (już drugiej) najmniejszej liczby twórz listę reszty liczb i zapisz ją do pliku z którego czytasz.
marcin909090
20.04.2016, 20:26:48
A gdy liczba się powtarza ? Dodam jeszcze ze liczb może być miliony, a plik może mieć kilka GB.
Pyton_000
20.04.2016, 20:38:20
j.w kolega @kajzur z tą różnicą że zapisuj offset.
http://php.net/manual/en/function.ftell.php
marcin909090
20.04.2016, 21:45:11
while (!feof($plik_pobrany)) {
$tmp=fgetc($plik_pobrany);
if($tmp!=",")
{
{
}
}
else
{
{
$b=$a;
}
{
if($b>$a)
{
$b=$a;
}
}
$a='';
}
}
Po pętli w zmiennej $b mam najmniejszą liczbę. Mam zapisać jej pozycję wskaźnika ?
Jak mając pozycję wskaźnika mam ominąć już znalezione miejsce wystąpienia najmniejszej wartości, a później kolejne i kolejne miejsca?
Tablica z milionem wartości do ominięcia ?
Czy te znalezione pozycje wskaźnika zapisać do innego pliku i stworzyć pętle najmniejszych już znalezionych wartości w
w pętli szukania z pierwszego pliku. To dalej będzie nie optymalne albo się mylę