changeset 7606:ad77afb157c2

<Moon_> fetch http://pastebin.com/raw/cdxuhHRs
author HackBot
date Fri, 29 Apr 2016 00:22:11 +0000
parents c3489b54dc76
children a8780de2da16
files cdxuhHRs
diffstat 1 files changed, 111 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdxuhHRs	Fri Apr 29 00:22:11 2016 +0000
@@ -0,0 +1,111 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+void initialize(char english[], char piglatin[]);
+void readinput(char english[]);
+int countwords(char english[]);
+void convert(int words, char english[], char piglatin[]);
+void writeoutput(char piglatin[]);
+
+main( )
+{
+    char english[80], piglatin[80];
+    int words;
+    printf("\nPig Latin Translator in C\n\n");
+    printf( "Type \ 'END\' when finished\n\n");
+
+    do
+    {
+        /* processing a new line of text */
+        initialize(english, piglatin);
+        readinput(english);
+
+        /* testing stopping condition */
+        if (toupper(english[0]) == 'E' && toupper(english[1]) == 'N' && toupper(english[2]) == 'D')
+            break;
+
+        /* count the number of words in the line */
+        words = countwords(english);
+
+        /* Now Pig Latin Translator in C converts English to Pig Latin */
+        convert(words, english, piglatin);
+        writeoutput(piglatin);
+    }
+    while (words >= 0);
+    printf("\naveHa aa icena ayda (Have a nice day)\n");
+}
+
+
+/* initializing character arrays with blank spaces */
+void initialize(char english[], char piglatin[])
+{
+    int count;
+    for (count = 0; count < 80; ++count)
+        english[count] = piglatin[count] = ' ';
+    return;
+}
+
+
+/* reading one line of text in English */
+void readinput(char english[])
+{
+    int count = 0;
+    char c;
+    while (( c = getchar()) != '\n')
+    {
+        english[count] = c;
+        ++count;
+    }
+    return;
+}
+
+
+/* scanning the given message or line of text and determining the number of words in it */
+int countwords(char english[])
+{
+    int count, words = 1;
+    for (count = 0; count < 79; ++count)
+    if (english[count] == ' ' && english[count + 1] != ' ')
+        ++words;
+    return (words);
+}
+
+
+/* now Pig Latin translator in C coverts each word into Pig Latin */
+void convert(int words, char english[], char piglatin[])
+{
+    int n, count;
+    int m1 = 0; /* m1 indicates the position of beginning of each word */
+    int m2; /* m2 indicates the end of the word */
+
+    /* convert each word */
+    for (n = 1; n <= words; ++n)
+    {
+        /* locating the end of the current word */
+        count = m1 ;
+        while (english[count] != ' ')
+            m2 = count++;
+
+        /* transposing the first letter of each word and adding 'a' at the end */
+        for (count = m1 ; count < m2; ++count)
+            piglatin[count + (n - 1)] = english[count + 1];
+        piglatin[m2 + (n - 1)] = english[m1];
+        piglatin[m2 + n] = 'a'; /* adding 'a' at the end */
+
+        /* reseting the initial marker */
+        m1 = m2 + 2;
+    }
+    return;
+}
+
+
+/* now Pig Latin translator in C displays the line of English text in Pig Latin */
+void writeoutput(char piglatin[])
+{
+    int count = 0;
+    for (count = 0; count < 80; ++count)
+        putchar(piglatin[count]);
+    printf("\n");
+    return;
+}
\ No newline at end of file