2.uzdevums


Задание 2 – ranges2numbersarr
Необходимо написать функцию, которая переделает строку диапазонов номеров в массив номеров, попадающих в диапазоны.

Входные параметры(строка):
7676;7700-7702;7705;7707;771-772;7760-7764;7777

Результат(массив номеров):
[
7676, 7700, 7701, 7702, 7705, 7707,
771, 772, 7760, 7761, 7762, 7763, 7764, 7777,
]

Izveidota blokshēma:

Blokshēma - numbersarr2range

Izveidots programmas kods:

/**
Funkcija:
@function ranges2numbersarr($p_numuru_intervali)
@param	$p_numuru_intervali	(simbolu virkne ar numuru intervāliem)
@return	$v_numuru_masivs	(masīvs ar visiem numuriem, kas ietilpst norādītajos intervālos)
*/
function ranges2numbersarr($p_numuru_intervali) {
	$v_intervalu_masivs = explode(";", $p_numuru_intervali);
	// ar katru intervālu 
	foreach($v_intervalu_masivs as $v_intervals) {
	// meklējam numuru atdalītāju "-" 
	$v_dalitaja_pozicija = strpos($v_intervals, "-");
	// ja tas ir tikai numurs
	if ($v_dalitaja_pozicija === false ){
		//ieraksta vērtību atbildes masīvā
		$v_numuru_masivs[] = $v_intervals;
	} else {
		//ja atrod dalītāju, tad strādājam ar intervāla galapunktiem
		//atrodam intervala sākuma vērtību un beigu vērtību
		$v_intervala_sakums = substr($v_intervals, 0, $v_dalitaja_pozicija);
		$v_intervala_beigas = substr($v_intervals, $v_dalitaja_pozicija+1, strlen($v_intervals));
		// ieraksta intervāla sākuma numuru
		$v_numuru_masivs[] = $v_intervala_sakums;
		// aprēķina nākošo intervāla numuru/elementu
		$v_intervala_nakosais = $v_intervala_sakums + 1;
		// ja nākošais nav pēdējais, tad 
		while ($v_intervala_nakosais < $v_intervala_beigas) {
			// ieraksta nākošā vērtību atbildes masīvā
			$v_numuru_masivs[] = $v_intervala_nakosais;
			$v_intervala_nakosais++;
		}
		// ieraksta pēdējo intervāla numuru
		$v_numuru_masivs[] = $v_intervala_beigas;
	}
	}
	return $v_numuru_masivs;
}
Advertisements

Komentēt

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Mainīt )

Twitter picture

You are commenting using your Twitter account. Log Out / Mainīt )

Facebook photo

You are commenting using your Facebook account. Log Out / Mainīt )

Google+ photo

You are commenting using your Google+ account. Log Out / Mainīt )

Connecting to %s