gpt4 book ai didi

无法理解程序背后的逻辑

转载 作者:行者123 更新时间:2023-11-30 20:50:37 25 4
gpt4 key购买 nike

试图制作一个查找 vector 的基本 C 程序,我以为我已经取得了一些进展,但我已经停止了,不一定是在错误方面,而是在其背后的逻辑方面。这是我的代码:

#include<stdio.h>
#include <math.h>

int norm_vec(int *x, int n) {

int i;
float modul;

for(i=0;i<n;i++;)
{
modul=++ x[i]*x[i];
}
modul = sqrt(modul);

for(i=0;i<n;i++;)
{
x[i] = x[i]/modul
}
}

最佳答案

通过将问题分解为更小的部分,您会更轻松。归一化 vector 需要将 vector 的每个分量除以 vector 的大小。所以你需要一种计算大小的方法。这是一件非常常见的事情,因此它有自己的功能。

您可能还需要一种打印 vector 的方法,以便您可以看到您的函数按您的预期工作。我为 Vector 编写了一个打印函数的示例。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

typedef struct Vector {
int *components;
int arity;
} Vector;

double squaredMagnitude(Vector);
double magnitude(Vector);
void normalize(Vector);
void printVector(Vector);

double squaredMagnitude(Vector v) {
double sum = 0;
for (int i = 0; i < v.arity; i++) {
int component = v.components[i];
sum += component * component;
}
return sum;
}

double magnitude(Vector v) {
return sqrt(squaredMagnitude(v));
}

void normalize(Vector v) {
double mag = magnitude(v);
for (int i = 0; i < v.arity; i++) v.components[i] /= mag;
}

void printVector(Vector v) {
printf("{");
for (int i = 0; i < v.arity - 1; i++) printf("%i, ", v.components[i]);
if (v.arity != 0) printf("%i", v.components[v.arity - 1]);
printf("}\n");
}

int main() {
int components[] = {0, 5, 0};
int componentCount = sizeof(components) / sizeof(*components);

Vector v;
v.components = malloc(componentCount);
memcpy(v.components, components, sizeof(components));
v.arity = componentCount;

normalize(v);

printVector(v);
}

关于无法理解程序背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42498153/

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