我试图通过使用必须返回浮点值的函数对向量内的值求和,如下所示:
float vectorSum(float *vector, int vectorSize){
int result = 0;
for (int i = 0; i < vectorSize; i++){
cout << vector[i] << "\n";
resultado += vetor[i];
}
cout << "\n\n";
return resultado;
}
我的这些变量将由用户填写:
float vector[0];
int vectorSize;
cout << "Write the " << vectorSize << " values to insert in the vector:" << endl;
for (int c = 0; c < vectorSize; c++){
cin >> vector[c];
}
cout << "\n\n";
最后将调用函数vectorSum:
cout << "The sum of the vector's values is:" << endl;
vectorSumTotal = vectorSum(vector, vectorSize);
cout << vectorSumTotal;
cout << "\n\n";
问题:
如果我使用值3填充vectorSize并使用值填充向量:1,2,6
然而,我不知道为什么,6变为8.40779e-45,我需要它来保持值6。
将float转换为int或指针可能是一个问题吗?
帮助?
答案 0 :(得分:1)
您从不初始化vector
的内存。您必须执行float *vector = new float[vectorSize];
,然后才能使用值填充(然后delete[] vector;
)
另外,为什么你使用float
的数组std::vector
,而vector
是你情况下更好的选择。
更重要的是,避免调用您的数组std::vector
,因为存在using namespace std;
,如果您正在使用f = open('sample.txt', 'r')
lines = f.readlines()
f.close()
name = 'ali'
for i in range(len(lines) - 1):
line = lines[i]
#Find 'name' index (-1 if not found)
index = line.find(name)
# If the wanted name is found
if index != -1:
#Split line by spaces to get name and number starting from name
words = line[index:].split()
# Name and number should be the first two elements in words list
name_number = words[0]+ ' ' + '5' #words[1]
#
# Do some thing with name_number
#
# the last '1' is to skip copying a space
line = line[:index] + name_number + ' ' + line[index + len(name_number) + 1:]
# Save result
lines[i] = line
output = open('sample.txt', 'w')
for line in lines:
output.write(line)
output.close()
,则会影响它。
答案 1 :(得分:1)
您的定义是float vector[0];
你应该改为float vector[MAX_SIZE];
或使用vector<float>
使用float vector[0];
vetcor[0]
时,vector[1]
实际上在堆栈上,之后会被其他堆栈变量重叠。