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:
dove sbaglio? grazie !!!!1codice:#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; }

Rispondi quotando