Я хочу написать код (в c), который печатает пересечение двух векторов с длиной «N» и не может печатать тот же номер дважды. Векторы будут заполнены функцией, которая читает ввод (любое число) один за другим. И в конце концов, код должен печатать другой вектор с пересечением первых двух векторов. До сих пор я написал код ниже, но у него есть логическая ошибка, которую я не могу решить.Пересечение 2 векторов, логическая ошибка
#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;
}
Вам нужно определить, что вы подразумеваете под «пересечением двух векторов». Являются ли векторы просто представления множеств и пересечений заданными пересечениями? Если это так, вы, вероятно, захотите сначала удалить дубликаты из векторов и, возможно, захотите каким-то образом их сортировать, чтобы обеспечить каноническое представление множеств (так что идентичные множества всегда будут представлены одинаковыми векторами). Или векторы представляют векторы в пространстве, и вы хотите найти точку, в которой они пересекаются? В этом случае вам нужно что-то совершенно другое ... –
Простым способом я просто хочу создать другой вектор с повторением чисел между двумя исходными векторами. – Student
Просьба описать эту «логическую ошибку». –