首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多个数组中的BASH二进制搜索

多个数组中的BASH二进制搜索
EN

Stack Overflow用户
提问于 2019-11-02 18:12:34
回答 1查看 75关注 0票数 1

我有一项任务要做,我正在努力:

编写一个BASH脚本,将学生姓名和成绩从文件中读取到数组中。提示用户输入学生姓名。使用二进制搜索方法,在数组中查找名称并显示等级。如果该学生不存在,则打印一条说明该信息的消息。

以下是文件中的数据:

代码语言:javascript
代码运行次数:0
运行
复制
Ann:A
Bob:C
Cindy:B
Dean:F
Emily:A
Frank:C
Ginger:D
Hal:B
Ivy:A
Justin:F
Karen:D

所以,我首先要做的是在我的Linux操作系统中创建一个名为“学生”的文件,在我的主目录中使用上面的结构。然后在我的BASH脚本中创建了以下脚本:

代码语言:javascript
代码运行次数:0
运行
复制
#!/bin/bash

#Store from a file called "students" the first field before " : " into array
names=( $( cut -d: -f1 students ) )

#Store from a file called "students" the second field after " : " into array
grades=( $( cut -d: -f2 students ) )

echo "Enter the Student Name:"
read inputname

for i in "${names[@]}"; do
    echo $i;
done

for j in "${grades[@]}"; do
    echo $j;;
done

有了这些信息,我现在可以看到每个数组何时是“共同相关的”(例如,在“名称数组”中,我们有Ann,在“等级数组”中,我们有她的"A“分数,等等)。

我的问题是如何“连接”这两个信息?例如,当有人输入Bob时,它会自动输出"Bobs品位为C“之类的东西?在BASH中是否有可能“链接”两个数组值(例如在等效于等级数组的名称数组中,namesarray1等效于gradearray1等等)?还是我做错了什么我错过了什么?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-02 18:25:04

可以这样想:您将一个学生输入到您的“学生”数组中,让我们说它是您的名字,所以您的数组索引为0。现在,您可以立即将学生分数输入另一个数组,在索引0处。您已经有一个从一个数组到另一个数组的“链接”。所以当你搜索一个学生时,你需要做的是计算索引,并把这个数字传递到一个函数中,这个函数通过你的“分数”数组,然后在for循环中使用这个参数。

psudo码

代码语言:javascript
代码运行次数:0
运行
复制
count = 0;
for(...){ ..
//student not found yet, keep going
count ++;
//student found! cool now find the grade.
gradeFind(count);
}

gradeFind(int count){
     for(i=0; i<grades_size; i++){
         if (i == count) { return the grade}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58673914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档