Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - associazione di lettere a numeri HELP
Forum - C/C++ - associazione di lettere a numeri HELP

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Luke (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/10/2008

Segnala al moderatore
Postato alle 19:23
Martedì, 07/10/2008
salve  a tutti sono nuovo di queste parti...ho reinstallato dev c++ per rinfrescarmi la memoria sul potente linguaggio di programmazione, scrivendo un programmino che ho intenzione di uploadare sul sito...SE SOLO SAPESSI COME SCRIVERLO!!!
il mio problema non dovrebbe essere enorme...
Devo, in pratica, avere la possibilità di associare le lettere di una stringa a numeri...ovvero
abcd=1234
perchè devo lavorare con le cifre basandomi sulle lettere.
qualcuno ha idea di come fare? immaginavo un vettore, ma non so da dove partire...
vi ringrazio per l'attenzione e attendo risposta

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 0:28
Mercoledì, 08/10/2008
... non so se ho capito bene ...
vorresti scrivere un programma per tradurre una stringa alfanumerica in una stringa numerica?

se è così e vuoi tradurre ad esempio

a->1
b->2
...
z->26

allora puoi usare una semplice operazione matematica, come nell'esempio seguente.

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.         using namespace std;
  6.  
  7.         const char *s = "abz";
  8.        
  9.         for (int i = 0; i < strlen(s); ++i)
  10.                 cout << s[i] << "->" << (s[i] - 'a' + 1) << endl;
  11.         cout << "premi INVIO per uscire" << endl;
  12.         cin.get();
  13.         return 0;
  14. }



Ciao :)

PM Quote
Avatar
Luke (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/10/2008

Segnala al moderatore
Postato alle 18:40
Mercoledì, 08/10/2008
In pratica il mio programmino dovrebbe funzionare cosi
Pseudocodifica:
1.input:   nome
2.process: a "lettera",associa "numero"
3.output:restituisci la somma dei numeri associati alle lettere

Es:

[a=1 b=2 c=3]
nome immesso: cab
operazione: (c=3,a=1,b=2) = 3+1+2

questo è il mio dilemma, è un pò che non programmo e mi sono un pò appassito...

spero di essermi spiegato meglio, cmq grazie mille per l'attenzione, e per quel frammento di codice perchè inconsapevolmente mi hai risolto un altro piccolo dramma :)

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 18:45
Mercoledì, 08/10/2008
ma il numero associato alla lettera corrisponde alla sua posizione nella parola(nome)

ad esempio:
nome

n = 1 perchè la sua posizione è la prima
o=2
m=3
e = 4 perchè è la quarta lettera?
quindo dovrebbe ritornare 1+2+3+4?
Codice sorgente - presumibilmente C/C++

  1. char name[10];
  2.     int a=0;
  3.     cin >> name;
  4.     for(int i=1;i<=strlen(name);i++)
  5.           a+=i;  
  6.     cout << a << endl;



prova cosi se non ho capito male.

Ultima modifica effettuata da Overflow il 08/10/2008 alle 18:49
PM Quote
Avatar
Luke (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/10/2008

Segnala al moderatore
Postato alle 19:19
Mercoledì, 08/10/2008
ho provato il codice e si avvicina abbastanza a quello che sto cercando, ora me lo lavorerò un pò e vediamo se ottengo risultati
la posizione delle lettere tradotte in numeri è indifferente.

ti spiego il mio progetto per essere chiaro.

come ti ho gia detto sto cercando di associare lettere a numeri, queste associazioni seguono una tavola pitagorica dove la prima posizione, a , è uguale a 1, la seconda, b, è uguale a due, fino alla i, associata al numero 9. la sequenza per le altre lettere prosegue nello stesso modo, ovvero j=1 k=2 l=3

in pratica
1 a j s
2 b k t
3 c l u
4 d m v
5 e n w
6 f o x
7 g p y
8 h q z
9 i r

eccoti la tabella di codifica che sto provando ad eseguire in c++.
se avessi idee sarei lieto di farmele chiarire!
dato il tuo interesse ti terrò aggiornato!
ciao!

PM Quote
Avatar
Luke (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/10/2008

Segnala al moderatore
Postato alle 19:57
Mercoledì, 08/10/2008
ho provato il tuo codice ed è quasi ok, e ti pongo a sto punto un altro quesito...
se la somma finale delle lettere mi da per esempio 12, come faccio a farlo diventare 3(1+2)?

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 8:49
Giovedì, 09/10/2008
servirebbe un font a spaziatura fissa... ma pazienza ... 8-|

la tabellina di conversione in pratica ripete le cifre da 1 a 9 ...

in pratica vuoi

abcdefghijklmnopqrstuvwxyz
12345678912345678912345678

per questo puoi usare l'operatore di modulo: %

siccome non usi lo zero, fai modulo 9 e non 10

quindi per ogni lettera ne prendi il codice ascii, gli sottrai il codice ascii della prima lettera: la 'a', in questo modo ottieni la posizione della lettra nell'alfabeto, partendo da 0

abcdefghijklmnopqrstuvwxyz
00000000001111111111222222
01234567890123456789012345

poi fai il modulo 9, cioe' prendi il resto della divisione per 9

abcdefghijklmnopqrstuvwxyz
01234567801234567801234567

a questo punto aggiungi 1

abcdefghijklmnopqrstuvwxyz
12345678912345678912345678



ecco il programmino che lo implementa:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.     using namespace std;
  6.  
  7.     char name[10];
  8.     int a=0;
  9.    
  10.     cout << "Name: ";
  11.     cin >> name;
  12.     for(unsigned int i = 0; i < strlen(name); ++i)
  13.         a += (name[i] - 'a') % 9 + 1;
  14.     cout << "a = " << a << endl;
  15.     cout << "premi INVIO per uscire" << endl;
  16.     cin.get();
  17.     return 0;
  18. }



era questo che ti serviva ?? :)

Ultima modifica effettuata da gioser il 09/10/2008 alle 8:53
PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 9:22
Giovedì, 09/10/2008
Potevi semplicemente implementare una struttura chiave-valore no?... :k:


Luca

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 17:29
Giovedì, 09/10/2008
Testo quotato

Postato originariamente da WARRIOR:

Potevi semplicemente implementare una struttura chiave-valore no?... :k:


Luca



ma così è più elegante e sintetico :D

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo