Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    47

    [C++] Aiuto con una funzione "cripta" per criptare una stringa.

    Ciato a tutti nuovamente
    Il programma che sto cercando di fare è il seguente:

    "scrivere una funzione di nome cripta che accetti come argomenti una stringa sorgente e una stringa destinataria. La stringa destinataria viene generata sostituendo ogni lettera della stringa sorgente con quella simmetricamente opposta nell'alfabeto (considerato di 26 lettere)
    Esempi:
    cripta("abcde", s2); //s2 = "zyxwv";

    Per lo svolgimento dell'esercizio non è consentito l'utilizzo della libreria string.h e delle sue funzioni.

    Io ho creato la mia funzione cripta, ho pensato che per far sì che in s2 ci sia la lettera simmetricamente opposta devo considerare il valore ASCII del carattere di s1 che voglio criptare, aggiungendo a questo " 26- abs ( int('a')-int (*s1) ); " ovvero, ci aggiungo 26 - la differenza di valore, positiva, che c'è tra il primo carattere dell' alfabeto ( 'a' ) e il valore ASCII del carattere considerato.
    Vi posto qui di seguito la funzione:

    codice:
    void cripta (char *s1, char *s2)
    {
    
    	int k=0;
    	for (char *p=s1;*p;p++)
    		k++;
    	int o=0;
    	for (int n=0;n<k;n++,s1++,s2++)
    	{
    
    		*s2=*s1;
    		o=int (*s2);
    		o=o+26 - abs (int ('a')-int(*s1));
    		cout<<o<<endl<<int(*s2)<<endl;   //Solo per controllare che i valori dei "criptati"                                                
    		                                                  siano quelli che volevo.....
                    
                    *s2=char (o);                 //Ho il forte dubbio che sia questo il problema....
    
    		
    	}
    	*s2='\0';            //chiudo la stringa, aggiungo un carattere nullo
    
    }


    Nal main viene solo introdotta s1 da tastiera (ho usato cin.getline( ) )e dichiarata s2.
    L'output del programma è il seguente (scrivo solo s2):

    {{{{{
    Ovvero ogni carattere mi diventa una parentesi graffa....
    Se sapete cosa sbaglio potreste dirmelo?
    Come sempre, se avete soluzioni migliori e volete renderle comuni siete più che ben accetti

    Grazie mille dell'aiuto!!
    A presto!!!

  2. #2
    Prova così:

    codice:
    void cripta (char *s1, char *s2)
    {
    	for (;* s1 ; s1 ++, ++s2)
    		*s2='z' - *s1  + 'a';
    	*s2='\0';
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    47
    Grazie mille, ho visto ora la risposta.....
    Adesso ci ragiono su....che bello, entrambi della stessa cittù cmq

    Se non dovessi capire qualcosa posto nuovamente, grazie mille dell'aiuto....ciao!!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.