我无法从子例程打印最终数组
I cannot print the final array from the subroutine
我需要创建一个可以对 N 个向量求和并打印最终数组的程序,但是例如,如果我将 N = 2,第一个数组 (a,b) 和第二个数组 (c,d) 的总和应该是 (a+c, d+b) 但它只显示 (a,b) 并给我一个错误。当然你只能在真正的程序中使用数字,所以请给我一些帮助来找到这个代码中的问题。谢谢你。 PS:Some 引用是葡萄牙语,我很抱歉,但这是我的母语。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/*Program that calculate the sum of N float vector,
by using a subroutine that generate a resultant vector*/
//SUBROTINA
void forca_res(float vet_res[2],float vet[2],int num)
{
int i;
//Calculo do Vetor Resultante
for(i=0;i<2;i++)
{
vet_res[i] = vet_res[i] + vet[i];
}
}
//PROGRAMA PRINCIPAL
int main(void)
{
//Declaracao de variaveis
int num, dim=2, i, cont=0;
float *vet_res, *vet;
vet= (float*) calloc( dim, sizeof(int) );
vet_res = (float*) calloc( dim, sizeof(int) );
//Leitura de dados
printf("Type the number 'N', of the force vectors: ");
scanf("%d", &num);
//Logic
while (cont != num)
{
printf("\nType the elements of the vector:\n");
for(i=0;i<2;i++)
{
scanf("%f", &vet[i]);
}
//Chamando a Subrotina
forca_res(vet_res, vet, num);
free(vet);
cont++;
printf("\nYour resultant vector:\n");
for(i=0;i<2;i++)
{
printf("%f ", vet_res[i]);
}
}
//Imprimindo o Resultado
printf("\n\nVETOR RESULTANTE:\n");
for(i=0;i<2;i++)
{
printf("%f", vet_res[i]);
}
//Finalizando o Programa
printf("\n\nFim do Programa!\n");
getch();
return 0;
}
你不应该释放 vet
直到你的 while 循环之后,否则第二次通过循环,vet
将被取消分配。
我需要创建一个可以对 N 个向量求和并打印最终数组的程序,但是例如,如果我将 N = 2,第一个数组 (a,b) 和第二个数组 (c,d) 的总和应该是 (a+c, d+b) 但它只显示 (a,b) 并给我一个错误。当然你只能在真正的程序中使用数字,所以请给我一些帮助来找到这个代码中的问题。谢谢你。 PS:Some 引用是葡萄牙语,我很抱歉,但这是我的母语。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/*Program that calculate the sum of N float vector,
by using a subroutine that generate a resultant vector*/
//SUBROTINA
void forca_res(float vet_res[2],float vet[2],int num)
{
int i;
//Calculo do Vetor Resultante
for(i=0;i<2;i++)
{
vet_res[i] = vet_res[i] + vet[i];
}
}
//PROGRAMA PRINCIPAL
int main(void)
{
//Declaracao de variaveis
int num, dim=2, i, cont=0;
float *vet_res, *vet;
vet= (float*) calloc( dim, sizeof(int) );
vet_res = (float*) calloc( dim, sizeof(int) );
//Leitura de dados
printf("Type the number 'N', of the force vectors: ");
scanf("%d", &num);
//Logic
while (cont != num)
{
printf("\nType the elements of the vector:\n");
for(i=0;i<2;i++)
{
scanf("%f", &vet[i]);
}
//Chamando a Subrotina
forca_res(vet_res, vet, num);
free(vet);
cont++;
printf("\nYour resultant vector:\n");
for(i=0;i<2;i++)
{
printf("%f ", vet_res[i]);
}
}
//Imprimindo o Resultado
printf("\n\nVETOR RESULTANTE:\n");
for(i=0;i<2;i++)
{
printf("%f", vet_res[i]);
}
//Finalizando o Programa
printf("\n\nFim do Programa!\n");
getch();
return 0;
}
你不应该释放 vet
直到你的 while 循环之后,否则第二次通过循环,vet
将被取消分配。