coniugazione verbi latini (parziale e con varianti)

esci lista.htm





/* latino2.mar */
/* verbi latini */
/* interattivo con correzione e conteggio errori */

#include "string.h"
#include "stdio.h"

char infinito[20],perfecto[20],radice[15],radice1[15];
char modi[11][50]={"presente indicativo:","imperfetto indicativo:",
"futuro indicativo:","perfetto indicativo:",
"piuccheperfetto indicativo:","futuro anteriore:",
"presente congiuntivo:","imperfetto congiuntivo:",
"perfetto congiuntivo:","piuccheperfetto congiuntivo:",
"imperativo presente e futuro:"};

char des1[72][9]={"o","as","at","amus","atis","ant",
"abam","abas","abat","abamus","abatis","abant",
"abo","abis","abit","abimus","abitis","abunt",
"i","isti","it","imus","istis","erunt",
"eram","eras","erat","eramus","eratis","erant",
"ero","eris","erit","erimus","eritis","erint",
"em","es","et","emus","etis","ent",
"arem","ares","aret","aremus","aretis","arent",
"erim","eris","erit","erimus","eritis","erint",
"issem","isses","isset","issemus","issetis","issent",
"a","ate","ato","ato","atote","anto"};

char des2[72][9]={"eo","es","et","emus","etis","ent",
"ebam","ebas","ebat","ebamus","ebatis","ebant",
"ebo","ebis","ebit","ebimus","ebitis","ebunt",
"i","isti","it","imus","istis","erunt",
"eram","eras","erat","eramus","eratis","erant",
"ero","eris","erit","erimus","eritis","erint",
"eam","eas","eat","eamus","eatis","eant",
"erem","eres","eret","eremus","eretis","erent",
"erim","eris","erit","erimus","eritis","erint",
"issem","isses","isset","issemus","issetis","issent",
"e","ete","eto","eto","etote","ento"};

char des3[72][9]={"o","is","it","imus","itis","unt",
"ebam","ebas","ebat","ebamus","ebatis","ebant",
"am","es","et","emus","etis","ent",
"i","isti","it","imus","istis","erunt",
"eram","eras","erat","eramus","eratis","erant",
"ero","eris","erit","erimus","eritis","erint",
"am","as","at","amus","atis","ant",
"erem","eres","eret","eremus","eretis","erent",
"erim","eris","erit","erimus","eritis","erint",
"issem","isses","isset","issemus","issetis","issent",
"e","ite","ito","ito","itote","unto"};

char des4[72][9]={"io","is","it","imus","itis","iunt",
"iebam","iebas","iebat","iebamus","iebatis","iebant",
"iam","ies","iet","iemus","ietis","ient",
"i","isti","it","imus","istis","erunt",
"eram","eras","erat","eramus","eratis","erant",
"ero","eris","erit","erimus","eritis","erint",
"iam","ias","iat","iamus","iatis","iant",
"irem","ires","iret","iremus","iretis","irent",
"erim","eris","erit","erimus","eritis","erint",
"issem","isses","isset","issemus","issetis","issent",
"i","ite","ito","ito","itote","iunto"};

int i,a,b,x,t,g,esatte,errate;
int risposta,opzione;
char formax[20];
char rad[30];

void coniuga(char radix[15],int x,int t)
{for (g=0;g<11;g++)
{ switch(g)
{ case 0:
case 1:
case 2:
case 6:
case 7:
case 10:
radix=radice;break;
case 3:
case 4:
case 5:
case 8:
case 9:
radix=radice1;break;
}
printf("%s %s\n",modi[g],infinito);
switch(t) {
case 1:
puts("scrivi la forma esatta,o tasto,poi return");
for (i=x;i<x+6;i++)
{scanf("%s",formax);
strcat(rad,radix);
strcat(rad,des1[i]);
if(!strcmp(formax,rad)) {puts("esatto");esatte=esatte+1;}
else
{printf("errato:esatto = %s\n",rad);errate=errate+1;}
strcpy(rad,"");}
break;

case 2:
puts("scrivi la forma esatta,o tasto,poi return");
for (i=x;i<x+6;i++)
{scanf("%s",formax);
strcat(rad,radix);
strcat(rad,des2[i]);
if(!strcmp(formax,rad)) {puts("esatto");esatte=esatte+1;}
else
{printf("errato:esatto = %s\n",rad);errate=errate+1;}
strcpy(rad,"");}
break;

case 3:
puts("scrivi la forma esatta,o tasto,poi return");
for (i=x;i<x+6;i++)
{scanf("%s",formax);
strcat(rad,radix);
strcat(rad,des3[i]);
if(!strcmp(formax,rad)) {puts("esatto");esatte=esatte+1;}
else
{printf("errato:esatto = %s\n",rad); errate=errate+1;}
strcpy(rad,"");}
break;

case 4:
puts("scrivi la forma esatta,o tasto,poi return");
for (i=x;i<x+6;i++)
{scanf("%s",formax);
strcat(rad,radix);
strcat(rad,des4[i]);
if(!strcmp(formax,rad)) {puts("esatto");esatte=esatte+1;}
else
{printf("errato:esatto = %s\n",rad); errate=errate+1;}
strcpy(rad,"");}
break;

}
puts("premi return,prego");getch();clrscr();
x=x+6; }
}

void chiede()
{
puts("scrivi infinito verbo latino regolare");
gets(infinito);
a=strlen(infinito);
a=a-3;
memcpy(radice,infinito,a);
puts("scrivi perfetto stesso verbo");
gets(perfecto);
b=strlen(perfecto);
memcpy(radice1,perfecto,b-1);
}

void forma()
{
puts("coniugazione 1,2,3,4 ");
scanf("%d",&t);
coniuga(radice,0,t);

puts("altra prova stesso verbo:1...fine:2 ");
scanf("%d",&opzione);
if (opzione==1) forma();
}


main()
{ clrscr();
strcpy(rad,"");
esatte=errate=0;
puts("possibile coniugare verbo latino regolare");
puts("indicando infinito e perfetto indicativo ");
puts("viene richiesta la coniugazione 1,2,3,4 ");
puts("rimane costante il verbo da coniugare ");
puts("coniugazione dei tempi in successione ");
puts("per cambiare verbo si deve finire con 2 ");
puts("e poi riattivare con ctrl-9 e nuovo verbo");
puts("------ premi return,prego ---------------");
getch();clrscr();
chiede();
forma();
printf("risposte esatte=%d\n",esatte);
printf("risposte errate=%d\n",errate);
puts("premi return,prego");
getch();
}