codice:
#include <stdio.h>
/* Questa funzione costruisce il singolo array di asterischi in base a 5 parametri
* array --> l'array di asterischi che conterrà gli asterischi da stampare
* lettera --> la lettera che si sta esaminando
* posY --> Quale parte della lettera sto costruendo
* posX --> A quale posizione nell'array di asterischi sono arrivato
* ultima --> valore che indica se è l'ultima lettera o meno
*/
void costruisci(char **array, char lettera, int posY, int posX, int ultima); /* Implementata dopo */
int main(int argc, char **argv) {
char **prima;
char **seconda;
char **terza;
char **quarta;
char **quinta;
int i = 0, j = 0;
int len = 0;
if (argc != 2) {
printf("Introdurre un parametro da visualizzare!\n\n");
exit(1);
}
prima = (char **) malloc(strlen(argv[1]) * sizeof(char*));
seconda = (char **) malloc(strlen(argv[1]) * sizeof(char*));
terza = (char **) malloc(strlen(argv[1]) * sizeof(char*));
quarta = (char **) malloc(strlen(argv[1]) * sizeof(char*));
quinta = (char **) malloc(strlen(argv[1]) * sizeof(char*));
len = strlen(argv[1]);
for (i=0; i<len; i++) {
costruisci(prima, (char) argv[1][i], 0, i, !(len-i-1));
costruisci(seconda, (char) argv[1][i], 1, i, !(len-i-1));
costruisci(terza, (char) argv[1][i], 2, i, !(len-i-1));
costruisci(quarta, (char) argv[1][i], 3, i, !(len-i-1));
costruisci(quinta, (char) argv[1][i], 4, i, !(len-i-1));
}
printf(" ");
for (i=0; i<len; i++) {
printf("%s ", prima[i]);
}
for (i=0; i<len; i++) {
printf("%s ", seconda[i]);
}
for (i=0; i<len; i++) {
printf("%s ", terza[i]);
}
for (i=0; i<len; i++) {
printf("%s ", quarta[i]);
}
for (i=0; i<len; i++) {
printf("%s ", quinta[i]);
}
return 0;
}
void costruisci(char **array, char lettera, int posY, int posX, int ultima) {
array[posX] = (char*) malloc(7 * sizeof(char));
switch (lettera & 223) { /* Considero ciascuna lettera come MAIUSCOLA */
case 'A':
switch (posY) {
case 0:
case 2:
strcpy(array[posX], "*****");
break;
case 1:
case 3:
case 4:
strcpy(array[posX], "* *");
break;
}
break;
case 'B':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "**** ");
break;
case 1:
case 3:
strcpy(array[posX], "* *");
break;
case 2:
strcpy(array[posX], "*****");
break;
}
break;
case 'C':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
case 2:
case 3:
strcpy(array[posX], "* ");
break;
}
break;
case 'D':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "**** ");
break;
case 1:
case 2:
case 3:
strcpy(array[posX], "* *");
break;
}
break;
case 'E':
switch (posY) {
case 0:
case 2:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
case 3:
strcpy(array[posX], "* ");
break;
}
break;
case 'F':
switch (posY) {
case 0:
strcpy(array[posX], "*****");
break;
case 1:
case 3:
case 4:
strcpy(array[posX], "* ");
break;
case 2:
strcpy(array[posX], "*** ");
break;
}
break;
case 'G':
switch (posY) {
case 0:
case 2:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], "* ");
break;
case 3:
strcpy(array[posX], "* *");
break;
}
break;
case 'H':
switch (posY) {
case 0:
case 1:
case 3:
case 4:
strcpy(array[posX], "* *");
break;
case 2:
strcpy(array[posX], "*****");
break;
}
break;
case 'I':
switch (posY) {
case 0:
case 1:
case 2:
case 3:
case 4:
strcpy(array[posX], " * ");
break;
}
break;
case 'J':
switch (posY) {
case 0:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], " * ");
break;
case 2:
case 3:
strcpy(array[posX], "* * ");
break;
case 4:
strcpy(array[posX], "*** ");
break;
}
break;
case 'K':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "* *");
break;
case 1:
case 3:
strcpy(array[posX], "* * ");
break;
case 2:
strcpy(array[posX], "*** ");
break;
}
break;
case 'L':
switch (posY) {
case 0:
case 1:
case 2:
case 3:
strcpy(array[posX], "* ");
break;
case 4:
strcpy(array[posX], "*****");
break;
}
break;
case 'M':
switch (posY) {
case 0:
case 3:
case 4:
strcpy(array[posX], "* *");
break;
case 1:
strcpy(array[posX], "** **");
break;
case 2:
strcpy(array[posX], "* * *");
break;
}
break;
case 'N':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "* *");
break;
case 1:
strcpy(array[posX], "** *");
break;
case 2:
strcpy(array[posX], "* * *");
break;
case 3:
strcpy(array[posX], "* **");
break;
}
break;
case 'O':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
case 2:
case 3:
strcpy(array[posX], "* *");
break;
}
break;
case 'P':
switch (posY) {
case 0:
case 2:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], "* *");
break;
case 3:
case 4:
strcpy(array[posX], "* ");
break;
}
break;
case 'Q':
switch (posY) {
case 0:
strcpy(array[posX], "**** ");
break;
case 1:
case 2:
strcpy(array[posX], "* * ");
break;
case 3:
strcpy(array[posX], "* ** ");
break;
case 4:
strcpy(array[posX], "*****");
break;
}
break;
case 'R':
switch (posY) {
case 0:
case 2:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], "* *");
break;
case 3:
strcpy(array[posX], "* * ");
break;
case 4:
strcpy(array[posX], "* *");
break;
}
break;
case 'S':
switch (posY) {
case 0:
case 2:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], "* ");
break;
case 3:
strcpy(array[posX], " *");
break;
}
break;
case 'T':
switch (posY) {
case 0:
strcpy(array[posX], "*****");
break;
case 1:
case 2:
case 3:
case 4:
strcpy(array[posX], " * ");
break;
}
break;
case 'U':
switch (posY) {
case 0:
case 1:
case 2:
case 3:
strcpy(array[posX], "* *");
break;
case 4:
strcpy(array[posX], "*****");
break;
}
break;
case 'V':
switch (posY) {
case 0:
case 1:
case 2:
strcpy(array[posX], "* *");
break;
case 3:
strcpy(array[posX], " * * ");
break;
case 4:
strcpy(array[posX], " * ");
break;
}
break;
case 'W':
switch (posY) {
case 0:
case 1:
strcpy(array[posX], "* *");
break;
case 2:
case 3:
strcpy(array[posX], "* * *");
break;
case 4:
strcpy(array[posX], " * * ");
break;
}
break;
case 'X':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "* *");
break;
case 1:
case 3:
strcpy(array[posX], " * * ");
break;
case 2:
strcpy(array[posX], " * ");
break;
}
break;
case 'Y':
switch (posY) {
case 0:
strcpy(array[posX], "* *");
break;
case 1:
strcpy(array[posX], " * * ");
break;
case 2:
case 3:
case 4:
strcpy(array[posX], " * ");
break;
}
break;
case 'Z':
switch (posY) {
case 0:
case 4:
strcpy(array[posX], "*****");
break;
case 1:
strcpy(array[posX], " * ");
break;
case 2:
strcpy(array[posX], " * ");
break;
case 3:
strcpy(array[posX], " * ");
break;
}
break;
}
if (ultima) {
array[posX][5] = '\n';
}
}
Prende in considerazione solo parole senza spazi!