Domanda [AIUTO]Programma crypt

Stato
Discussione chiusa ad ulteriori risposte.

TizioLinux

Utente Bronze
12 Settembre 2016
20
3
0
31
Salve a tutti, avrei bisogno di un aiuto per modificare questo script che grazie al metodo di crittografia "cifrario a sostituzione" deve restituirmi il testo scritto cryptato.

[HASHTAG]#include[/HASHTAG] "stdio.h"

void main()
{
int i=0;
char frase[20];
printf("Enter text to crypt:");
scanf("%s",frase);
while(( frase == getchar()) != '\n')
{
(SERIE DI IF)
i++;
}
return 0;
}


i problemi sono tre:
1) Il programma restituisce lettera per lettera cryptata non sulla stessa riga ma andando a capo.
2) Il carattere "spazio" non lo rileva.
3) Il programma testato su linux non si ferma mai e sono costretto a schiacciare ctrl+c per uscire.

Ringrazio in anticipo chi mi darà consigli.
 
Ho risolto i problemi grazie al for, però ora mi salta delle lettere.. esempio:
Ciao 4 lettere
Cripta la "c" e la "a", soluzioni? Credo siano gli if..


Inviata da iPhone tramite app ufficiale di Inforge.net
 
Ciao ecco il codice, ovviamente non completo ma l'errore me lo da sia con gli if che con il case.. non legge tutte le lettere..


[HASHTAG]#include[/HASHTAG] "stdio.h"
[HASHTAG]#include[/HASHTAG] "stdlib.h"
[HASHTAG]#include[/HASHTAG] "string.h"
[HASHTAG]#include[/HASHTAG] "unistd.h"
int main()
{
int i,lenght;
char frase[50];
printf("Enter text to crypt:");
fgets(frase, 50, stdin);
fflush(stdin);
lenght=strlen(frase)-1;
printf("lenght: %d\n",lenght);
for(i=0; i <= lenght; i++)
{
switch(frase)
{
case 'a': printf("b"); break;
case 'b': printf("c"); break;
case 'c': printf("d"); break;
case 'i': printf("a"); break;
case 'o': printf("2"); break;
default: printf("not recognized."); break;
}
i++;
}
printf("\n");
}

grazie mille.
 
1) usa i tag code per postare i codici
2) ti cripta una lettera ogni due perchè hai messo due volte l'incremento una nel for e una dopo lo switch
 
Che figuraccia... Quando ho cambiato da while a for mi sono dimenticato quell'incremento.. Grazie mille davvero ora funziona alla perfezione!!
 
Stato
Discussione chiusa ad ulteriori risposte.