Register
- Group
- Member
- Posts
- 82
- Reputation
- 0
- Status
- Offline
|
|
#include<stdio.h>
#define SIZE1 4 #define SIZE2 7 #define BUFFSIZE 4+7
int element_in_array(int n, int arr[], int size); int intersect(int arr1[], int arr2[], int buff[], int a, int b, int c); int union_array(int arr1[], int arr2[], int buff[], int a, int b, int c); int differ_array(int arr1[], int arr2[], int buff[], int a, int b, int c); void print_array(int array[], int size);
int main(){ int insieme1[SIZE1], insieme2[SIZE2], buffer[BUFFSIZE]; int contatore;
int i= 0; while (i<size1){ printf("insieme1[%d]=", i); scanf("%d", &insieme1[i]); i++; } i= 0; while (i<size2){ printf("insieme2[%d]=", i); scanf("%d", &insieme2[i]); i++; } //int b= element_in_array(4, insieme1, SIZE1);
//printf("%d", b); intersect(insieme1, insieme2, buffer, SIZE1, SIZE2, BUFFSIZE); contatore= intersect(insieme1, insieme2, buffer, SIZE1, SIZE2, BUFFSIZE); printf("Elementi in comune sono:\n"); print_array(buffer, contatore);
contatore= union_array(insieme1, insieme2, buffer, SIZE1, SIZE2, BUFFSIZE); printf("L'unione dei due insiemi è:\n"); print_array(buffer, contatore);
contatore= differ_array(insieme1, insieme2, buffer, SIZE1, SIZE2, BUFFSIZE); printf("La differenza tra insieme 1 e insieme 2 è:\n"); print_array(buffer, contatore);
contatore= differ_array(insieme2, insieme1, buffer, SIZE2, SIZE2, BUFFSIZE); printf("Invece la differenza tra insieme 2 e insieme 1 è:\n"); print_array(buffer, contatore); }
void print_array(int *array, int size){ int i= 0; while (i<size){ printf("\tArray[%d]= %d\n", i, array[i]); i++; } } int element_in_array(int n, int arr[], int size){ int i= 0; while (i<size){ if (n==arr[i]) return 1; i++; } return 0; } int intersect(int arr1[], int arr2[], int buff[], int a, int b, int c){ int i= 0; int counter= 0;
while (i<a){ if (element_in_array(arr1[i], arr2, b)){ buff[counter]= arr1[i]; counter= (counter+1)%c; //Evito errori runtime, ma questo mi potrebbe far perdere alcuni elementi in comune sovrascrivendoli } i++; } return counter; } int union_array(int arr1[], int arr2[], int buff[], int a, int b, int c){ int i= 0; int counter= 0; while (i<a){ buff[counter]= arr1[i]; i++; counter= (counter+1)%c; } i= 0; while (i<b){ buff[counter]= arr2[i]; i++; counter= (counter+1)%c; } if (counter==0) counter= c;
return (counter==(a+b)) ? counter : 0; } int differ_array(int arr1[], int arr2[], int buff[], int a, int b, int c){ int i= 0; int counter= 0; while (i<a){ if (!element_in_array(arr1[i], arr2, b)){ buff[counter]= arr1[i]; counter= (counter+1)%c; } i++; } return counter; }
|
|