Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. /*
  2. Si consideri un array A, non vuoto, di n interi, in cui ciascun valore può essere esclusivamente 0 oppure 1. I
  3. valori sono presenti senza alcun ordine; è anche possibile che tutti i valori siano uguali.
  4. Si scriva un algoritmo lineare che sposti tutti i valori 0 prima di tutti i valori 1. Verrà assegnato punteggio pieno
  5. ad algoritmi che scambiano elementi in A, che richiedono memoria ulteriore O(1) (quindi che non sfruttano array
  6. ausiliari), e che non sono basati sul conteggio del numero di 0 e 1 presenti.
  7. Si scriva un programma che implementa l’algoritmo. Il programma deve leggere da standard input un intero n
  8. seguito da una sequenza di n valori 0/1, riordinare l’array e stamparlo. Ad esempio, ricevendo da standard input
  9.  
  10. 7
  11. 0 1 1 0 0 0 1
  12. il programma deve stampare
  13. 0 0 0 0 1 1 1
  14. */
  15.  
  16. #include <stdio.h>
  17.  
  18. int main(void){
  19. int b[100]={0},n,x,i=0;
  20.  
  21. scanf("%d",&n);
  22. printf("\nn = %d\n",n);
  23. //input
  24. do{
  25. scanf("%d",&x);
  26. if(x==0 || x==1){
  27. b[i]=x;
  28. printf("\n\n%d",b[i]);
  29. //ordinamento
  30. do{
  31. x=b[i];
  32. b[i]=b[i-1];
  33. b[i-1]=x;
  34. if(b[i-2]!=0 && i>1){
  35. i--;
  36. }else{
  37. break;
  38. }
  39. }while(b[i]==0 && b[i-1]!=0 && i!=0);
  40. /* if (b[i]==0 && b[i-1]!=0 && i!=0){
  41. b[i]=b[i-1];
  42. b[i-1]=x;
  43. i=i-2;
  44. }*/
  45. i++;
  46. }
  47. printf("\ni = %d\n",i);
  48. }while(i<n);
  49.  
  50. //output
  51. printf("\nn = %d\n",n);
  52. for(i=0;i<n;i++){
  53. printf("%d",b[i]);
  54. }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement