Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    35

    inStr: vediamo se sei pari o dispari

    Ciao a tutti,
    ho un problema con la funzione inStr (di visual basic):

    ho una variabile che contiene = "abcde"

    adesso nasce il problema

    devo riuscire a sapere la prima lettera che lettera è,
    la seconda che lettera è, la terza che lettera è, la quarta che lettera è...ecc...

    fatto questo però, in base a che lettera è e quale posizione occupa nella stringa(cioè se "a" è al terzo posto è dispari e vale 5, se è al secondo è pari e vale 7)
    questi valori "numerici" devono andare a finire in una variabile e sommarsi tra di loro"
    inStr()va bene, ma come funziona? io no capisco quelle lunghe righe.
    GRAZIE DAVVERO, PER FAVORE SE MI POSTATE UN ESEMPIO, ME LO SPIEGATE.
    Grazie a tutti, Davide

  2. #2
    non ho capito molto però:

    dim pari as boolean
    dim i as long
    pari=false 'All'inizion è dispar (posizione 1)
    str="Pippo"
    for i=1 to len(str)
    carattere=mid(str,i,1) 'prendi il carattere i-esimo
    if pari then
    pari=false
    'calcoli
    else
    pari=true
    'caloli
    end if
    next i

    se non va bene cerca di spiegare meglio cosa ti serve....

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    35

    non so come spiegarmi

    putroppo finirò per scrivere le stesse cose:

    ho una variabile= "abcdefghilmno"

    a tutte le lettere nelle posizioni pari devo assegnare un valore numerico che cambia secondo la lettera

    lo stesso vale per quelle lettere nella posiozione dispari.

    "a c e g i m o" sono in posizioni dispari poichè la a si trova al primo posto, la c al terzo e così via...

    "b d f h l n" sono in posizioni pari poichè la b si trova al secondo posto, la d al terzo e così via.

    ogni lettera ha un valore numerico diverso. due lettere uguali ma in posizioni una pari e una dispari hanno valori diversi.
    QUESTO É IL PROBLEMA
    GRAZIE, Davide

  4. #4
    con il codice di prima riesci a stabilire sia il carattere, sia se questo è in posizione pari o dispari...
    puoi inizializzare un array in modo da associare ad ogni carattere un valore (a=1, b=2,....) poi, ad esempio, se il carattere è nella posizione pari lo lasci invariato, se nella dispari ci aggiungi un 0.5, cosi la stringa "abbca" diventa:

    1.5 2 2.5 3 1.5

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    35

    ci provo

    ti ringrazio, solo che nell'esempio di prima tu hai scritto:

    dim pari as boolean ' ok, dichiari una variabile di tipo booleana
    dim i as long 'v. di tipo long
    pari=false 'All'inizion è dispar (posizione 1) ' assegni false, ok.
    str="Pippo" 'questa è la stringa
    for i=1 to len(str) ' dall'inizio alla fine della stringa
    carattere=mid(str,i,1) 'prendi il carattere i-esimo
    if pari then ' da qui hai parlato solo inglese,
    ' non hai scritto del codice vb
    ' cioè hai scritto carattere= mid dall'inizio alla fine della stringa.
    ammettiamo che da il numero 5 tu gli dici che se è pari ecc...
    ma che ne sa lui...
    per lui pari è uguale a si o no
    se mi esce 5 vb come fa a sapere se pari o dispari....?
    ti ringrazio molto però mi hai parlato in molta teoria, anche io riesco a scrivere il concetto a parole, è in vb che non ci riesco.

  6. #6
    la funzione mid(string,start,lungezza) con i parametri str,i,1 ti restituisce il carattere della stringa alla posizione i, quindi nel ciclo for i=1 to len(str) ti restituisce uno alla volta tutti i caratteri dal primo all'ultimo (finiranno in Carattere).
    Per sapere se un carattere è in una posizione pari o dispari usi la varibile booleana pari (se uguale a True il carattere è nella posizione pari).
    Visto che parti dalla posizione 1 imposti pari a False e ad ogni ciclo cambi lo stato di pari (puoi anche fare pari=not pari)
    Spero di essermi spiegato meglio, se no dimmi pure...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    35

    ti ringrazio molto

    caro riky, ti ringrazio.
    ho capito qualcosa in più.
    il problema è questo
    stavo facendo un programma che facesse il cod fiscale,
    sull'ultima lettera mi sono bloccato.
    c'è chi mi ha consigliato questo come in un esempio di programma, ma visto che io non lo riesco a capire(però questo caos funziona)
    non lo posso usare.
    mica mi riesci a spiegare questo carnevale?
    oppure ancora più bello, mi puoi mica spiegare un altro modo per ottenere lo stesso risultato?
    grazie, davide

    TempNum = 0
    I = 1
    Do
    ' I DISPARI
    AppoNum = InStr("B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ 9WWZZYYXX", Mid(TxtCodFis, I, 1))
    TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
    I = I + 1
    If I > 15 Then Exit Do

    ' I PARI
    AppoNum = InStr("A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUV VWWXXYYZZ", Mid(TxtCodFis, I, 1))
    TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
    I = I + 1
    Loop
    TempNum = TempNum Mod 26
    TxtCodFis = TxtCodFis & Mid$("ABCDEFGHIJKLMNOPQRSTUVWXYZ", TempNum + 1, 1)

  8. #8
    Se ho capito bene questo codice serve solo x mettere l'ultimo carattere di nel codice fino a quel punto creato?

    Be, in AppoNum va (x il ciclo i-esimo) la posizione del carattere i-esimo della stringa TxtCodFis all'interno della cost

    B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYY XX

    x i dispari e

    A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYY ZZ

    x i pari

    non mi è molto chiaro il calcolo di TempNum....
    comunque questo alla fine viene usato prendendo il resto della sua divisione x 26 e utilizzando come ultima lettera la lettera dell'alfabeto corrispondente a questo resto.

    Mi sa che questa è un passaggio obbligatorio per la crazione del CF, quindi anche quelle due costanti...
    L'unica cosa i cui non riesco ad aiutarti è

    TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2

    x il resto spero che sia chiaro....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.