Vi spiego il progetto, io ho creato un programma in c per fare da farfallino a italiano e viceversa, solo che non è "a prova di scimmia", cioè se uno scrive DEC e poi scrive una parola in italiano dovrebbe bloccarsi non decodificare... Stessa cosa viceversa. Così ho pensato di creare un programma che riconosce se è italiano, farfallino o altro e da solo fare ciò che deve, non chiedere più se COD o DEC e fare di conseguenza ciò che deve, oltre a ciò pensavo di comprendere tipo afa che c'è in italiano, ma potrebbe essere anche farfallino in questo caso chiedere cosa si vuole fare...
il codice creato da me inizialmente è così:
codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
/*--dichiarazione funzioni--*/
void Codifica(char[], char[], int);
void Decodifica(char[], char[], int);
main()
{
/*--controllo cod\dec--*/
char cod[3],dec[3],ins[3];
int fine=1;
int x, y;
strcpy(cod,"COD");
strcpy(dec,"DEC");
while(fine==1)
{
printf("INSERIRE [COD] O [DEC]: ");gets(ins);
x=strcmp(ins,cod);
y=strcmp(ins,dec);
if(x==0 || y==0)fine=0;
}
char farfallino[1000];
/*--codifica--*/
if(x==0)
{
int lug;
int fin=1;
printf("\n-------CODIFICA-------\n");
while(fin==1)
{
printf("INSERIRE LA PAROLA MAIUSCOLA: ");
gets(farfallino);
lug=strlen(farfallino);
int u;
int o;
int uo=0;
for (u=0;u<lug;u++)
{
o=farfallino[u];
if (isupper(o) || o==' ')uo=uo+1;
if(uo==lug)fin=0;
}
}
int y;
int conta=0;
for(y=0;y<lug;y++)
{
if(farfallino[y]=='A'|| farfallino[y]=='E'|| farfallino[y]=='I'|| farfallino[y]=='O'|| farfallino[y]=='U')
{
conta=conta+3;
}
else
{
conta=conta+1;
}
}
char frase[conta];
printf("\nORIGINALE: %s",farfallino);
Codifica (farfallino, frase, lug);
printf("\nFARFALLINO: %s",frase);
}
else
{
/*--decodifica--*/
int lug;
int fin=1;
printf("\n-------DECODIFICA-------\n");
while(fin==1)
{
printf("INSERIRE LA PAROLA MAIUSCOLA: ");
gets(farfallino);
lug=strlen(farfallino);
int u;
int o;
int uo=0;
for (u=0;u<lug;u++)
{
o=farfallino[u];
if (isupper(o) || o==' ')uo=uo+1;
if(uo==lug)fin=0;
}
}
int y;
int conta;
conta=lug;
for(y=0;y<lug;y++)
{
if(farfallino[y]=='A'|| farfallino[y]=='E'|| farfallino[y]=='I'|| farfallino[y]=='O'|| farfallino[y]=='U')
{
conta=conta-1;
}
}
char frase[conta];
printf("\nORIGINALE: %s",farfallino);
Decodifica (farfallino, frase, lug);
printf("\nFARFALLINO: %s",frase);
}
fflush(stdin);
getchar();
}
/*--funzione Codifica--*/
void Codifica(char code[], char fr[], int lu)
{
int j;
int r=0;
for(j=0;j<(lu+1);j++)
{
switch (code[j])
{
case 'A':
fr[r]='A';
fr[r+1]='F';
fr[r+2]='A';
r=r+3;
break;
case 'E':
fr[r]='E';
fr[r+1]='F';
fr[r+2]='E';
r=r+3;
break;
case 'I':
fr[r]='I';
fr[r+1]='F';
fr[r+2]='I';
r=r+3;
break;
case 'O':
fr[r]='O';
fr[r+1]='F';
fr[r+2]='O';
r=r+3;
break;
case 'U':
fr[r]='U';
fr[r+1]='F';
fr[r+2]='U';
r=r+3;
break;
default:
fr[r]=code[j];
r=r+1;
}
}
}
/*--funzione Decodifica--*/
void Decodifica(char coder[], char fra[], int ln)
{
int s;
int b=0;
for(s=0;s<(ln+1);s++)
{
switch (coder[s])
{
case 'A':
fra[b]='A';
s=s+2;
b=b+1;
break;
case 'E':
fra[b]='E';
s=s+2;
b=b+1;
break;
case 'I':
fra[b]='I';
s=s+2;
b=b+1;
break;
case 'O':
fra[b]='O';
s=s+2;
b=b+1;
break;
case 'U':
fra[b]='U';
s=s+2;
b=b+1;
break;
default:
fra[b]=coder[s];
b=b+1;
}
}
}
Pensavo di mettere all'inizio dapprima un controllo con il dizionario italiano ecc.