Php feladat int stringge alakítása

Php feladat int stringge alakítása
2021-11-18T19:25:49+01:00
2021-11-18T20:36:36+01:00
2022-11-10T09:35:34+01:00
LebronBaratod
Kaptunk egyetemen feladatot ami egy szol:
Készíts egy tömböt, amiben 10db 3 jegyű véletlenszerű számot tárolsz. (ezek a számok ne ismétlődjenek) Fűzd össze ezt a 10 db számot egy 30 karakter hosszú seringnek!
Az így elkészített stringet pakold át egy karakterenként betünként, (használj hozza ciklust, a string hasonlóan működik mint egy tömb , estring hosszat az strlen() függvénn adja meg, a Count() helyett.) az így elkészült tömbben számold meg az egyes számok darabszámát, majd amelyikből páros darabszám van azokat irasd ki.
pld.: "12323564746..."
1:1
2:3

alapvetően már a szöveg értelmezésével is problémáim voltak itt, de ideig jutottam:
<?php $tomb=array(); for ($i=0; $i <=10; $i++) { do { $x=rand(100,999); } while (in_array($x, $tomb)); $tomb[$i]=$x; print("$tomb[$i]"." "); } echo '<br />'; $szoveg=join("", $tomb); echo $szoveg; ?>
Mutasd a teljes hozzászólást!
A feladat itt az, hogy:
1) Gyártsunk 10 darab egymástól különböző 3 számjegyű számot
2) Fűzzük össze egy stringbe őket
3) Számoljuk meg, hogy a tízes számrendszerbeli számjegyek hányszor szerepelnek a stringben.

Vegyük át sorra, mi történik. Gyártsunk 10 darab 3 jegyű számot:

<?php $array = array(); for ($i = 0; $i < 10; $i++) { $array[] = rand(100, 999); }
De ebben még lehetnek ismétlődések. Szóval csináljuk azt, hogy egészen addig generálunk véletlenszámokat, amíg olyat nem generálunk, ami tuti, hogy nincs benne a tömbben.

<?php $array = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; }
Csináljunk a végeredményből stringet:

<?php $array = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; } $nums_as_string = join("", $array);
Majd ahhoz, hogy össze tudjuk számolni az előforduló számjegyeket, egy kis trükköt fogunk kihasználni, mégpedig azt, hogy a tömb asszociatív - tehát minden értékének van egy kulcsa, amit a programozásban indexnek nevezünk. Ez pont kapóra jön, mert a tömb nulladik eleme megadja a nullák számát, az 1-es indexű eleme megadja az egyesek számát, a 2-es indexű a kettesekét, és így tovább. De ehhez az kell, hogy először kell egy 10 elemű tömb, amelynek minden elemét 0-ra inicializáljuk. Feltűnhet, hogy már van egy ciklusunk 0-tól 9-ig, ezt akár újra is hasznosíthatjuk:

<?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array);
Most menjünk végig a számjegyeken:

<?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { //$nums_as_string[$i] az éppen kiválasztott számjegy }
Na, ezzel most van egy olyan gond, hogy a $nums_as_string[$i] char típusú adat. Ha felcsapsz egy ASCII táblát, akkor látni fogod azt, hogy a '0' ASCII-kódja 48. Szóval ebből a számjegyet úgy kapjuk meg, hogy a karakter ASCII kódjából (amit a PHP-nek az ord() függvénye ad meg), kivonunk 48-at.

<?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; }
Mindjárt a végére érünk a feladatnak. Már csak annyi van, hogy növeljük eggyel annak a számjegynek a darabszámát, amiből épp most találtunk eggyel többet:

<?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; $result[$digit]++; }

Végül írassuk ki az eredményt, tehát azokat a számjegyeket, amikből páros darab van. Így a végső kódunk:

<?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; $result[$digit]++; } for ($i = 0; $i < 10; $i++) { if ($result[$i] % 2 === 0) print "$i - $result[$i]\n"; //a biztonság kedvéért én kiírattam azt is, hogy melyik számjegyről van szó }
Mutasd a teljes hozzászólást!

  • Nem írtad le a kérdésedet, de számot akár így is konvertálhatsz stringgé:

    $i=4; $s=''.$i;
    vagy

    $i=7; $s="$i";
    Azonkívül van pl. a strval meg az sprintf.
    Mutasd a teljes hozzászólást!
  • A feladat itt az, hogy:
    1) Gyártsunk 10 darab egymástól különböző 3 számjegyű számot
    2) Fűzzük össze egy stringbe őket
    3) Számoljuk meg, hogy a tízes számrendszerbeli számjegyek hányszor szerepelnek a stringben.

    Vegyük át sorra, mi történik. Gyártsunk 10 darab 3 jegyű számot:

    <?php $array = array(); for ($i = 0; $i < 10; $i++) { $array[] = rand(100, 999); }
    De ebben még lehetnek ismétlődések. Szóval csináljuk azt, hogy egészen addig generálunk véletlenszámokat, amíg olyat nem generálunk, ami tuti, hogy nincs benne a tömbben.

    <?php $array = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; }
    Csináljunk a végeredményből stringet:

    <?php $array = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; } $nums_as_string = join("", $array);
    Majd ahhoz, hogy össze tudjuk számolni az előforduló számjegyeket, egy kis trükköt fogunk kihasználni, mégpedig azt, hogy a tömb asszociatív - tehát minden értékének van egy kulcsa, amit a programozásban indexnek nevezünk. Ez pont kapóra jön, mert a tömb nulladik eleme megadja a nullák számát, az 1-es indexű eleme megadja az egyesek számát, a 2-es indexű a kettesekét, és így tovább. De ehhez az kell, hogy először kell egy 10 elemű tömb, amelynek minden elemét 0-ra inicializáljuk. Feltűnhet, hogy már van egy ciklusunk 0-tól 9-ig, ezt akár újra is hasznosíthatjuk:

    <?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array);
    Most menjünk végig a számjegyeken:

    <?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { //$nums_as_string[$i] az éppen kiválasztott számjegy }
    Na, ezzel most van egy olyan gond, hogy a $nums_as_string[$i] char típusú adat. Ha felcsapsz egy ASCII táblát, akkor látni fogod azt, hogy a '0' ASCII-kódja 48. Szóval ebből a számjegyet úgy kapjuk meg, hogy a karakter ASCII kódjából (amit a PHP-nek az ord() függvénye ad meg), kivonunk 48-at.

    <?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; }
    Mindjárt a végére érünk a feladatnak. Már csak annyi van, hogy növeljük eggyel annak a számjegynek a darabszámát, amiből épp most találtunk eggyel többet:

    <?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; $result[$digit]++; }

    Végül írassuk ki az eredményt, tehát azokat a számjegyeket, amikből páros darab van. Így a végső kódunk:

    <?php $array = array(); $result = array(); for ($i = 0; $i < 10; $i++) { $num = 0; $is_unique = false; do { $num = rand(100, 999); $is_unique = true; for ($j = 0; $j < $i; $j++) { if ($array[$j] == $num) $is_unique = false; } } while(!$is_unique); $array[] = $num; $result[$i] = 0; } $nums_as_string = join("", $array); for ($i = 0; $i < strlen($nums_as_string); $i++) { $digit = ord($nums_as_string[$i]) - 48; $result[$digit]++; } for ($i = 0; $i < 10; $i++) { if ($result[$i] % 2 === 0) print "$i - $result[$i]\n"; //a biztonság kedvéért én kiírattam azt is, hogy melyik számjegyről van szó }
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd