PDA

View Full Version : [C++] problemi vari con un codice per crittare/decrittare


AngeL)
05-07-2006, 17:35
oggi pomeriggio mi è tornato in mente il motivo per cui ho imparato il c++: scrivere un programma che critti/decritti le frasi.
infatti cercando su internet lessi qualcosa sul c++ e cosi iniziai a impararlo.
ora pero sto incontrando diverse difficolta e mi servirebbe il vostro aiuto.
al momento ho 'solo' due problemi:
1)come faccio a prendere i caratteri da un cin uno alla volta?
2)come faccio a modificare i caratteri di una stringa uno alla volta, modificarli e rimetterli al loro posto nella stringa?

grazie in anticipo :)

xplorer87
05-07-2006, 17:46
se ho ben capito quello che devi fare, ti conviene usare un array di char (che tecnicamente non e' molto diverso da una stringa, anzi): fai un ciclo e cosi' prendi da cin un carattere alla volta, idem quando devi modificarli.

AngeL)
05-07-2006, 22:08
grazie.
poi anziche fare il while faccio un for, giusto?

ah un'altra cosa: come faccio a prendere il cin e metterlo in questo array di caratteri?

Fenomeno85
05-07-2006, 23:08
se ti posso consigliare leggiti thinking in c++

~§~ Sempre E Solo Lei ~§~

AngeL)
06-07-2006, 07:19
lo sto leggendo ma non vado oltre la fine del capitolo 3 perche e complicato :D

NA01
06-07-2006, 07:32
mmmmmh... probabilmente allora prima ti servirebbe qualcosa tipo thinnking in c ;)
se capisci discretamente l'inglese è decisamente ben fatto

ciao!

AngeL)
06-07-2006, 08:05
l'inglese lo conosco abbastanza bene ma il C non mi piace :D
il mio problema è che non riesco a capire classi e strutture :(

trallallero
06-07-2006, 08:39
l'inglese lo conosco abbastanza bene ma il C non mi piace :D
il mio problema è che non riesco a capire classi e strutture :(
non ti preoccupare, classi e strutture non servono niente!
anzi io le leverei ... C e C++ sarebbero piú semplici cosí :D

AngeL)
06-07-2006, 09:02
non ti preoccupare, classi e strutture non servono niente!
anzi io le leverei ... C e C++ sarebbero piú semplici cosí :D
andiamo a braccetto :D

edit: non mi serve piu, faccio inserire una parola per volta :D
quando finisco (se ci riesco entro quest anno) posto il codice :D

trallallero
06-07-2006, 09:12
andiamo a braccetto :D
guarda che scherzavo eh ;)
ancora ancora il C senza strutture potrebbe andare (da matti cmq)
ma se levi le classi al C++ che ti rimane ???

cmq come posso spezzare un array di char contenente spazi in parole e salvare tutte queste parole in variabili diverse o in un vector?
ho pensato a memorizzare in un vector la posizione degli spazi e poi prendere tutte le lettere comprese tra uno spazio e un altro e inserirle in un altro vector.
il problema è che non so come prendere le lettere comprese tra gli spazi :(

il del C++ non conosco bene gli standard (vector, template etc)
per cose del genere utilizzo ancora il C e neanche le scanf, di cui non mi fido.
Se vuoi ti faccio una semplice funzioncina in C che fa quello che ti serve.
Se invece vuoi usare le classi standard del C++ aspetta qualcun altro ;)

AngeL)
06-07-2006, 09:16
guarda che scherzavo eh ;)
anchio :D

AngeL)
06-07-2006, 09:32
mi serve ancora aiuto..
qualcuno puo convertire questa
char* reverse (char *s)
{
int i, j, l;
char c;

for (i=0,l=strlen(s),j=l-1; i<l/2; c=s[i], s[i++]=s[j], s[j--]=c);

return s;
} funzione di andbin in void, che usi un puntatore per modificare le lettere, come questa? ->void critt(char *v)
{
char *p;
for(int i=0;i<strlen(v);i++)
{
p=&v[i];
switch(*p)
{
case'A':
case 'a':
*p='k';
break;
case'B':
case 'b':
*p='c';
//ecc...
se faccio par=reverse(par) dice che manca l' lvalue :(

AngeL)
06-07-2006, 10:18
ho fatto tutto ma appena inserisco la prima parola si blocca tutto..
questa è la parte incriminata
do{
cout << "Inserire una parola alla volta, exit per uscire: ";
cin >> par;
if(par[0]!='e'&&par[1]!='x'&&par[2]!='i'&&par[3]!='t')
{
critt(par);
reverse(par);
cout << par;
}
}
while(par[0]!='e'&&par[1]!='x'&&par[2]!='i'&&par[3]!='t');

e questa è la funzione reverse, quella che fa bloccare tutto:

void reverse (char *s)
{
int i, j, l;
char *c;

for (i=0,l=strlen(s),j=l-1; i<l/2;)
{
*c=s[i], s[i++]=s[j], s[j--]=*c;
}
}