gpt4 book ai didi

c++ - 使用指针的更好方法?

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:27 25 4
gpt4 key购买 nike

我正在尝试创建一个程序来显示带 * 的条形图,* 的最大数量可以是 40。我一切正常,但对代码有疑问。有没有更好的方法,如您所见,我必须使用以下方法返回原始地址两次:

    p_bar_length = p_bar_length - size;

有更好的方法吗?

#include <iostream>

using namespace std;

const int MAX_SPLATS = 40;

void bar_chart(double values[], int size)
{
double largest = values[0]; //assign first element to be the largest

//Find the largest value
for (int i = 1; i < size; i++)
{
if (largest < values[i]) // check to see if there is something larger
{
largest = values[i];
}
}

// Find the number of spalts to use
// with the precent based on the largest value
int* p_bar_length = new (nothrow) int[size];
for (int i = 0; i < size; i++)
{
*p_bar_length = (values[i] / largest) * MAX_SPLATS;
p_bar_length++; // Go to next memory address
}

// Go back to the orignal memory address
p_bar_length = p_bar_length - size;

// Pritnt the correct number of splats
for (int i = 0; i < size; i++)
{
for (int j = 0; j < *p_bar_length; j++)
{
cout << "*";
}
p_bar_length++;
cout << endl;
}

// Go back to the orignal memory address
p_bar_length = p_bar_length - size;

delete[] p_bar_length;
}

int main()
{
double values[6] = { 22, 40, 28, 26, 14, 46};
int val_size = 6;

bar_chart(values, val_size);

system("pause");

return 0;
}

最佳答案

因为这是 C++,所以最好的方法是使用指针;相反,使用 std::vector .

也就是说,您也可以始终将指针视为数组并只访问 p_bar_length[i]对于给定的位置 0 <= i < length而不是递增指针。

关于c++ - 使用指针的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7404300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com