【发布时间】:2013-11-05 05:03:30
【问题描述】:
再次打扰,我不是编程天才。
首先,总结一下:数组输入。两个 3D 向量……哈哈,让我们用向量来计算 MORE 向量。无论如何:点积是荒谬的(小数点前九个数字;我的意思是,说真的,我从没想过 1x8+7x5+4x2 可以有九个数字)。交叉乘积……甚至更糟。
我做了……嗯……我怎么称呼它?好吧,我们称之为“traza”。为了便于理解,我将翻译一个定义:代码的“traza”告诉我们其执行的指令顺序,以及在每一行代码之后变量如何变化。你知道,带有变量和数字标记的表格指的是代码行,如果代码做了一些意想不到的事情,我们会在这些行中查看。切入正题:就我所见,一切都很好。
然后,我使用打印命令和向量中的每个值制作了一个意外的“pseudotraza”。就在输入之后和点积之前(在函数中)。你猜怎么着: 1)这不是我的输入,在他们中的任何一个中 2)它们甚至不是相同的值 3) 第一个值与我的输入相距甚远,但以下值至少更具逻辑性(与输入的差异较小)。
我在 12 小时前的今天早上学会了使用数组/向量/任何东西。我从来不需要在输入之前将任何值设置为 0 作为默认值。但这是我之前知道的唯一一件事情发生在我身上的时候。 (总有一天你们中的任何一个人都会成为我的编程老师,你们比他自己学得更多……请原谅我糟糕的语法,西班牙的英语教学只是“在上高中一年学习一些语法规则和不超过 50 个练习。 ..这就是你通过大学入学考试所需要的一切!”)
#include <iostream>
using namespace std;
#include <stdlib.h>
const int N = 3;
typedef int Vector[N];
void introduirVector (Vector);
float producteEscalar (const Vector, const Vector); /*Input vector and dot product*/
int main (void)
{
Vector v1, v2;
float p_esc;
cout << "Introduim les dades del vector A: "; /* Input */
introduirVector (v1);
cout << "Introduim les dades del vector B: "; /* 2x Input combo */
introduirVector (v2);
cout << v1[0] << "\n" << v1[1] << "\n" << v1[2] << "\n" << v2[0] << "\n" << v2[1] << "\n" << v2[2] << endl; /* "Puseudotraza*/
p_esc= producteEscalar (v1, v2); /*Dot product*/
cout << "El producte escalar: " << p_esc; /*Dot product is...*/
system ("PAUSE");
return 0;
}
/*3x Input combo*/
void introduirVector (Vector)
{
int i;
Vector v;
for (i = 0; i < N; i++)
{
cin >> v[i];
}
return;
}
/* Dot product (why all the Vectors are set as constants but another after this is not set? It's the hint given by the teacher, my (not) beloved teacher...they gave us the main function and the other function's prototypes, but that's all) */
float producteEscalar (const Vector, const Vector)
{
float escalar;
Vector v1, v2;
/* Pseudotrazas for all*/
cout << v1[0] << "\n" << v1[1] << "\n" << v1[2] << "\n" << v2[0] << "\n" << v2[1] << "\n" << v2[2] << endl;
/* Dot product and all that */
escalar = (v1[0]*v2[0])+(v1[1]*v2[1])+(v1[2]*v2[2]);
return escalar;
}
【问题讨论】:
-
如果您可以将闲聊减少到最低限度,这个问题的可读性会更高。只是事实。
-
另外,这里没有我能看到的实际问题。
-
在 introduirVector() 和 producteEscalar() 中,您使用的是局部变量而不是传递给函数的数据。但是你会遇到问题,你传递的是值而不是引用,所以你的 introduirVector 无论如何都无法更改传递给它的向量。
标签: c++ arrays input random vector