2014-10-01 128 views
-1

我在将这个作业问题转换为伪代码时遇到了一些麻烦。我想知道这个逻辑是否正确。这个伪代码的逻辑是否正确?

问题:

编写一个程序,打印如下内容:1,3,5,7,9,11,13,15,17,19,在这之前用户输入的值。该程序不应该打印每行超过10个数字。打印的最后一行可能小于10.除了第一个数字和最后一个数字之外,应该有一个“,”将所有数字分开。每行上的最后一个数字后面应该有一个“。”。在退出之前,还应打印所有元素的总和:计算项目总数并输入结果。例如,如果用户输入76的输出应该如下 程序应尽可能的样品运行如下:

输入数(> = 1和< = 100):76 你的序列是

1,3,5,7,9,11,13,15,17,19。 21,23,25,27,29,31,33,35,37,39。 41,43,45,47 ,49,51,53,55,57,59,61,63 ,65,67,69,71,73,75

上述元素的总和1444。

我尝试:

Algorithm ElementsSequenceSeries 

// declare variables 
Var num, count, odd, sum, arrayOne, arrayTwo, arrayThree, arrayFour, arrayFive 

// initialize variables 
Count = 0; sum = 0; odd=0; arrayOne = 0; arrayTwo = 0; arrayThree = 0; arrayFour = 0; arrayFive = 0; 

<BeginAlg> 

Print (Input 1<= num <= 100); 

Count = count + 1; 
Odd = (count*2)–1; // create a list of odd numbers up to a user-defined value less than 100 

If (num > odd) 
    Print(Odd); 

    // For the indices 0 to 8, place a comma after each element of the array. 
    For (num <=20 and num> odd) and (arrayOne[9]= {0,1,2,3,4,5,6,7,8}) 
     Print (arrayOne[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    // For the index 9, place a fullstop after it. 
    For (num <=20 && num> odd) and (array One[]= 9) 
     Print arrayOne[]= 9 + “.”) 
    EndFor 


    For (num <=40 and num> odd) and (arrayTwo[]= {0,1,2,3,4,5,6,7,8}) 
     Print (arrayTwo[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=40 and num> odd) and (arrayTwo[]= 9) 
     Print arrayTwo[]= 9 + “.”) 
    EndFor 

    For (num <=60 and num> odd) and (arrayThree[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayThree[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=60 and num> odd) and (arrayThree[]= 9) 
     Print arrayThree[]= 9 + “.”) 
    EndFor 


    For (num <=80 and num> odd) and (arrayFour[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayFour []= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=80 and num> odd) and (arrayFour []= 9) 
     Print arrayFour []= 9 + “.”) 
    EndFor 


    For (num <=100 and num> odd) and (arrayFive[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayFive []= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=100 and num> odd) and (arrayFive []= length) 
     Print arrayFive []= length + “.”); 
    EndFor 

EndIf 

Sum = arrayOne, arrayTwo, arrayThree, arrayFour, arrayFive; 
Print(sum); 

<EndAlg> 

回答

1

由您提出的算法使用了可以保存下来,因为我们需要打印的所有奇数的问题,可以用四个变量,一个用于跟踪总和来解决内存,一个用于改变行,一个用于用户输入,另一个用作循环变量。

Variables: 

sum :int // keeps track of the sum 
count :int // keeps track of the Integer printed in a line. 
i  :int // looping variable. 
n  :int // Given as input 
Algorithm: 

/* BEGIN ALGORITHM */ 
n=input(); 
count=0; 
sum=0 
for(i=1:i<n:i=i+2){ 
        print("i,"); 
        count=count+1; 
        if(count>9){ 
           print("/n"); // change line; 
           count=0; 
           } 
        sum=sum+i; 
        } 
print("n."); 
print("Sum is (sum+n)"); 
/* END ALGORITHM */ 
+0

我不明白count = 0;请尽快解释。为什么count = 0?我们没有递增吗?印刷品(“n。”)不应该每行有一个?我对编程还不熟悉,请耐心等待。我感谢你的时间和精力。 – TechFool121 2014-10-02 12:25:05

+0

嘿,出现了一个错误,我现在修正了它,实际上count是用来跟踪打印在一行中的元素的数量,因为它给出的问题是程序应该打印小于或者小于max。连续10个元素,将计数重置为0,它变为10(10个元素为0-9)。 – abhinash 2014-10-02 12:52:42

+0

嗨“n”用于存储用户输入的号码。在整个计划中它是不变的。因为我们需要在n之前打印所有的奇数,所以我们需要一个不断变化的变量,这是由“我”在这里完成的。在每一个循环之后,它会以2递增。即,对于第一个循环,它将是1.对于第二个循环,它将是3,直到它小于n。所以我们需要打印我才能完成我们的工作。当循环到期时,我们在n之前打印所有数字,因此需要打印n一次。 – abhinash 2014-10-02 12:55:11