Я новичок.Я думаю, что главная проблема у меня с флагами.(Я не могу использовать команду прерывания, чтобы остановить петли).Пример:
A={1,2,3,4,5} B={1,2,3,6}
Я должен создать новый массив с предыдущими без дубликатов.Итак: C = {1,2,3,4,5,6}.
#include <stdio.h>
#include <stdlib.h>
#define M 5
#define N 4
int main() {
int A[M]={1,2,3,4,5};
int B[N]={1,2,3,6};
int U[M+N]; //M+N is the maximum size. it'll decrease with a counter.
int i=0, j=0,count=0,flag=0;
while(i<M){ //Array A is copied into Array U.
U[count]=A[i];
count++; //counter that will determine the size.
i++;
}
i=0,j=0;
while(i<M){
j=0;
flag=0;
while(flag==1 || j<N){ //check if the flag is on or if the array is ended.
if(B[j]!=A[i]){ // check if the element of the b array is different from
//the element of array A (cause i already copied the array A)
count++; //i make some space for the element to be copied.
U[count]=B[j];
}
else flag=1; //if the flag is on it means the element was equal, so i just
j++; //go to the next one
}
i++;
}
for(i=0;i<count;i++)
printf(" %d ", U[i]); //here i print, it prints the first 5 values from Array a correctly, for the other ones is a mess.
return 0;
}
Моя идея состоит в том, чтобы скопировать самый длинный массив (A) в новый (C), а затем отсканировать второй (B) и проверить каждое значение с каждым значением массива A. Еслизначение отличается (из всех значений в A) Я добавляю значение B в C, в противном случае я начинаю проверять следующее значение массива B со всеми значениями в A.