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 <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#define N 100
|
||||
|
||||
#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;
|
||||
}
|
||||
void *concorda (char esame[N], int genere);
|
||||
|
||||
int main () {
|
||||
int i = 1;
|
||||
int a = 1;
|
||||
int gen=1;
|
||||
char *esame=malloc (sizeof (esame) *20);
|
||||
char r1[N], r2[N], r3[N], r4[N];
|
||||
char risposta[1];
|
||||
int randum;
|
||||
srand (time(NULL));
|
||||
do {
|
||||
randum = rand () % 3 + 1;
|
||||
switch (randum) {
|
||||
case 1: strcpy (r1, "\n>>> Psico"); break;
|
||||
case 2: strcpy (r1, "\n>>> Neuro"); break;
|
||||
case 3: strcpy (r1, "\n>>> "); break;
|
||||
}
|
||||
strcpy (esame, r1);
|
||||
randum = rand () % 7 + 1;
|
||||
|
||||
switch (randum) {
|
||||
case 1: strcpy (r2, "patologie "); gen=2; break;
|
||||
case 2: strcpy (r2, "fisiologia "); gen=1; break;
|
||||
case 3: strcpy (r2, "disturbi "); gen=4; break;
|
||||
case 4: strcpy (r2, "anatomia "); gen=1; break;
|
||||
case 5: strcpy (r2, "scienze "); gen=2; break;
|
||||
case 6: strcpy (r2, "biologia "); gen=1; break;
|
||||
case 7: strcpy (r2, "sviluppo "); gen=3; break;
|
||||
}
|
||||
strcat (esame, r2);
|
||||
|
||||
randum = rand () % 5 + 1;
|
||||
switch (randum) {
|
||||
case 1: strcpy(r3, "delle patologie "); break;
|
||||
case 2: strcpy(r3, "della fisiologia "); break;
|
||||
case 3: strcpy(r3, "cognitivi "); break;
|
||||
case 4: strcpy(r3, "in eta' evolutiva"); break;
|
||||
case 5: strcpy(r3, "affettive "); break;
|
||||
}
|
||||
strcat(esame, r3);
|
||||
normalizza(esame, gen);
|
||||
printf ("%s\n", esame);
|
||||
|
||||
strcpy(risposta, "x");
|
||||
while ( strcmp (risposta, "s") != 0 && strcmp (risposta, "n") != 0) {
|
||||
printf ("\nVuoi sapere il nome di un altro esame? (s/n) ");
|
||||
scanf ("%s", risposta);
|
||||
}
|
||||
|
||||
if (strcmp (risposta, "s") != 0) {
|
||||
printf ("Allora ciao");
|
||||
}
|
||||
} while (strcmp(risposta, "s") == 0);
|
||||
free (esame);
|
||||
printf ("\n\n\n\n\n\n\nv%s",ver);
|
||||
|
||||
return 0;
|
||||
char parte1[N], parte2[N], parte3[N];
|
||||
char *esame = malloc (sizeof (esame) * N);
|
||||
char risposta[1];
|
||||
int gen;
|
||||
int block = 0;
|
||||
int randum; // numero random
|
||||
int mode = 1;
|
||||
srand (time(NULL));
|
||||
do {
|
||||
while (mode == 1) {
|
||||
printf("\nModalita'? 1: Semiserio; 2: Normale ");
|
||||
scanf("%d", &mode);
|
||||
getchar();
|
||||
switch (mode) {
|
||||
case 1: mode = 3; break;
|
||||
case 2: mode = 0; break;
|
||||
default: mode = 1; break;
|
||||
}
|
||||
}
|
||||
// prima parte della frase
|
||||
randum = rand () % (7 - mode);
|
||||
switch (randum) {
|
||||
case 0: strcpy (parte1, "Psico"); break;
|
||||
case 1: strcpy (parte1, "Neuro"); break;
|
||||
case 2: strcpy (parte1, "Bio"); break;
|
||||
case 3: strcpy (parte1, ""); break;
|
||||
// mode 2
|
||||
case 4: strcpy (parte1, "Proto"); break;
|
||||
case 5: strcpy (parte1, "Super"); break;
|
||||
case 6: strcpy (parte1, "Pseudo"); break;
|
||||
}
|
||||
strcpy (esame, parte1);
|
||||
// seconda parte della frase
|
||||
// questa parte definisce il genere e numero della frase (gen)
|
||||
randum = rand () % (11 - mode);
|
||||
switch (randum) {
|
||||
case 0: gen = 1; strcpy (parte2, "fisiologia "); break;
|
||||
case 1: gen = 1; strcpy (parte2, "anatomia "); break;
|
||||
case 2: gen = 1; strcpy (parte2, "biologia "); break;
|
||||
case 3: gen = 1; strcpy (parte2, "medicina "); break;
|
||||
case 4: gen = 2; strcpy (parte2, "patologie "); break;
|
||||
case 5: gen = 2; strcpy (parte2, "scienze "); break;
|
||||
case 6: gen = 3; strcpy (parte2, "sviluppo "); break;
|
||||
case 7: gen = 4; strcpy (parte2, "disturbi "); break;
|
||||
// mode 2
|
||||
case 8: gen = 1; strcpy (parte2, "fuffa "); break;
|
||||
case 9: gen = 1; strcpy (parte2, "notorietà "); break;
|
||||
case 10: gen = 3; strcpy (parte2, "bicarbonato "); break;
|
||||
}
|
||||
strcat (esame, parte2);
|
||||
// terza parte della frase
|
||||
randum = rand () % 6;
|
||||
switch (randum) {
|
||||
case 0: strcpy (parte3, "delle patologie "); block = 1; break;
|
||||
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