简单的逻辑问题:找到3个数字中最大和最小的数字

时间:2011-04-26 13:55:20

标签: language-agnostic logic

我正在创建一个伪代码来确定3个数字中最小和最大的数字:

我的代码如下:

If (x >= y)  
   largest = x
   Smallest = y
Else 
    largest = y
    Smallest =x

If (z >= largest)
    Largest = z
If (z <= smallest)
    Smallest = z

你认为这是对的吗?或者有更好的方法来解决这个问题吗?

5 个答案:

答案 0 :(得分:7)

假设您有任意数字x, y, z

伪代码:

largest = x
smallest = x

if (y > largest)  then largest = y
if (z > largest)  then largest = z

if (y < smallest) then smallest = y
if (z < smallest) then smallest = z

如果您只使用变量,赋值,if-else和比较,这是解决问题的一种方法。


如果您在其上定义了数组和排序操作,则可以使用:

array = [x, y, z]
arrays.sort()
largest  = array[2]
smallest = array[0]

如果你有一个maxmin函数,它将一组数字作为参数,你可以使用它:

array = [x, y, z]
largest  = max(array)
smallest = min(array)

如果您还使用集合进行位置分配,则可以使用:

array = [x, y, z]
(largest, smallest) = (max(array), min(array))

如果您有一个数据结构,在插入元素时会对其内容进行排序,您可以使用:

array.insert([x, y, z])
smallest = array[0]
largest = array[2]

答案 1 :(得分:4)

#include <stdio.h>
#include <algorithm>
using namespace std;

int main ( int argc, char **argv ) {
    int a = 1;
    int b = 2;
    int c = 3;

    printf ( "MAX = %d\n", max(a,max(b,c)));
    printf ( "MIN = %d\n", min(a,min(b,c)));

    return 0;
}

答案 2 :(得分:2)

这样的事情会更通用(在Java中):

// All available values.
int[] values = new int[] { 1, 2, 3 };

// Initialise smallest and largest to the extremes
int smallest = Integer.MAX_VALUE;
int largest = Integer.MIN_VALUE;

// Compare every value with the previously discovered
// smallest and largest value
for (int value : values) {

  // If the current value is smaller/larger than the previous
  // smallest/largest value, update the reference
  if (value < smallest) smallest = value;
  if (value > largest) largest = value;
}

// Here smallest and largest will either hold the initial values
// or the smallest and largest value in the values array

答案 3 :(得分:2)

if (x < y) {
  minimum = min(x,z)
  maximum = max(y,z)
} else {
  minimum = min(y,z)
  maximum = max(x,z)
}

答案 4 :(得分:0)

用a,b和c表示数字,假设没有两个数字相等。

阅读三个数字

  • 如果a小于b,则a小于c 打印a,否则打印c
  • 如果b小于a,则b小于c 打印b,否则打印c