[ANSI C] errore: too few arguments to function function2

di il
33 risposte

33 Risposte - Pagina 3

  • Re: [ANSI C] errore: too few arguments to function function2

    oregon ha scritto:


    La funzione deve essere void
    Ti ringrazio anzi tutto Oregon per l'aiuto.

    Ti faccio qualche domanda per capire: io dovrei passare alla function3 la struttura su cui lavorare, e successivamente quando la funzione 3 si conclude e legge il return, gestisco la struttura nella main per determinare (con un if) se il numero reale passato, è contenuto nel vettore a sua volta contenuto dalla struttura. Di conseguenza, perchè la funzione 3 dovrebbe essere void ? Non deve ritornare la struttura che ho gestito nella funzione stessa ?

    mylib.c (funzione 3)
    
     extern struct insieme function3(struct insieme vettore)
        {
        /* dichiarazione variabili locali */
            struct vettore *ptr;      
            (*ptr).trovato = 0;
            int i;
            
            /* for start */
             for (i=0,i<(*ptr).d;((*ptr).trovato= 0); i++)                     
        
                if ((*ptr).numero_reale == (*ptr).vettore[i])
                    (*ptr).trovato= 1;
                
              /* for end */
            return(vettore);
        }
    
    main.c (case 3, utilizzo della funzione 3)
    
    case'3':
        /*caricamento array tramite la funzione 1 */
        vettore=function1();
        
        /*input numero reale*/
        printf("Inserisci un numero reale: ");    
        scanf("%lf", &vettore.numero_reale);
        printf("Il valore reale e': %lf\n",vettore.numero_reale ); /*debug printf*/
    
        
    
        /*caricamento del numero reale */
         vettore=function3(vettore);
    
        /*facciamo un if in base al risultato di trovato, se la variabile trovato == 1 then il numero è presente, in caso contrario, non lo è */
    
        if(vettore.trovato==1)
            printf("il numero è presente nell'insieme\n");
        else
            printf("Il numero non è presente nell'insieme\n");
        break;
    
  • Re: [ANSI C] errore: too few arguments to function function2

    Guarda ... dato che ti mancano le basi anche per comprendere i suggerimenti, forse è meglio che guardi un semplice esempio di come potresti scrivere una versione semplificata del codice ... senza menu e senza function2 che potresti provare ad aggiungere da solo
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct insieme {
    	double *vettore;
    	int n_elementi;
    };
    
    void function1(struct insieme *v)
    {
    	int i;
    
    	printf("Quanti numeri vuoi inserire?: ");
        scanf("%d", &v->n_elementi);                                 
        v->vettore = (double*)malloc(sizeof(double) * v->n_elementi);   
        
    	printf("La dimensione del vettore e' attualmente --> %d\n", v->n_elementi); 
           
        for(i=0; i<v->n_elementi; i++)
    	{
    		printf("Dammi un valore da salvare:\n");
    		scanf("%lf", &v->vettore[i]);
    	}
    }
    
    int function3(struct insieme *v, double val_reale)
    {
    	int i;
    	for (i=0; i<v->n_elementi; i++)                     
    		if(val_reale == v->vettore[i])
    			return(true);
            
            return(false);
     }
    
    int main()
    {
    	struct insieme vett;
    
    	function1(&vett);
    
    	int trovato;
    	double num_cercato = 1.52;
    	trovato=function3(&vett, num_cercato);
    
        if(trovato)
            printf("il numero è presente nell'insieme\n");
        else
            printf("Il numero non è presente nell'insieme\n");
    
    	return 0;
    }
  • Re: [ANSI C] errore: too few arguments to function function2

    oregon ha scritto:


    Guarda ... dato che ti mancano le basi anche per comprendere i suggerimenti, forse è meglio che guardi un semplice esempio di come potresti scrivere una versione semplificata del codice ... senza menu e senza function2 che potresti provare ad aggiungere da solo
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct insieme {
    	double *vettore;
    	int n_elementi;
    };
    
    void function1(struct insieme *v)
    {
    	int i;
    
    	printf("Quanti numeri vuoi inserire?: ");
        scanf("%d", &v->n_elementi);                                 
        v->vettore = (double*)malloc(sizeof(double) * v->n_elementi);   
        
    	printf("La dimensione del vettore e' attualmente --> %d\n", v->n_elementi); 
           
        for(i=0; i<v->n_elementi; i++)
    	{
    		printf("Dammi un valore da salvare:\n");
    		scanf("%lf", &v->vettore[i]);
    	}
    }
    
    int function3(struct insieme *v, double val_reale)
    {
    	int i;
    	for (i=0; i<v->n_elementi; i++)                     
    		if(val_reale == v->vettore[i])
    			return(true);
            
            return(false);
     }
    
    int main()
    {
    	struct insieme vett;
    
    	function1(&vett);
    
    	int trovato;
    	double num_cercato = 1.52;
    	trovato=function3(&vett, num_cercato);
    
        if(trovato)
            printf("il numero è presente nell'insieme\n");
        else
            printf("Il numero non è presente nell'insieme\n");
    
    	return 0;
    }
    Ti ringrazio ore! Grazie al tuo commento ho capito i passaggi da fare e sono riuscito a fare la funzione come volevo io ! Ho anche preso spunto da qualche libro. Tra qalche giorno pubblico tutte le source e il modo in cui sono riuscito a fixxare, così ti faccio vedere!
  • Re: [ANSI C] errore: too few arguments to function function2

    Ok ma, per favore, non scrivere "fixxare" ...
Devi accedere o registrarti per scrivere nel forum
33 risposte