xalia Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 μέσα από ένα string θέλω να υπολογίσω πόσους διαφορετικούς χαρακτήρες έχω. Πχ με το strlen παίρνω το πλήθος όλων των χαρακτήρων του string civilization = 12 συνολικά χαρακτήρες civilization = 9 μοναδικοί χαρακτήρες σκέφτηκαν στην αρχή να πάρω το string ένα ένα χαρακτήρα να το μετατρέψω σε αριθμούς, να του αποθηκεύσω σε ένα array, να τους storarw με bubbleshort και μετά με ένα if σε loop να του συγκρίνω ανα μεταξύ τους, αλλά το έχασα στην πρώτη μετατροπή! Καμιά ιδέα?
lavelle Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 νομίζω υπάρχει ήδη έτοιμη function γι'αυτή την λειτουργεία είναι η count chars σε mode 3 <?php $str = "Σήμερα είναι Πέμπτη"; echo count_chars($str,3); ?>
m1cRo Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 μέσα από ένα string θέλω να υπολογίσω πόσους διαφορετικούς χαρακτήρες έχω. Πχ με το strlen παίρνω το πλήθος όλων των χαρακτήρων του stringcivilization = 12 συνολικά χαρακτήρες civilization = 9 μοναδικοί χαρακτήρες σκέφτηκαν στην αρχή να πάρω το string ένα ένα χαρακτήρα να το μετατρέψω σε αριθμούς, να του αποθηκεύσω σε ένα array, να τους storarw με bubbleshort και μετά με ένα if σε loop να του συγκρίνω ανα μεταξύ τους, αλλά το έχασα στην πρώτη μετατροπή! Καμιά ιδέα? Kathe ti ston ypologisth einai enas arithmos . Apo thn theoria ths pliroforias h pliroforia einai enas arithmos . Afou kathe ti einai enas arithmos kathe byte dld einai enas arithmos kai ena ascii character einai ena byte sthn ousia ,gt na tous metatrepseis se arithmos afou idi einai arithmos . P.S sthn arxh diavazoume kai meta rwtame .
xalia Δημοσ. 13 Δεκεμβρίου 2007 Μέλος Δημοσ. 13 Δεκεμβρίου 2007 Σε ευχαριστώ για τη πολύτιμη πληροφορία!!!! Δε το ήξερα!!! Να σαι καλά που βοήθησες τόσο!!!! Ps: αφού ποστάρεις για να ποστάρεις κάντο σε κάνα άλλο θέμα που κατέχεις μήπως και πεις κάτι με ουσία!
xalia Δημοσ. 13 Δεκεμβρίου 2007 Μέλος Δημοσ. 13 Δεκεμβρίου 2007 σε ευχαριστώ πολύ lavelle δικό μου λάθος που δεν έγραψα ότι αναφέρομαι στη C, αυτό το function δεν υπάρχει στη C
m1cRo Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 E ma afou den katalaveneis kan se ti anaferomai dld arxizeis na ironevese???LOL.Katarxas giati na metatrepseis tous xarakthres se arithmous afou sou lew einai arithmos o kathe xarakthras sou .Des pinaka ascii .An katalava kala theleis na taxinomiseis enan pinaka xarakthrwn etc??E tote sigrine tous xarakthres etc opos einai kai mhn kaneis metatropes afou pane me thn seira ston pinaka ascii.Deukrinise ti thes sthn ousia .
m1cRo Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 re m1cRo eleos ... LOL exete dikio. Loipon >int sum=0; for(int i='a';i<='z';i++){ if(strchr(buf,(char)i)!=NULL){ sum++; } } for(int i='A';i<='Z';i++){ if(strchr(buf,(char)i)!=NULL){ sum++; } } for(int i='0';i<='9';i++){ if(strchr(buf,(char)i)!=NULL){ sum++; } } E grafw xoris dokimes
xalia Δημοσ. 13 Δεκεμβρίου 2007 Μέλος Δημοσ. 13 Δεκεμβρίου 2007 m1cRo respect έτρεξε με τη μία, δεν είχα σκεφτεί να το κάνω έτσι. ΣΕ ΕΥΧΑΡΙΣΤΩ!
Dikemou Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 Βέβαια δεν είναι και πολύ efficient.. αν είχες κάνα κινέζικο αλφάβητο θα έτρεχε πάρα πολλές φορές χωρίς να χρειάζεται... > <? $str = "hello world"; $chars = array(); $len = strlen($str); for ($i = 0; $i < $len; $i++){ $c = strtolower(substr($str, $i, 1)); if (!in_array($c, $chars)) $chars[] = $c; } echo count($chars); ?>
parsifal Δημοσ. 13 Δεκεμβρίου 2007 Δημοσ. 13 Δεκεμβρίου 2007 Μία εναλλακτική προσέγγιση. Έστω ότι έχεις αποθηκεύσει το string σου στον πίνακα MyString. Έχουμε: > char *pString; int CharCount[224]; /* 256 - 32: Oi prwtoi 32 ASCII xarakthres einai xarakthres elegxoy termatikoy */ int i; int UniqueCount = 0; for(i = 0; i < 224; i++) CharCount[i] = 0; for(pString = MyString; pString[0] != '\0'; pString++) CharCount[pString[0] - 32]++; for(i = 0; i < 224; i++) if(CharCount[i]) UniqueCount++; Η UniqueCount θα ισούται με τον αριθμό των διαφορετικών χαρακτήρων που υπάρχουν. Ο κώδικας δεν έχει δοκιμαστεί.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.