|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 979
|
[C] Ricerca binaria + Insertion sort
Salve a tutti, scusate, magari ho fatto qualche errore davvero stupido, ma vi sarei molto grato se riuscite a scovare l'errore dentro questo codice. Io non ci riesco...
Il programma stabilisce un array, lo ordina, e poi effettua una ricerca binaria all'interno dell'array. #include <stdio.h> #include <malloc.h> void insort(int a[], int n); int ricercabin(int a[], int n, int x); main() { int *a; int i, n, x, risultato; printf("Inserisci la quantita' di numeri che comporranno l'array\n"); scanf("%d", &n); /*Alloco la memoria in base al precedente valore*/ a=(int*)malloc(n*sizeof(int)); for (i=0; i<n; i++) { /*Richiesta input all'utente*/ printf("Inserire un numero\n"); scanf("%d", &a[i]); } /*Chiamata della funzione insort*/ insort(a,n); /*Stampa dell'array ordinato*/ printf("La tabella numerica inserita ed ordinata e':\n"); for (i=0;i<n;i++) { printf(" %d\n", a[i]); } printf("inserisci adesso, un numero da ricercare nell'array:\n"); scanf("%d", &x); ***risultato = ricercabin(n, x); printf("Il risultato è %d", risultato); free(a); } void insort(int a[], int n) { int i, k; int app; for (i=1; i<n; i++) { app = a[i]; k = i-1; while (k>=0 && a[k]>app) { a[k+1] = a[k]; k--; } a[k+1] = app; } } int ricercabin(int a[], int n, int x) { int m, low, high; low = 0; high = n - 1; m = ( low + high ) / 2; while (low <= high) { if (x > a[m]) low = m+1; else high = m; } if (a[low] == x) return low; else return -1; } Dove stanno gli asterischi rossi, il compilatore risponde: [Warning] passing arg 1 of `ricercabin' makes pointer from integer without a cast too few arguments to function `ricercabin' vi ringrazio tutti in anticipo! Ultima modifica di Starise : 01-03-2005 alle 17:20. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
mi sembra normale, tu scrivi
Codice:
... int ricercabin(int a[], int n, int x); ... risultato = ricercabin(n, x); ... Codice:
risultato = ricercabin(a, n, x); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
|
Hai pasticciato un attimo con i parametri,ti sei dimenticato di passare il vettore a alla funzione.Sara la stanchezza da troppo studio..ti capisco...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 979
|
infatti ragazzi, ho risolto!!
c'avevo proprio la testa fra le nuvole! grazie a tutti!
__________________
Workstation: CPU AMD Ryzen 5900X @ 4900 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 9070 XT | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz FreeSync |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:30.



















