【问题标题】:Is the logic of this pseudocode with arrays correct?这个带有数组的伪代码的逻辑是否正确?
【发布时间】:2014-10-01 09:46:14
【问题描述】:

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

问题:

编写一个程序,打印以下元素:1、3、5、7、9、11、13、15、17、19,直到用户输入的值。程序每行打印的数字不应超过 10 个。打印的最后一行可能小于 10。除了第一个数字和最后一个数字外,应该有一个“,”分隔所有数字。每行的最后一个数字应该有一个“。”在它之后。在退出之前,它还应该打印所有元素的总和:计算项目的总和并输入结果。例如,如果用户输入 76 你的输出应该如下 您的程序的示例运行应如下所示:

输入您的号码(>= 1 和

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>

【问题讨论】:

    标签: arrays list sorting pseudocode


    【解决方案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 */
    

    【讨论】:

    • 看不懂count=0;接近尾声请解释。为什么计数=0?我们不是在增加吗? print("n.") 不应该每一行都有一个吗?我还是编程新手,请多多包涵。感谢您的时间和精力。
    • 嘿有一个错误,我现在已经修复了,实际上 count 用于跟踪一行中打印的元素数量,因为有问题的是程序应该打印小于或最大值.连续 10 个元素,将计数重置为 0,它变为 10(10 个元素为 0-9。)。
    • 嘿“n”用于存储用户输入的号码。它在整个程序中保持不变。因为我们需要打印 n 之前的所有奇数,所以我们需要一个不断变化的变量,这里由“i”完成。在每个循环之后,它一直递增 2。即,对于第一个循环,它将是 1.,对于第二个循环,它将是 3,直到它小于 n。所以我们需要打印 i 来完成我们的工作。当循环结束时,我们打印了 n 之前的所有数字,因此需要打印一次 n。
    • 冒号是什么意思?我以为你写了分号。
    • itz 只是分隔符,因为您正在编写伪代码,所以无论您使用冒号还是分号都没有任何区别。其实我经常用matlab所以习惯这样写
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    相关资源
    最近更新 更多