2015-10-14 43 views
1

我现在正在参加计算机科学课,但我不知道如何将由3分制成的平均值转换为字母等级。起初,我以为我可以这样做:将平均数转换成等级时的类型不匹配(初学者)

PRINT name$(c); TAB(6) ; USING("###.#", average(c)) 

由于:

PRINT name$(c); TAB(6) ; USING("***something for text here***", average(c)) 

但我的搜索和淘互联网上后,我想出了什么。过了一段时间我重写了我的大部分代码,但它仍然无法正常工作。有人能告诉我,我能做些什么才能使它工作?

这就是:

dim names(20) 
dim average$(20) 
x = 0 
input "Please input Teacher's name:"; teacher$ 
rem teacher$ 
cls 
input "Input student's name:"; studentname$ 
do while studentname$ <> "" 
name$(x)=studentname$ 
rem name$(x) 
input "Input first number:"; e 
input "Input second number:"; f 
input "Input third number:"; g 
avg$=(e+f+g)/3 
average(x)= avg 
x=x+1 
cls 
input "Input the next name or press enter to finish:"; studentname$ 
loop 
print teacher$; "'s Class Report" 
for c = 1 to X 
if (avg$>89 and avg$<101) then let avg= "A" else if 
if (avg$>79 and avg$<89) then let avg= "B" else if 
if (avg$>69 and avg$<79) then let avg= "C" else if 
if (avg$>59 and avg$<69) then let avg= "D" else if 
if (avg$<59) then let avg= "F"; print names(c), TAB(6) average$(c) 
next c 
end 
+0

您计算基于'avg'然后输出'$平均的信(C)'。做相反的事情。 – GSerg

+1

而且很容易混淆,所以最好让你的变量名称不同。你可能在'avg'和'average'之间混淆了。也许可以将它重构为'class_averages',以便更容易记住。 –

回答

0

三件事这里需要注意。

首先,美元符号$仅用于包含文本值而非数值的变量名的末尾。所以它的a$ = "hello"i = (12+34+56)/3

其次,在输入部分,你计算平均值,并将其存储在变量avg$。然后在要打印字母等级的for循环中,检查相同的变量名称。但是,您从不在该循环内设置avg$,因此它将始终包含最后一次计算的值。而且它也应该没有$,因为它是一个数字值。

最后,像Shawn Mehan也已经评论过,你应该重新命名你的变量以更好地反映它们的用途。这可能会消除一些混乱。所以像dim avgpoint(20)为0-100分,avgletter$="A"等为字母等级。

所以这些东西结合起来,我会更改您的代码是这样的:

input "Input first grade number (0-100):"; grade1 
input "Input second grade number (0-100):"; grade2 
input "Input third grade number (0-100):"; grade3 
calcavg = (grade1+grade2+grade3)/3 
avgpoint(x) = calcavg 

然后

for c = 1 to x 
    p = avgpoint(x) 
    if (p>89 and p<=101) then let avgletter$ = "A" 
    'etc.