为什么会出现“错误:预期表达”?

时间:2020-01-27 01:25:51

标签: c++

我正在编写一个程序来执行以下操作:

“按降序(排序)打印一组实数。程序还应该打印出输入数字的中位数和输入的数字。程序应以数字形式读取,直到读取负数为止。负数用作指示程序何时停止读取数字的标记或标记,然后程序应对数字进行排序并按从大到小的顺序将其打印出。注意,标记号不被视为数字之一,它不应被打印。该程序应能够处理多达100个输入数字。如果用户尝试输入100个以上的数字,则程序应打印一条错误消息并退出。”

我知道我的语法不正确,因为我是C ++的新手。这是我的代码:

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

int get_numbers(float nums[])
{
    float num;
    int i = 0;

    cout << "Enter a real number ";
    cin >> num;

    while (num >= 0)
    {
        if (i == 100)
        {
            cout << "Error: too many numbers read. Good bye";
            break;
        }

        nums[i] = num; 
        i += 1;

        cout << "Enter a real number: ";
        cin >> num;
    }
    return i;
}

int sort_numbers(float nums[], int num)
{
    int swapped, j, i, temp;

    swapped = true;
    for(i = 1; i < num; i++)
    {
        if (swapped != true)
        {
            break;
        }
        swapped = false;

        for(j = 1; i < (num-i); i++)
        {
            if (nums[j] < nums[j+1])
            {
                temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
                swapped = true;
            }
        }
    }
    return 0;
}

int print_numbers(float nums[], int num)
{
    int i, median;

    cout << "The numbers in descending order are: ";
    for(i = 1; i < num; i++)
    {
        cout << (nums[i]);
    }

    if (num % 2 == 0)
    {
        median = (nums[num/2-1] + nums[num/2]) / 2;
    }
    else
    {
        median = (nums[num/2]);
    }

    cout << "The median number is " << median;

    return 0;
}

int main()
{
    int num_numbers = 0;
    float a[] =[0.0] * 100;

    num_numbers = get_numbers(a);
    sort_numbers(a, num_numbers);
    print_numbers(a, num_numbers);

    return 0;
}

我不断收到一条错误,指出该行底部第85行的“错误:期望的表达式” float a[] =[0.0] * 100;

我对语法不太了解,甚至不知道要尝试解决什么。您可以帮我运行程序吗?

编辑: 我正在将Python程序翻译为C ++。这是python程序:

    i = 0

    num = float(input("Enter a real number: "))

    while num >= 0:
        if i == 100:
            print("Error: too many numbers read. Good bye")
            exit()

        nums[i] = num
        i += 1

        num = float(input("Enter a real number: "))

    return i

def sort_numbers(nums, num):

    swapped = True
    for i in range(1,num):
        if swapped != True:
            break
        swapped = False
        for j in range(num-i):
            if nums[j] < nums[j+1]:
                temp = nums[j]
                nums[j] = nums[j+1]
                nums[j+1] = temp
                swapped = True


def print_numbers(nums, num):

    print("The numbers in descending order are:")
    for i in range(num):
        print(nums[i])

    if num%2 == 0:
        median = (nums[num//2 - 1] + nums[num//2]) / 2
    else:
        median = nums[num//2]

    print("The median number is", median)

def main():
    num_numbers = 0
    a = [0.0] * 100

    num_numbers = get_numbers(a)
    sort_numbers(a, num_numbers)
    print_numbers(a, num_numbers)

if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:0)

这是您程序的更好版本,我进行了一些更改。 您可以在差异查看器中打开您的程序和此程序,以查找所有更改。 我还添加了一个名称为get_numbers的{​​{1}}更好的版本,您可以使用它或将其丢弃,此功能不会要求用户输入第101个号码,然后抱怨您为什么输入:)

如果您有兴趣的话,可以从中学习以下内容:

  • 请勿重复太多,因此避免多次输入“输入实数”。
  • 如果您不打算使用返回值,则无需从所有函数返回0或任何值
  • 如果您要从函数返回值,请使用它
  • 还有一些您应该学习的c ++语法

get_numbers_