Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 两个向量的交集,逻辑错误_C_Algorithm_Vector - Fatal编程技术网

C 两个向量的交集,逻辑错误

C 两个向量的交集,逻辑错误,c,algorithm,vector,C,Algorithm,Vector,我想写一个代码(用c)来打印两个长度为“N”的向量的交集,并且不能打印同一个数字两次。向量将被一个函数填充,该函数逐个读取输入(任何数字)。毕竟,代码需要打印另一个向量,前两个向量之间有交集。直到现在,我写了下面的代码,但它有一个逻辑错误,我无法解决 #include <stdlib.h> #include <stdio.h> void preencheVetor(int* v, int tamanho){ int i=0; for(i=0;i<t

我想写一个代码(用c)来打印两个长度为“N”的向量的交集,并且不能打印同一个数字两次。向量将被一个函数填充,该函数逐个读取输入(任何数字)。毕竟,代码需要打印另一个向量,前两个向量之间有交集。直到现在,我写了下面的代码,但它有一个逻辑错误,我无法解决

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

void preencheVetor(int* v, int tamanho){
    int i=0;
    for(i=0;i<tamanho;i++){
        scanf("%d", *(v+i));
        printf("\n");
    }
}

void interVetor(int* v1, int* v2, int tamanho){
    int* v3=malloc(sizeof(int)*tamanho);
    int i1=0;
    int i2=0;
    int i3=0;
    int c=0;
    for(i1=0;i1<tamanho;i1++){
        for(i2=0;i2<tamanho;i2++){
            if((v1[i1])==(v2[i2])){
                *(v3+c)=v2[i2];
                c++;
            }
        }
    }
    for(i3=0;i3<tamanho;i3++){
        printf("%d", *(v3+i3));
        printf("\n");
    }   
}

int main(){
int n=0;
printf("Vectors Lenght:\n");
scanf("%d", &n);
printf("\n\n");
int v1[n];
int v2[n];
preencheVetor(v1, n);
printf("\n\n");
preencheVetor(v2, n);
printf("\n\n");
interVetor(v1, v2, n);
system("PAUSE");
return 0;
}
#包括
#包括
无效预检器(int*v,int tamanho){
int i=0;

对于(i=0;i向量
v3
的大小是
c
而不是
tamanho
。修复(i3…)的
循环。
除此之外,我认为你的十字路口还可以。

当然,如果不对向量进行排序,则效率很低。

您需要定义“两个向量的交集”的含义。向量是否只是集合的表示,而交集是集合的交集?如果是,您可能希望首先从向量中删除重复项,并可能希望以某种方式对它们进行排序,以提供集合的规范表示(因此相同的集合将始终由相同的向量表示).或者向量代表空间中的向量,你想找到它们相交的点吗?在这种情况下,你需要完全不同的东西…简单地说,我只想用两个原始向量之间重复的数字创建另一个向量。请描述这个“逻辑错误”(我不知道,问题出在最后一个向量中,我想是的,有两个问题,一个是你说的问题,另一个是scanf上的输入格式无效,但它可以工作(: