Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

Funzioni visual basic e algoritmi
(Questo messaggio è stato modificato l'ultima volta il: 18/10/2014, 20:42 da Lelep0w4.)

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Salve a tutti nerd smanettoni programmatori (in senso buono eh)
Ritorno a scrivere per la seconda/terza volta circa, quando arriverò ad un certo livello sarò più frequente qui, in questa sezione,
Il motivo è che la nostra cara prof di informatica ci ha assegnato due esercizi su visual Basic poiché da poco abbiamo fatto le funzioni sulle stringhe proprio di vb
Il primo esercizio era: Dire se una stringa è o meno un palindromo, cioè se si può leggere ugualmente al contrario, (Anna, Otto, ecc...)
Il che non ci vuole niente ho usato la funzione Right(string), legge da destra a sinistra, se la nuova stringa è uguale alla precedente allora è palindromo.
Secondo esercizio, forniti: Cognome, nome, anno di nascita, calcolare la parte iniziale del codice fiscale.
Per tutti e tre i dati si dovrebbe usare la funzione Mid(string, m, n) dove n sta per carattere da cui cominciare a visualizzare, ed m sta per numero di caratteri da visualizzare, (spero di essere chiaro, anche se voi ne sapete di più).
Per l'anno la funzione Mid è facilissima, basta prendere gli ultimi 2 caratteri, per gli altri dati no, poiché bisogna controllare che i primi 3 caratteri da estrarre siano consonanti (niente casi particolari di nomi e cognomi)
Mi sapreste aiutare? Come dovrei fare? Che ne pensate?

18/10/2014, 20:42
#1
Cerca

1 Life, 1 Avatar <3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
Purtroppo non so nulla di vb, da noi facciamo solo c e c++

19/10/2014, 14:34
#2
Cerca

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Facciamo a cambio pocciox?? Happywide
da noi facciamo solo vb, ma io vorrei fare c++

19/10/2014, 14:42
#3
Cerca

Amministratore
Messaggi: 2,338
Discussioni: 233
Registrato: 03-2011
Mix: 2,578.4
Devi prima di tutto sapere come è calcolato un codice fiscale per fare quel programma.
Lo spezzetti e per ogni pezzetto ci fai le sue righe di codice. Smile


[Per vedere i link devi REGISTRARTI.]

Prima di aprire ogni contenuto scaricato su siti esterni ad HackMix, scansionatelo su VirusTotal.
19/10/2014, 18:28
#4
Cerca

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Grazie admin Happywide
Prime tre lettere del cognome, prime tre lettere del nome, ultimi due numeri dell'anno di nascita,
Il mio problema è, come faccio ad estrarre le prime tre lettere che siano per forza consonanti, e se sono vocali deve andare alla lettera successiva della stringa?

19/10/2014, 18:38
#5
Cerca

1 Life, 1 Avatar <3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
una idea che ho ma non saprei come realizzarla è assegna a ogni lettera dell'alfabeto un numero, e alle vocali assegna un numero che tu possa controllare. spero che sia una idea realizzabile

19/10/2014, 22:20
#6
Cerca

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Beh, non vorrei farlo troppo complesso, deve essere una cosa abbastanza immediata

19/10/2014, 22:44
#7
Cerca

1 Life, 1 Avatar <3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
Eh beh devi crearle te le funzioni immediate, poi una volta che l'hai creata puoi farla 5000 volte e diventa immediata

20/10/2014, 14:19
#8
Cerca

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Vorrei fare l'algoritmo tutto con la funzione Mid, solo che per quanto riguarda il nome e il cognome è un po' più complicato,
io ho una mezza idea, solo che non so quanto faciliti le cose, e se poi alla fine risulti:
Nell'algoritmo, nella parte del cognome e del nome, attraverso un ciclo estraggo ad una ad una le lettere, fino a che non si arriva a tre lettere estratte, ogni volta che ne estrae una, con "if" controllo se tale lettera è:

Citazione: lettera <> A AND lettera <> E AND lettera <> I AND lettera <> O AND lettera <> U

cioè controllo che sia diversa dalle 5 vocali, e poi esce dal ciclo (quello sopra è solo un esempio fatto sul momento di come potrebbe essere scritto l'algoritmo), noi usiamo "<>" per dire che è "diverso da..."

ditemi se è giusto o meno

20/10/2014, 15:44
#9
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 20/10/2014, 22:53 da Pocciox.)

1 Life, 1 Avatar &lt;3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
if tutta quella roba li allora segnatela e passa alla prossima, altrimenti passa alla prossima. Mi sembra buona Happywide

20/10/2014, 22:53
#10
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 20/10/2014, 22:59 da Lelep0w4.)

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Happywide non l'avevo capita subito pocciox
allora vedo di farlo in questo modo

20/10/2014, 22:59
#11
Cerca

1 Life, 1 Avatar &lt;3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
Poi dicci se ha funzionato o meno

21/10/2014, 15:31
#12
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Scusa ma sono stato preso da mille altre cose.
Ho buttato giu qualcosa al volo.
In realtà l'algoritmo è piu complesso di quello che dici, lo riporto sotto per riferimento.
Quello che ho messo giu io qui dovrebbe funzionare, tenendo conto dell'algoritmo vero che trovi sotto, ho fatto solo la parte nome cognome visto che per il resto dici di non avere problemi.
Vista l'ora tarda spero di non aver scritto caxxate Asd Happywide

[Immagine: 04a15-d4e3f522-8377-4e40-8c6e-f1d73a274643.png]

ecco il codice
    VBNET Programming
  1. Public Class frm_main
  2.  
  3. Private Sub btn_calcola_Click(sender As Object, e As EventArgs) Handles btn_calcola.Click
  4. Dim elencoVocali As String = "aeiou"
  5. Dim nome As String = txt_nome.Text.Replace(" ", "")
  6. Dim cognome As String = txt_cognome.Text.Replace(" ", "")
  7. Dim vocali As String
  8. Dim consonanti As String
  9.  
  10.  
  11. 'CALCOLO PER COGNOME
  12. For Each letter As Char In cognome
  13. If elencoVocali.IndexOf(letter) > -1 Then
  14. vocali += letter
  15. Else
  16. consonanti += letter
  17. End If
  18. Next
  19.  
  20. Dim cognomeCodice As String = Mid((consonanti + vocali), 1, 3)
  21. cognomeCodice = cognomeCodice.PadRight(3, "X")
  22.  
  23. vocali = ""
  24. consonanti = ""
  25.  
  26. 'CALCOLO PER NOME
  27. For Each letter As Char In nome
  28. If elencoVocali.IndexOf(letter) > -1 Then
  29. vocali += letter
  30. Else
  31. consonanti += letter
  32. End If
  33. Next
  34.  
  35. 'caso speciale, piu di 4 consonanti, rimuovo la seconda cosi prendo la 1 la 3 e 4
  36. If consonanti.Length >= 4 Then
  37. consonanti = consonanti.Remove(1, 1)
  38. End If
  39.  
  40. Dim nomeCodice As String = Mid((consonanti + vocali), 1, 3)
  41. nomeCodice = nomeCodice.PadRight(3, "X")
  42.  
  43. txt_codice.Text = cognomeCodice
  44. txt_codice.Text += nomeCodice
  45.  
  46. End Sub
  47. End Class



Riferimento:
Citazione:Caratteri indicativi del cognome
I cognomi che risultano composti da più parti o comunque separati od interrotti, vengono considerati come se fossero scritti secondo un'unica ed ininterrotta successione di caratteri.

Per i soggetti coniugati di sesso femminile si prende in considerazione soltanto il cognome da nubile.
Se il cognome contiene tre o più consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la seconda e la terza consonante.
Se il cognome contiene due consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima e la seconda consonante e la prima vocale.
Se il cognome contiene una consonante e due vocali, si rilevano, nell'ordine, quella consonante e quindi la prima e la seconda vocale.
Se il cognome contiene una consonante e una vocale, si rilevano la consonante e la vocale, nell'ordine, e si assume come terzo carattere la lettera x (ics).
Se il cognome e' costituito da due sole vocali, esse si rilevano, nell'ordine, e si assume come terzo carattere la lettera x (ics).

Caratteri indicativi del nome
I nomi doppi, multipli o comunque composti, vengono considerati come scritti per esteso in ogni loro parte e secondo un'unica ed ininterrotta successione di caratteri.

Se il nome contiene quattro o più consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la terza e la quarta consonante.
Se il nome contiene tre consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la seconda e la terza consonante.
Se il nome contiene due consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima e la seconda consonante e la prima vocale.
Se il nome contiene una consonante e due vocali, i tre caratteri da rilevare sono, nell'ordine, quella consonante e quindi la prima e la seconda vocale.
Se il nome contiene una consonante e una vocale, si rilevano la consonante e la vocale, nell'ordine, e si assume come terzo carattere la lettera x (ics).
Se il nome e' costituito da due sole vocali, esse si rilevano nell'ordine, e si assume come terzo carattere la lettera x (ics).



digger
22/10/2014, 1:34
#13
Cerca

Iscritto
Messaggi: 5,985
Discussioni: 259
Registrato: 03-2011
Mix: 0
Va beh, noi non siamo arrivati a quel livello digger,
In ogni caso grazie a tutti quanti admin pocciox digger

22/10/2014, 13:49
#14
Cerca

1 Life, 1 Avatar &lt;3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
ottimo lavoro digger, ci capisco davvero poco di vb :/

22/10/2014, 15:24
#15
Cerca




Utenti che stanno guardando questa discussione: 1 Ospite(i)