Albert Einstein: ... la nostra conoscenza, se paragonata alla realta' e' primitiva e infantile. Eppure e' il bene piu' grande che possediamo.
... all our science, measured against reality, is primitive and childlike-and yet it is the most precious thing we have.
Informatica : Code snippets (Strings)
Stringa monocarattere ripetuto N volte
I frammenti di codice (snippets) listati sotto, implementano, nei differenti linguaggi usati, una funzione che restituisce una stringa composta da un carattere specifico ripetuto N volte. Il carattere e il numero N vengono passati come parametri. Alla funzione diamo il nome di 'Replicate'.
Linguaggio: PASCAL
Parametri : cha = carattere da ripetere : qv = quante volte va ripetuto 'cha' Ritorna : Una stringa composta da 'qv' caratteri 'cha' Commenti : : Nella implementazione Borland (c) : di object-Pascal, usata ad esempio : come linguaggio in Delphi7, esiste gia' : una funzione che implementa quanto richiesto: : StringOfChar(ch:char; len:integer):string; : Es.: : s := StringOfChar('0',5); //s = '00000' :---------------------------------------- : Ecco comunque una implementazione : in Pascal. Per short e long string :----------------------------------------
{ Versione per long string (capacita' > 255 chars) } FUNCTION Replicate(cha:char; qv:integer): String; VAR i:Integer; sRes:string; BEGIN sRes := ''; FOR i:=1 TO qv DO BEGIN sRes := sRes + cha; END; Replicate:=sRes; END;
{ Versione per short string (capacita' max 255 chars) e len corrente nel primo byte. } FUNCTION Replicate(cha:Char; qv:Integer):string; VAR ss:string; BEGIN FillChar(ss[1],qv,cha); ss[0]:=chr(qv); replicate:=ss; END;
Linguaggio: Assembler 80286
Parametri : ch = carattere da ripetere : qc = quante volte va ripetuto 'cha' Ritorna : Una stringa composta da 'qc' caratteri 'ch' : Commenti : Questa versione assembler, e' scritta : con le convenzioni : usate nell'object pascal di Borland (c), : per interfacciare : codice Pascal con codice Assembler. : N.B. In piu' presuppone che la stringa : sia SHORT; max 255 caratteri : e nel primo byte : la lunghezza corrente : della stringa stessa. :
;function Replicate(ch:Char; Qc:Integer):String; ; RepRes EQU DWORD PTR [BP+10] RepChar EQU BYTE PTR [BP+8] RepQc EQU WORD PTR [BP+6] ; Replicate PROC FAR ; PUSH BP MOV BP,SP PUSH DS LES DI,RepRes CLD MOV AX,RepQc CMP AX,0 JG REPOK XOR AL,AL MOV BYTE PTR ES:[DI],AL JMP REPOUT REPOK: STOSB MOV CX,AX ; in CX quanti byte MOV AL,RepChar ; in AL il char da STOrare PARI: REP STOSB REPOUT: POP DS MOV SP,BP POP BP RET 4 Replicate ENDP
Linguaggio: C#
Parametri : cha = carattere da ripetere : qv = quante volte va ripetuto 'cha' Ritorna : Una stringa composta da 'qv' caratteri 'cha' : Commenti : Ci sono modi piu' furbi e : piu' veloci per implementare : il metodo, ad esempio : usare StringBuilder che e' : molto piu' veloce. : Questa implementazione e' : diciamo 'classica' : e riportabile con facilita' : in altri linguaggi. : :
public string replicate(char cha, int qv) { string sRes = ""; // buffer risultato
for (int j = 0; j < qv; j++) sRes += cha;
return (sRes);
}
N.B. Borland e Delphi7, DotNet e Microsoft sono marchi registrati ed appartengono ai leggittimi proprietari.
Metti la scheda negli appuntiVisualizza appuntiAzzera appunti