Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Caricare un vettore di 10 interi da un file e ricercare un elemento al suo interno con la ricerca dicotomica (comunicare la posizione)
- */
- #include <stdio.h>
- int main() {
- FILE *f1;
- int v[10],i,j,swp,srch,p,u,m; // v = vettore, i,j = contatori swp = variabile di scambio p,u,m = primo elemento, ultimo elemento, elemento mediano
- f1 = fopen("input.txt","r");
- if(f1 == NULL){
- printf("Errore\n");
- return 1;
- }else{
- // Caricamento del vettore
- for (i = 0; i < 10; i++) {
- fscanf(f1,"%d",&v[i]);
- }
- // Ordinamento crescente con Bubble Sort
- for (i = 0; i < 10; i++) {
- for (j = 0; j < 9; j++) {
- if(v[j] > v[j+1]){
- swp = v[j];
- v[j] = v[j+1];
- v[j+1] = swp;
- }
- }
- }
- // Ricerca dicotomica
- printf("Cosa vuoi cercare? --> ");
- scanf("%d", &srch);
- p = 0;
- u = 9;
- while(1){ // Ciclo infinito, le condizioni di uscita sono all'interno del ciclo
- m = (p+u) / 2; // Posizione media, approssimata per difetto in caso di risultato p+u dispari
- if(v[m] == srch){
- printf("Termine Cercato: %d \n", srch);
- printf("Posizione: %d\n", m);
- break; // Esco dal ciclo
- }else if(srch > v[m]){ // Se il termine cercato รจ maggiore dell'elemento mediano, escludo tutti quelli precedenti e il mediano stesso
- p = m+1;
- }else{ // Se il termine cercato รจ minore dell'elemento mediano,escludo tutti quelli successivi e il mediano stesso
- u = m-1;
- }
- if(p > u){ // Se ho scorso tutto il vettore e non ho trovato nulla, stampo un messaggio di errore ed esco
- printf("L'elemento non รจ presente nel vettore\n");
- break;
- }
- }
- }
- fclose(f1); // Chiudo il file f1
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement