alfabeto farfallino

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
boi bo

non avevo nulla da fare

Codice:
#!/usr/bin/perl -w

print "\nphrase: ";
$phrase = <>;
@phrase = split//,$phrase;

for $i (0..$#phrase) {
$phrase[$i] = $phrase[$i]."f".$phrase[$i] if $phrase[$i] eq "a" and $phrase[$i-1] ne "f";
$phrase[$i] = $phrase[$i]."f".$phrase[$i] if $phrase[$i] eq "e" and $phrase[$i-1] ne "f";
$phrase[$i] = $phrase[$i]."f".$phrase[$i] if $phrase[$i] eq "i" and $phrase[$i-1] ne "f";
$phrase[$i] = $phrase[$i]."f".$phrase[$i] if $phrase[$i] eq "o" and $phrase[$i-1] ne "f";
$phrase[$i] = $phrase[$i]."f".$phrase[$i] if $phrase[$i] eq "u" and $phrase[$i-1] ne "f";

$farf .= $phrase[$i];
}

print "\n$farf\n";
:conigliomg:
 
[Python]
Codice:
#!/usr/bin/python
phrase=raw_input("Frase: ").lower()
phrase=list(phrase)
global farf
farf=[]
for i in range(0, len(phrase)):
    if phrase[i]=='a' or phrase[i]=='e' or phrase[i]=='i' or phrase[i]=='o' or phrase[i]=='u':
        if phrase[i-1]!='f':
            farf.append('f')
    farf.append(phrase[i])
print ''.join(farf)
 
tanto per perdere tempo xD
Codice:
#include <stdio.h>
#include <string.h>

int main()
{
  char frase[20];
  int len,i;
  
  printf("frase: ");
  scanf("%s",frase);
  
  len = strlen(frase);
  
  for(i=0;i<len;i++)
  {
    if(frase[i]=='a' || frase[i]=='e' || frase[i]=='i' || frase[i]=='o' || frase[i]=='u')
    {
      printf("%cf%c",frase[i],frase[i]);
    }
    else
    {
      putchar(frase[i]);
    }
  }
  putchar('\n');
}
 
Codice:
puts ARGV[0].gsub(/([^f])([aeiou])/i,'\1\2f\2')
chemmerda il farfallino...ohhh ogni volta che ne sento parlare una parte di me muore!
 
Beh, se ho capito bene ecco il mio in C:

chi lo vuole vedere con la syntax highlightning vada
->qua<-

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define isvocal(x) ((x=='a') || (x=='e') || (x=='i') || (x=='o') || (x=='u'))


main (int argc, char **argv)
{
        char *string, *temp, *ptr;
        int i;

        if (!argv[1]) {
                string = (char *) malloc (100); 
                printf ("Inserire una stringa\n");
                scanf ("%[^\n]", string);
                string = (char *) realloc ( string, strlen (string) +1); 
        } else {
                string = (char *) malloc (sizeof (*argv[1]));
                strcpy (string, argv[1]);
        }

        for ( i = 0; i<strlen(string); i++) {
                string[i] |= 32;

                if ((isvocal(string[i])) && (string[i-1]!='f')) {
                           string = (char *) realloc (string, sizeof(string)+1);
                           ptr = &string[i];
                           temp = (char *) malloc (sizeof(string));
                           strcpy(temp,ptr);
                           *ptr = 'f';
                           ptr++;
                           strcpy (ptr, temp);
                           i++;
                }
        }

        printf ("\n%s\n", string);
        free(temp);
        free(string);
        return 0;
}




perl:
Codice:
$string=join(" ", @ARGS)||<>;$string=~s/[^f](a|e|i|o|u)/f$1f/ig;print"$string\n"

edit: ops, mi ero dimenticato dell'f...xd
 
l'ho fatto anche io in c ma ricorsivo e usando i puntatori non le librerie string
dovrei aggiungere un'altra funzione per raggruppare le azioni all'interno dei case... ( sono ripetizioni inguardabili ) ma per ora mi piace così:
Codice:
//Jacoboss
#include <iostream>
using namespace std;

void sostituisci (char * searching,char * final);

void main (void)
{
	char frase [255],frafasefe[255];
	cout<<"traduco in alfabeto farfallino tutto quello che mi dici:"<<endl;
	cin.getline(frase,sizeof(frase));
	sostituisci(frase,frafasefe);
	cout<<frafasefe<<endl;
}


void sostituisci (char * searching,char * final)
{
	if ( *searching != '\0' )
	{
		switch (*searching)
		{
		case 'a':
			{
				*final='a';
				*(final+1)='f';
				*(final+2)='a';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'A':
			{
				*final='A';
				*(final+1)='F';
				*(final+2)='A';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'e':
			{
				*final='e';
				*(final+1)='f';
				*(final+2)='e';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'E':
			{
				*final='E';
				*(final+1)='F';
				*(final+2)='E';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'i':
			{
				*final='i';
				*(final+1)='f';
				*(final+2)='i';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'I':
			{
				*final='I';
				*(final+1)='F';
				*(final+2)='I';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'o':
			{
				*final='o';
				*(final+1)='f';
				*(final+2)='o';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'O':
			{
				*final='O';
				*(final+1)='F';
				*(final+2)='O';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'u':
			{
				*final='u';
				*(final+1)='f';
				*(final+2)='u';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'U':
			{
				*final='U';
				*(final+1)='F';
				*(final+2)='U';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		default:
			{
				*final= *searching; // non è una vocale
				sostituisci( ( searching + 1 ) , ( final + 1 ) ); // lettera successiva
				break;
			}
		};
	}
	else
	{
		*(final)='\0';
		return; // fine iterazione
	}
}
 
bronsa ha detto:
non è c++?

why?
usa i puntatori non le variabili per riferimento... se ti riferisci al cout pace si sostituisce pari pari col printf e il cin.getline gets...
eccolo:
Codice:
#include <stdio.h>
#include <stdlib.h>

void sostituisci (char * searching,char * final);

void main (void)
{
	char frase [255],frafasefe[255];
	printf("traduco in alfabeto farfallino tutto quello che mi dici:\n");
	gets(frase);
	sostituisci(frase,frafasefe);
	printf("%s\n",frafasefe);
}


void sostituisci (char * searching,char * final)
{
	if ( *searching != '\0' )
	{
		switch (*searching)
		{
		case 'a':
			{
				*final='a';
				*(final+1)='f';
				*(final+2)='a';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'A':
			{
				*final='A';
				*(final+1)='F';
				*(final+2)='A';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'e':
			{
				*final='e';
				*(final+1)='f';
				*(final+2)='e';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'E':
			{
				*final='E';
				*(final+1)='F';
				*(final+2)='E';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'i':
			{
				*final='i';
				*(final+1)='f';
				*(final+2)='i';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'I':
			{
				*final='I';
				*(final+1)='F';
				*(final+2)='I';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'o':
			{
				*final='o';
				*(final+1)='f';
				*(final+2)='o';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'O':
			{
				*final='O';
				*(final+1)='F';
				*(final+2)='O';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'u':
			{
				*final='u';
				*(final+1)='f';
				*(final+2)='u';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		case 'U':
			{
				*final='U';
				*(final+1)='F';
				*(final+2)='U';
				sostituisci( ( searching + 1 ) , ( final + 3 ) );
				break;
			}
		default:
			{
				*final= *searching; // non è una vocale
				sostituisci( ( searching + 1 ) , ( final + 1 ) ); // lettera successiva
				break;
			}
		};
	}
	else
	{
		*(final)='\0';
		return; // fine iterazione
	}
}
 
[ot]affoghiamo in una marea di off topic, per restare in tema con la stagione estiva, aver fatto un facile esercizio male in un linguaggio compilato e bene in un linguaggio di scripting non vi autorizza a rompere le scatole offtopicando, grazie e arrivederci[/ot]
 
ShuraBozz ha detto:
[ot]affoghiamo in una marea di off topic, per restare in tema con la stagione estiva, aver fatto un facile esercizio male in un linguaggio compilato e bene in un linguaggio di scripting non vi autorizza a rompere le scatole offtopicando, grazie e arrivederci[/ot]

[ot] e che te devo dire ho sbagliato topic...[/ot]

P.s eliminati gli ot =P
 
[ot]
ShuraBozz ha detto:
affoghiamo in una marea di off topic, per restare in tema con la stagione estiva, aver fatto un facile esercizio male in un linguaggio compilato e bene in un linguaggio di scripting non vi autorizza a rompere le scatole offtopicando, grazie e arrivederci

stesso discorso che ti ho fatto di la pari pari... calmati...
[/ot]
 
C#
Codice:
String stringa;
stringa = "frase";
stringa = stringa.Text.Replace("a", "fa");
stringa = stringa.Text.Replace("e", "fe");
stringa = stringa.Text.Replace("i", "fi");
stringa = stringa.Text.Replace("o", "fo");
stringa = stringa.Text.Replace("u", "fu");
 
ecco il mio in C

Codice:
#include<stdio.h>
#include<stdlib.h>
void controlla(char c){
	if (c=='a' || c=='o' || c=='i' || c=='u' || c=='e')
		printf("%cf%c", c,c);
	else
		printf("%c",c);
}
int main (void){
	char c;
	printf("Inserisci una frase terminata da un punto: ");
	do{
		 c=getchar();
		 if (c!='.')
			controlla(c);	
	}while(c!='.');
	printf("\n");
	return 0;
}
 
Stato
Discussione chiusa ad ulteriori risposte.