Visualizzazione risultati 1 fino 4 di 4

Discussione: In differita dalle olimpiadi di matematica, script per contare numeri particolari

  1. #1
    Guest

    Lightbulb In differita dalle olimpiadi di matematica, script per contare numeri particolari

    oggi ho fatto la seconda sessione delle olimpiadi di matematica, un vero casino....
    un esercizio mi ha preso in scacco e allora per passare il tempo ho scritto un codice php che dovrebbe fare quello che mi chiedeva, ovvero
    A grandi linee chiedeva quanti sono i numeri interi compresi tra 10000 e 99999, dove non compare un solo 0, divisibili per 12,
    io ho buttato giù questo
    Codice PHP:
    <?
    echo "Numeri naturali compresi tra 10000 e 99999, divisibili per 12, dove non compaiano zeri<br><br>\n\n";
    $conto = 0;
    for(
    $i = 10000; $i<99999; $i++){
    //if(!strpos($i, "0"){
    $divisione = $i / 12;
    if(
    is_int($divisione)){
    echo
    "$i &egrave; divisibile per 12<br>\n";
    $conto = $conto + 1;
    }
    //}
    }
    echo
    "<br>\n<b>$conto</b> risultati";
    ?>
    ma se decommento la riga per escludere i numeri con 0 al loro interno non funge lo script, suggerimenti?
    ormai mi sono fissato, devo sapere quanti sono quei numeri...
    sob

    grazie
    ciao!
    Ultima modifica di SFo : 16-02-2006 alle ore 14.19.28

  2. #2
    Guest

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Risposta "tecnica": perché, anche se PHP non usa formalmente i tipi di variabile (come altri linguaggi tipo C o Java), in quel momento $i è un numero e quindi la funzione strpos(), che accetta come parametro una stringa, non funziona. Puoi risolvere scrivendo:
    Codice PHP:
    if (strpos ('' . $i, '0') >= 0) { ... }
    (a proposito: mi risulta che strpos() restituisca -1 se non trova il pattern e non 0, perché corrisponde al primo carattere della stringa).

    Risposta "matematica": aspetta che venga fuori su http://olimpiadi.ing.unipi.it/ oppure che mi scervelli anch'io in proposito...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    Guest

    Predefinito

    @jostock
    fin qui funge anche a me, ma devo escludere i risultati con gli 0 :)

    @dementialsite
    no, voglio saperlo prima che venga fuori
    ora provo quello che hai proposto tu

    RISOLTO!
    Codice PHP:
    <?
    echo "Numeri naturali compresi tra 10000 e 99999, divisibili per 12, dove non compaiano zeri\n<br>";
    $conto = 0;
    for(
    $i = 10000; $i<99999; $i++){
    if(
    strpos (''.$i, '0') == 0){
    $divisione = $i / 12;
    if(
    is_int($divisione)){
    echo
    "$i &egrave; divisibile per 12<br>\n";
    $conto = $conto + 1;
    }
    }
    }
    echo
    "<br>\n<b>$conto</b> risultati";
    ?>
    !!!
    4374 risultati, oddio, e io lo avrei dovuto fare a scuola? al massimo avrei potuto provare con una media per ogni migliaio, ma è da pazzi, meglio farlo in php
    grazie e ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •