-
GDM1.
User deleted
Ragazzi vi posto un cifrario di cesare in C!
Per chi non lo sapesse il cifrario di cesare è un cifrario a sostituzione monoalfabetica in cui ogni lettera del testo viene sostituita dalla lettera che si trova 3 posizioni dopo nell'alfabeto.CODICE#include <stdio.h>
#include <string.h>
void decript(char *stringa);
void encript(char *stringa);
int main() {
int i;
int l;
int n;
int s;
char stringa[1200];
system ("cls");
printf("Inserisci la frase da elaborare: ");
gets(stringa);
l=strlen(stringa);
if (l>120){
printf("Hai inserito una lunghezza non consentita!!!");
system("pause");
return 0;
}
system("cls");
printf("1) Decriptn2) Encriptn");
scanf("%d", &n);
if (n==1){
decript(stringa);
printf("nStringa convertita:n%snn",stringa);
}else{
encript(stringa);
printf("nStringa convertita:n%snn",stringa);
}
system("pause");
return 0;
}
void decript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++) {
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] += 3 ;
if ((a>'9')&&(a<'A'))
stringa[i] -= 10 ;
if ((a>'Z')&&(a<'a'))
stringa[i] -= 26 ;
if (a>'z')
stringa[i] -= 26 ;
}
}
void encript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++){
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] -= 3 ;
if (a<'0')
stringa[i] += 10 ;
if ((a<'A')&&(a>'9'))
stringa[i] += 26 ;
if ((a<'a')&&(a>'Z'))
stringa[i] += 26 ;
}
}
Anche postato su pastebin per chi volesse compilarlo!!
Qui
ATTENZIONE!!!!
Dentro questo programma cè un bug!!!
Chi mi sa dire qual'è e come rimediare???SPOILER (click to view)Vediamo se riuscite a scovarlo!!File AllegatoCripter.rar
(Number of downloads: 5)
. -
GDM1.
User deleted
UP!!!
Dai ragazzi nessuno???. -
megas93.
User deleted
XD io so un flooder mica un mago xD . -
Depa Marco.
User deleted
beh megas... eheheh lo sapevamo... ahahahah . -
.
#include <stdio.h>
#include <string.h>
void decript(char *stringa);
void encript(char *stringa);
int main() {
int i;
int l;
int n;
int s;
char stringa[1200];
system ("cls");
printf("Inserisci la frase da elaborare: ");
gets(stringa);
l=strlen(stringa);
if (l>120){
printf("Hai inserito una lunghezza non consentita!!!");
system("pause");
return 0;
}
system("cls");
printf("1) Decriptn2) Encriptn"); ---> Manca la slash dopo encript e decript..
scanf("%d", &n);
if (n==1){
decript(stringa);
printf("nStringa convertita:n%snn",stringa);
}else{
encript(stringa);
printf("nStringa convertita:n%snn",stringa);
}
system("pause");
return 0;
}
void decript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++) {
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] += 3 ;
if ((a>'9')&&(a<'A'))
stringa[i] -= 10 ;
if ((a>'Z')&&(a<'a'))
stringa[i] -= 26 ;
if (a>'z')
stringa[i] -= 26 ;
}
}
void encript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++){
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] -= 3 ;
if (a<'0')
stringa[i] += 10 ;
if ((a<'A')&&(a>'9'))
stringa[i] += 26 ;
if ((a<'a')&&(a>'Z'))
stringa[i] += 26 ;
}
}. -
The Titan.
User deleted
gia . -
Depa Marco.
User deleted
grande... nn me ne ero accorto... . -
GDM1.
User deleted
CITAZIONE#include <stdio.h>
#include <string.h>
void decript(char *stringa);
void encript(char *stringa);
int main() {
int i;
int l;
int n;
int s;
char stringa[1200];
system ("cls");
printf("Inserisci la frase da elaborare: ");
gets(stringa);
l=strlen(stringa);
if (l>120){
printf("Hai inserito una lunghezza non consentita!!!");
system("pause");
return 0;
}
system("cls");
printf("1) Decriptn2) Encriptn"); ---> Manca la slash dopo encript e decript..
scanf("%d", &n);
if (n==1){
decript(stringa);
printf("nStringa convertita:n%snn",stringa);
}else{
encript(stringa);
printf("nStringa convertita:n%snn",stringa);
}
system("pause");
return 0;
}
void decript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++) {
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] += 3 ;
if ((a>'9')&&(a<'A'))
stringa[i] -= 10 ;
if ((a>'Z')&&(a<'a'))
stringa[i] -= 26 ;
if (a>'z')
stringa[i] -= 26 ;
}
}
void encript(char *stringa) {
int i;
int a;
for (i=0;i<strlen(stringa);i++){
if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
a = stringa[i] -= 3 ;
if (a<'0')
stringa[i] += 10 ;
if ((a<'A')&&(a>'9'))
stringa[i] += 26 ;
if ((a<'a')&&(a>'Z'))
stringa[i] += 26 ;
}
}
Purtroppo no!! xD Quello è un errore di forumcommunity che omette le "" nel codice!!!
Vabbè ve lo dirò io xD
L'errore è qui:
char stringa[1200];
gets(stringa);
questo tipo di errore è molto pericoloso per la programmazione!!! proprio perchè se inseriamo una stringa superiore a 1200 il buffer di memoria va in overflow ovvero sovraccarico e si "intoppa" il programma!! Diciamo che il registro EIP , che è il registro dello stack che ritorna l'idirizzo della funzione che deve eseguire successivamente, viene sovrascritto con quello che scriviamo!!
E se noi scriviamo un'indirizzo di una shell di comando?
In quel caso possiamo fare ciò che si vuole alla macchina avendo aperto una shell di rott! ;D. -
@N63.
User deleted
nn mi intendo molto di programmazione....
. -
black224.
User deleted
io non ci ho capito niente... . -
DarkDevil88.
User deleted
caspita non è che mi puoi fare da maestro? xD . -
MS-DOS.
User deleted
Molto carino. Bravo. .