Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. 1 /* PROGRAMMAZIONE IN C */
  2. 2
  3. 3 /* File: intersezione_vettori.c */
  4. 4 /* Soluzione proposta esercizio "Intersezione di due vettori" */
  5. 5
  6. 6
  7. 7 #include <stdio.h>
  8. 8 #include <stdlib.h>
  9. 9
  10. 10 int main(void)
  11. 11 {
  12. 12 const int MAXN = 30 ; /* dimensione massima dei vettori */
  13. 13
  14. 14 int vet1[MAXN], vet2[MAXN] ; /* vettori di interi */
  15. 15 int N1, N2 ; /* dimensione dei vettori */
  16. 16
  17. 17 int intersezione[MAXN] ; /* intersezione tra i due vettori di interi */
  18.  
  19. c 2006 Politecnico di Torino 13
  20. Programmazione in C Vettori
  21. 18 int N_intersezione ; /* dimensione del vettore intersezione */
  22. 19
  23. 20 int i, j ; /* indici dei cicli */
  24. 21 int trovato ; /* flag per la ricerca */
  25. 22
  26. 23 /* LEGGI LE DIMENSIONI DEL PRIMO VETTORE */
  27. 24 do
  28. 25 {
  29. 26 printf("Quanti numeri saranno inseriti nel primo vettore? ") ;
  30. 27 scanf("%d", &N1) ;
  31. 28
  32. 29 /* LA DIMENSIONE MASSIMA DEL VETTORE E’ COMPRESA TRA 1 E MAXN */
  33. 30 if ( N1 > MAXN || N1 <=0 )
  34. 31 printf("Errore: il numero deve essere compreso tra 0 e %d\n",MAXN) ;
  35. 32 }
  36. 33 while ( N1 > MAXN || N1 <= 0 ) ;
  37. 34
  38. 35 /* LEGGI IL PRIMO VETTORE */
  39. 36 printf("Inserisci il primo vettore di %d elementi\n", N1) ;
  40. 37 for ( i=0; i< N1; i++ )
  41. 38 {
  42. 39 printf("Elemento %d: ", i+1) ;
  43. 40 scanf("%d", &vet1[i]) ;
  44. 41 }
  45. 42 printf("\n") ;
  46. 43
  47. 44 /* STAMPA DEL PRIMO VETTORE */
  48. 45 printf("Stampa del primo vettore\n");
  49. 46 for ( i=0; i< N1; i++ )
  50. 47 printf("Elemento %d: %d\n", i+1, vet1[i]) ;
  51. 48 printf("\n") ;
  52. 49
  53. 50 /* LEGGI LE DIMENSIONI DEL SECONDO VETTORE */
  54. 51 do
  55. 52 {
  56. 53 printf("Quanti numeri saranno inseriti nel secondo vettore? ") ;
  57. 54 scanf("%d", &N2) ;
  58. 55
  59. 56 /* LA DIMENSIONE MASSIMA DEL VETTORE E’ COMPRESA TRA 1 E MAXN */
  60. 57 if ( N2 > MAXN || N2 <=0 )
  61. 58 printf("Errore: il numero deve essere compreso tra 0 e %d\n", MAXN) ;
  62. 59 }
  63. 60 while ( N2 > MAXN || N2 <= 0 ) ;
  64. 61
  65. 62 /* LEGGI IL SECONDO VETTORE */
  66. 63 printf("Inserisci il secondo vettore di %d elementi\n", N2) ;
  67. 64 for ( i=0; i< N2; i++ )
  68. 65 {
  69. 66 printf("Elemento %d: ", i+1) ;
  70. 67 scanf("%d", &vet2[i]) ;
  71. 68 }
  72. 69 printf("\n") ;
  73. 70
  74. 71 /* STAMPA DEL SECONDO VETTORE */
  75. 72 printf("Stampa il secondo vettore\n");
  76. 73 for ( i=0; i< N2; i++ )
  77.  
  78. c 2006 Politecnico di Torino 14
  79. Programmazione in C Vettori
  80. 74 printf("Elemento %d: %d\n",i+1, vet2[i]) ;
  81. 75 printf("\n") ;
  82. 76
  83. 77 /* AGGIORNA IL VETTORE "intersezione" */
  84. 78
  85. 79 /* INIZIALMENTE IL VETTORE "intersezione" NON CONTIENE NESSUN NUMERO */
  86. 80 N_intersezione = 0 ;
  87. 81
  88. 82 /* IL CICLO FOR SCANDISCE IL VETTORE "vet1" */
  89. 83 for ( i=0; i<N1; i++ )
  90. 84 {
  91. 85 /* INIZIALIZZA IL FLAG "trovato". IL FLAG ASSUME I VALORI
  92. 86 -- "trovato" E’ UGUALE A 0 SE IL VETTORE "vet2" NON CONTIENE
  93. 87 IL VALORE IN "vet1[i]"
  94. 88 -- "trovato" E’ UGUALE A 1 SE IL VETTORE "vet2" CONTIENE IL
  95. 89 VALORE IN "vet1[i]" */
  96. 90 trovato = 0;
  97. 91
  98. 92 /* PER OGNI ELEMENTO "vet1[i]" DI "vet1", IL CICLO FOR SCANDISCE IL
  99. 93 VETTORE "vet2" E VERIFICA SE "vet2" CONTIENE IL VALORE IN "vet1[i]"
  100. 94
  101. 95 LA RICERCA TERMINA QUANDO SI TROVA UNA CELLA "vet2[j]" UGUALE A "vet1[i]"
  102. 96 O QUANDO SONO STATE CONSIDERATE TUTTE LE CELLE DEL VETTORE "vet2" */
  103. 97
  104. 98 for ( j=0; j<N2 && trovato==0; j++ )
  105. 99 {
  106. 100 if ( vet2[j] == vet1[i] )
  107. 101 {
  108. 102 /* SE "vet2" CONTIENE IL VALORE IN "vet1[i]", QUESTO
  109. 103 VALORE E’ INSERITO NEL VETTORE "intersezione" */
  110. 104 intersezione[N_intersezione] = vet1[i] ;
  111. 105
  112. 106 /* INCREMENTA LA DIMENSIONE DEL VETTORE "intersezione" */
  113. 107 N_intersezione = N_intersezione + 1 ;
  114. 108
  115. 109 /* AGGIORNA IL FLAG "trovato" */
  116. 110 trovato = 1 ;
  117. 111 }
  118. 112 }
  119. 113 }
  120. 114
  121. 115 /* STAMPA DEL VETTORE "intersezione" */
  122. 116 printf("Stampa del vettore intersezione\n");
  123. 117 if (N_intersezione == 0)
  124. 118 printf("Il vettore intersezione non contiene nessun elemento \n") ;
  125. else
  126. {
  127. printf("Il vettore intersezione contiene %d elementi \n",
  128. N_intersezione) ;
  129. for ( i=0; i< N_intersezione; i++ )
  130. printf("Elemento %d: %d\n", i+1, intersezione[i]) ;
  131. printf("\n") ;
  132. }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement