0
Pig latin fails all test cases, but I don't see any difference.?
Hi guys, thanks for reading this. I was working on 'pig latin', and after failing a lot, I finally could solve it...well...maybe. After running the test cases, I don't know about the hidden ones, but the first 2 test cases of mine appeared to be alright, since the expected output and my output appeared to be the same. Yet I got all crosses. What's wrong here? Thanks! https://code.sololearn.com/cA22a201a1A2/?ref=app
6 Answers
+ 2
The problem is the for loop. Since strings are zero-indexed, the last chracter is at position "length - 1", while at position "length" is the null character. However, you iterate over all characters including the null character, and as a consequence, print one in each word, which messes up the string comparison between your output and the solution. Just change it to
for ( int i = 1; i < length; ++i )
{
...
}
and the code should pass all test cases.
0
Nayeem Islam Shanto...àŠ¶àŠŸàŠšà§àŠ€ what do you think?
0
This should be your output:
"evermindnay ouveyay otgay hemtay"
But i think it will look like this:
"evermindnay ouveyay otgay hemtay "
Could it be you have a space at the end?
0
Paul
This is exactly what I was thinking. So after the loop, I added a backspace [I hope it's correct: printf("\b\b");]. But the result didn't change, all failed
0
Here's my solution:
#include <stdio.h>
int main() {
char a[50];
fgets(a, 50, stdin);
char k = *a;
for (int i=1;a[i];i++) {
if (a[i] == 32) printf("%cay ", k);
else if (a[i-1] == 32) k = a[i];
else putchar(a[i]);
}
printf("%cay", k);
return 0;
}
// Hope this helps
0
Here's the strtok() solution:
#include <stdio.h>
#include <string.h>
int main() {
char a[50];
fgets(a, 50, stdin);
char *t = strtok(a, " ");
while (t) {
printf("%s%cay ", t + 1, *t);
t = strtok(0, " ");
}
return 0;
}
// Hope this helps