Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Traduzione Di Una Frase Da Inglese A Pig Latin

    Buongiorno a tutti!
    Sono nuovo del forum e spero di scrivere bene il messaggio!
    Sto studiando il C dal libro "C Corso completo di programmazione" di Deitel & Deitel. Sono arrivato al capitolo delle stringhe. Un esercizio a fine capitolo mi chiede di:
    - inserire una frase da tastiera in un vettore;
    - suddividerla in token;
    - per ogni parola, mettere la prima lettera in fondo alla parola e aggiungere ay alla fine(esempio: "ciao" tradotto in pig latin diventa "iaocay");
    - devo fare la traduzione in pig latin per tutta la stringa inserita.
    Ho scritto il programma e funziona però solo per la prima parola; non funziona per tutte la altre parole rimanenti della stringa.
    Il mio programma è questo:

    codice:
    /* Trasformo una frase inglese in pig latin */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void printLatinWord( char *ptr );
    
    main()
    {
          char s[100];
          char *tokenPtr;
          
          printf("Enter a sentence:\n");
          gets(s);
          
          tokenPtr = strtok(s, " ");
          
          printLatinWord(tokenPtr);
          
          while ( tokenPtr != NULL )
          {
                tokenPtr = strtok(NULL, " ");
                printLatinWord(tokenPtr);
          }
          
          putchar('\n');
          putchar('\n');
          system("pause");
          
          
    }
    
    void printLatinWord( char *ptr )
    {
         char say[] = "ay";
         int m, n, i;
         char c;
         
         
         n = strlen(ptr);
         m = n - 1;
         c = ptr[m - m];
         memmove(ptr, &ptr[1], m);
         ptr[m] = c;
         strcat(ptr, say);
         
         printf("%s", ptr );
         
    }
    Come qui sopra funziona con la sola prima parola della stringa.
    Se aggiungo questo nel main():

    codice:
    while ( tokenPtr != NULL )
          {
                tokenPtr = strtok(NULL, " ");
                printLatinWord(tokenPtr, s);
          }
    non funziona. Vi sarei molto grato se poteste indicarmi la soluzione. Grazie!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319

    Moderazione

    Benvenuto nel forum.
    Ti invito subito a prendere visione del Regolamento interno, ed in particolare per il futuro:

    1) Il linguaggio di programmazione va espressamente indicato nel titolo della discussione
    2) Il codice va espressamente postato indentato e all'interno degli appositi tag CODE (punto 6)

    Correggo io questa discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    SOLUZIONE!

    Ragazzi una persona mi ha aiutato a risolvere l'esercizio!!! Ve lo metto qui!


    codice:
    /* Trasformo una frase inglese in pig latin */ 
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    
    #define MAX_SIZE 256 
    
    void printLatinWord(char * ptr); 
    int main() { 
    char sInput[MAX_SIZE]; 
    char *tokenPtr; 
    
    printf("Enter a sentence:\n"); 
    gets(sInput); 
    tokenPtr = strtok(sInput, " \n"); 
    while( tokenPtr != NULL ) 
    { 
        printLatinWord(tokenPtr); 
        tokenPtr = strtok(NULL, " \n"); 
    } 
    putchar('\n'); 
    system("pause"); 
    } 
    
    void printLatinWord(char * ptr) 
    { 
    char sTransform[MAX_SIZE+3]; 
    int l; 
    l = strlen(ptr); 
    if (l > MAX_SIZE) 
    { 
       printf("word too long.\n"); 
       return; 
    } 
    memcpy(sTransform, &ptr[1], l-1); 
    sTransform[l-1] = ptr[0]; 
    sTransform[l] = 'a'; 
    sTransform[l+1] = 'y'; 
    sTransform[l+2] = '\0'; 
    printf("%s ", sTransform); 
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.