我正在编写一个程序来执行以下操作:
“按降序(排序)打印一组实数。程序还应该打印出输入数字的中位数和输入的数字。程序应以数字形式读取,直到读取负数为止。负数用作指示程序何时停止读取数字的标记或标记,然后程序应对数字进行排序并按从大到小的顺序将其打印出。注意,标记号不被视为数字之一,它不应被打印。该程序应能够处理多达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()
答案 0 :(得分:0)
这是您程序的更好版本,我进行了一些更改。
您可以在差异查看器中打开您的程序和此程序,以查找所有更改。
我还添加了一个名称为get_numbers
的{{1}}更好的版本,您可以使用它或将其丢弃,此功能不会要求用户输入第101个号码,然后抱怨您为什么输入:)
如果您有兴趣的话,可以从中学习以下内容:
get_numbers_