快速翻译 问题
左边是英文,右边是外语,需要将外语转化成英语,如果没有则输出eh。这里用了二分查找。但我好像在快速排序中出了错误,不知道是不是?大佬帮我看看,然后下面注释的代码是二分查找输入
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
jifsai
oopslay
输出
cat
eh
loops
#include<stdio.h>
#include<string.h>
struct Entry {
char english;
char foreign;
}entries;
void QuickSort(struct Entry *p, int s, int t) { // 外语按顺序排序
int l = s, r = t;
struct Entry tmp;
if (s < t) {
tmp = p;
while (l != r) {
while (r > l && p.foreign >= tmp.foreign)
r--;
p = p;
while (l < r && p.foreign <= tmp.foreign)
l++;
p = p;
}
p = tmp;
QuickSort(p, s, l - 1);
QuickSort(p, l + 1, t);
}
}
int main() {
int num = 0;
char word, ch;
while (1) { // 输入
scanf("%s%s", &entries.english, &entries.foreign);
num++;
getchar();
ch = getchar();
ungetc(ch, stdin);
if (ch == '\n')
break;
}
QuickSort(entries, 0, num - 1);// 快速排序
// 这个是查看快速排序的结果
int i;
for (i = 0; i < num; i++) {
printf("%s %s\n", entries.english, entries.foreign);
}
// 二分查找找出外语对应的英语
//while (scanf("%s", word) != EOF) {
// int left = 0, right = num - 1;
// int n = 0;
// while (left <= right) {
// int mid = left + (right - left) / 2;
// n = strcmp(entries.foreign, word); // 比较
// if (n < 0) {
// left = mid + 1;
// }
// else if (n > 0) {
// right = mid - 1;
// }
// else {
// printf("%s\n", entries.english);
// break;
// }
// }
// if (n) {
// printf("eh\n");
// }
//}
return 0;
} {:5_91:} 好像知道错在哪了。的确是快速排序错了,我这个是字符串比较,快速排序行不通...{:10_266:} 问题已经解决了{:10_256:}
页:
[1]