salve a tutti! ho questo problema:
Progettare un algoritmo che, preso in ingresso un array v di n elementi, produce un array w contenente gli elementi distinti di v (elementi che compaiono esattamente una volta). Definire una funzione che implementa l'algoritmo nel caso in cui v contenga una sequenza di 0 e 1.
La funzione restituisce la dimensione del vettore w.
Nel programma principale stampare il contenuto del vettore w.*/
Ho pensato ad una soluzione ma non mi viene! posto il codice:
codice:
#include <stdio.h>
int carica(int v[], int n){
int i;
for (i=0; i<n; i++){
do{
printf("Inserire %d elemento:",i+1);
scanf("%d", &v[i]);
}while ((v[i]!=0)&&(v[i]!=1));
}
}
void stampa(int v[], int n){
int i;
for (i=0; i<n; i++)
printf("%2d", v[i]);
}
int distinti01(int v[], int dim, int w[]){
int i,j,inf,med,sup,cont=0;
int a[50];
int b[50];
inf=0;
sup=dim-1;
med=(inf+sup)/2;
for (i=inf; i<=med; i++){
printf("confronto tra elemento %d e elemento %d del 1 vettore\n", i,i+1);
if (v[i]!=v[i++])
a[i]=v[i];
}
for (j=med; j<=sup; j++){
printf("confronto tra elemento %d e elemento %d del 2 vettore\n", j,j+1);
if (v[j]!=v[j++])
b[j]=v[j];
}
for (i=inf; i<=med; i++){
for (j=med; j<=sup; j++){
if (a[i]!=b[j]){
w[i]=a[i];
cont+=1;
}
}
}
printf("Vettore finale: ");
for (i=0; i<dim; i++)
printf("%2d", w[i]);
return cont;
}
int main(){
int n,cont=0;
int v[100];
int w[100];
printf("Inserire dimensione vettore: ");
scanf("%d", &n);
carica(v,n);
printf("Array di partenza: ");
stampa (v,n);
printf("\n");
cont=distinti01(v,n,w);
printf("\n");
if (cont==0)
printf("L'array non ha elementi distinti\n");
else
printf("La dimensione dell'array risultante è:\n", cont);
return 0;
}
dove sbaglio? grazie !!!!1