Update RandEsam.c
parent
4f1cfb3e46
commit
ebef95318e
227
RandEsam.c
227
RandEsam.c
|
@ -1,105 +1,140 @@
|
||||||
#define ver "0.6.4"
|
#define VERSION "1.00"
|
||||||
|
|
||||||
|
#define N 42
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#define N 100
|
void *concorda (char esame[N], int genere);
|
||||||
|
|
||||||
#define fs 1
|
|
||||||
#define fp 2
|
|
||||||
#define ms 3
|
|
||||||
#define mp 4
|
|
||||||
|
|
||||||
void *normalizza (char esame[N], int gen) {
|
|
||||||
int i;
|
|
||||||
for (i=0; i < 50; i++) {
|
|
||||||
if (esame[i] == ' ') {
|
|
||||||
switch (gen) {
|
|
||||||
case fs:
|
|
||||||
switch (esame[i-1]) {
|
|
||||||
case 'e': esame[i-1]='a'; break;
|
|
||||||
case 'i': esame[i-1]='a'; break;
|
|
||||||
default: break;
|
|
||||||
} break;
|
|
||||||
case fp:
|
|
||||||
switch (esame[i-1]) {
|
|
||||||
case 'a': esame[i-1]='e'; break;
|
|
||||||
case 'i': esame[i-1]='e'; break;
|
|
||||||
default: break;
|
|
||||||
} break;
|
|
||||||
case ms:
|
|
||||||
switch (esame[i-1]) {
|
|
||||||
case 'i': esame[i-1]='o'; break;
|
|
||||||
case 'e': esame[i-1]='o'; break;
|
|
||||||
default: break;
|
|
||||||
} break;
|
|
||||||
case mp:
|
|
||||||
switch (esame[i-1]) {
|
|
||||||
case 'e': esame[i-1]='i'; break;
|
|
||||||
default: break;
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (void *)esame;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main () {
|
int main () {
|
||||||
int i = 1;
|
char parte1[N], parte2[N], parte3[N];
|
||||||
int a = 1;
|
char *esame = malloc (sizeof (esame) * N);
|
||||||
int gen=1;
|
char risposta[1];
|
||||||
char *esame=malloc (sizeof (esame) *20);
|
int gen;
|
||||||
char r1[N], r2[N], r3[N], r4[N];
|
int block = 0;
|
||||||
char risposta[1];
|
int randum; // numero random
|
||||||
int randum;
|
int mode = 1;
|
||||||
srand (time(NULL));
|
srand (time(NULL));
|
||||||
do {
|
do {
|
||||||
randum = rand () % 3 + 1;
|
while (mode == 1) {
|
||||||
switch (randum) {
|
printf("\nModalita'? 1: Semiserio; 2: Normale ");
|
||||||
case 1: strcpy (r1, "\n>>> Psico"); break;
|
scanf("%d", &mode);
|
||||||
case 2: strcpy (r1, "\n>>> Neuro"); break;
|
getchar();
|
||||||
case 3: strcpy (r1, "\n>>> "); break;
|
switch (mode) {
|
||||||
}
|
case 1: mode = 3; break;
|
||||||
strcpy (esame, r1);
|
case 2: mode = 0; break;
|
||||||
randum = rand () % 7 + 1;
|
default: mode = 1; break;
|
||||||
|
}
|
||||||
switch (randum) {
|
}
|
||||||
case 1: strcpy (r2, "patologie "); gen=2; break;
|
// prima parte della frase
|
||||||
case 2: strcpy (r2, "fisiologia "); gen=1; break;
|
randum = rand () % (7 - mode);
|
||||||
case 3: strcpy (r2, "disturbi "); gen=4; break;
|
switch (randum) {
|
||||||
case 4: strcpy (r2, "anatomia "); gen=1; break;
|
case 0: strcpy (parte1, "Psico"); break;
|
||||||
case 5: strcpy (r2, "scienze "); gen=2; break;
|
case 1: strcpy (parte1, "Neuro"); break;
|
||||||
case 6: strcpy (r2, "biologia "); gen=1; break;
|
case 2: strcpy (parte1, "Bio"); break;
|
||||||
case 7: strcpy (r2, "sviluppo "); gen=3; break;
|
case 3: strcpy (parte1, ""); break;
|
||||||
}
|
// mode 2
|
||||||
strcat (esame, r2);
|
case 4: strcpy (parte1, "Proto"); break;
|
||||||
|
case 5: strcpy (parte1, "Super"); break;
|
||||||
randum = rand () % 5 + 1;
|
case 6: strcpy (parte1, "Pseudo"); break;
|
||||||
switch (randum) {
|
}
|
||||||
case 1: strcpy(r3, "delle patologie "); break;
|
strcpy (esame, parte1);
|
||||||
case 2: strcpy(r3, "della fisiologia "); break;
|
// seconda parte della frase
|
||||||
case 3: strcpy(r3, "cognitivi "); break;
|
// questa parte definisce il genere e numero della frase (gen)
|
||||||
case 4: strcpy(r3, "in eta' evolutiva"); break;
|
randum = rand () % (11 - mode);
|
||||||
case 5: strcpy(r3, "affettive "); break;
|
switch (randum) {
|
||||||
}
|
case 0: gen = 1; strcpy (parte2, "fisiologia "); break;
|
||||||
strcat(esame, r3);
|
case 1: gen = 1; strcpy (parte2, "anatomia "); break;
|
||||||
normalizza(esame, gen);
|
case 2: gen = 1; strcpy (parte2, "biologia "); break;
|
||||||
printf ("%s\n", esame);
|
case 3: gen = 1; strcpy (parte2, "medicina "); break;
|
||||||
|
case 4: gen = 2; strcpy (parte2, "patologie "); break;
|
||||||
strcpy(risposta, "x");
|
case 5: gen = 2; strcpy (parte2, "scienze "); break;
|
||||||
while ( strcmp (risposta, "s") != 0 && strcmp (risposta, "n") != 0) {
|
case 6: gen = 3; strcpy (parte2, "sviluppo "); break;
|
||||||
printf ("\nVuoi sapere il nome di un altro esame? (s/n) ");
|
case 7: gen = 4; strcpy (parte2, "disturbi "); break;
|
||||||
scanf ("%s", risposta);
|
// mode 2
|
||||||
}
|
case 8: gen = 1; strcpy (parte2, "fuffa "); break;
|
||||||
|
case 9: gen = 1; strcpy (parte2, "notorietà "); break;
|
||||||
if (strcmp (risposta, "s") != 0) {
|
case 10: gen = 3; strcpy (parte2, "bicarbonato "); break;
|
||||||
printf ("Allora ciao");
|
}
|
||||||
}
|
strcat (esame, parte2);
|
||||||
} while (strcmp(risposta, "s") == 0);
|
// terza parte della frase
|
||||||
free (esame);
|
randum = rand () % 6;
|
||||||
printf ("\n\n\n\n\n\n\nv%s",ver);
|
switch (randum) {
|
||||||
|
case 0: strcpy (parte3, "delle patologie "); block = 1; break;
|
||||||
return 0;
|
case 1: strcpy (parte3, "della fisiologia "); break;
|
||||||
|
case 2: strcpy (parte3, "cognitivi "); break;
|
||||||
|
case 3: strcpy (parte3, "in eta' evolutiva"); break;
|
||||||
|
case 4: strcpy (parte3, "affettivi "); break;
|
||||||
|
case 5: strcpy (parte3, "motorie "); break;
|
||||||
|
}
|
||||||
|
strcat (esame, parte3);
|
||||||
|
// concordanza parole
|
||||||
|
// block == 1 nel caso di presenza di parole immutabili
|
||||||
|
if (block != 1) {
|
||||||
|
concorda (esame, gen);
|
||||||
|
}
|
||||||
|
// lettera minuscola iniziale diventa maiuscola
|
||||||
|
if (esame[0] >= 'a' && esame[0] <= 'z'){
|
||||||
|
esame[0] -= 32;
|
||||||
|
}
|
||||||
|
// printa risultato
|
||||||
|
printf ("\n>>> %s\n", esame);
|
||||||
|
// in caso affermativo, genera altri esami
|
||||||
|
strcpy (risposta, "x");
|
||||||
|
while (strcmp (risposta, "s") != 0 && strcmp (risposta, "n") != 0 && strcmp (risposta, "m") != 0) {
|
||||||
|
printf ("\nVuoi sapere il nome di un altro esame? [s/n] (Cambia modalità': m) ");
|
||||||
|
scanf ("%s", risposta);
|
||||||
|
}
|
||||||
|
block = 0; // reset valore di block
|
||||||
|
if (strcmp(risposta, "m") == 0) {
|
||||||
|
mode = 1;
|
||||||
|
strcpy(risposta, "s");
|
||||||
|
}
|
||||||
|
} while (strcmp(risposta, "s") == 0);
|
||||||
|
// termine programma
|
||||||
|
free (esame);
|
||||||
|
printf ("\n\nAllora ciao.");
|
||||||
|
printf ("\n\n\n\n\nRandEsam v%s", VERSION);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// concordanza genere e numero
|
||||||
|
// modifica le desinenze delle parole
|
||||||
|
void *concorda (char esame[N], int genere) {
|
||||||
|
int i;
|
||||||
|
for (i = 5; i < N; i++) {
|
||||||
|
if (esame[i] == ' ') {
|
||||||
|
switch (genere) {
|
||||||
|
case 1: // femminile singolare
|
||||||
|
switch (esame[i-1]) {
|
||||||
|
case 'e': esame[i-1] = 'a'; break;
|
||||||
|
case 'i': esame[i-1] = 'a'; break;
|
||||||
|
default: break;
|
||||||
|
} break;
|
||||||
|
case 2: // femminile plurale
|
||||||
|
switch (esame[i-1]) {
|
||||||
|
case 'a': esame[i-1] = 'e'; break;
|
||||||
|
case 'i': esame[i-1] = 'e'; break;
|
||||||
|
default: break;
|
||||||
|
} break;
|
||||||
|
case 3: // maschile singolare
|
||||||
|
switch (esame[i-1]) {
|
||||||
|
case 'i': esame[i-1] = 'o'; break;
|
||||||
|
case 'e': esame[i-1] = 'o'; break;
|
||||||
|
default: break;
|
||||||
|
} break;
|
||||||
|
case 4: // maschile plurale
|
||||||
|
switch (esame[i-1]) {
|
||||||
|
case 'e':
|
||||||
|
if (esame[i-2] == 'i' && esame[i-3] == 'r')
|
||||||
|
esame[i-1] = ' ';
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (void *)esame;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue