Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] funzione con struct warnig puntatori

    Buonasera a tutti,
    nel programma qui sotto ottengo sia per argument 2 che 3

    [Warning] passing argument 2 of 'funz' from incompatible pointer type [enabled by default]
    [Note] expected 'double *' but argument is of type 'double **'


    Vorrei sapere dove sbaglio nell' utilizzare i puntatori.
    La funzione dovrebbe essere giusta, sbaglio quando cerco di richiamarla nel main .

    Ringrazio chiunque interverrà.



    Produrre le dichiarazioni C che permettono di

    -definire la struct DATi con campi uno due di tipo double
    -un vettore di 5 lementi di tipo DATI denominato VETDATI
    Scrivere quindi la funzione che ha in ingresso un vettore v di tipo VETDATI e che restituisce attraverso il parametro par1 l'elemnto di v con il valore max del campo uno e attrav il parametro par2 l'elemento di v con il valore minimo del campo due.
    (In entrambi i casi se piu di un elemento corrispondesse alla richiesta ne sceglierebbe uno qlunque)

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    typedef struct{double uno, due;}DATI;
    typedef DATI VETDATI[5];
    
    void funz(VETDATI V,double *par1 ,double *par2)///par1 max uno //par2 min due
    {    
        int i;
        *par1=V[0].uno;
        *par2=V[0].due;
        
        for(i=0;i<5;i++)
            {    
                if (V[i].uno>(*par1))
                    *par1=V[i].uno;
                    
                if (V[i].due<(*par2))
                    *par2=V[i].due;
            }
    }
    
    
    
    int main(int argc, char *argv[]) 
    {    int i;
        VETDATI V;
        double *MAXUNO, *MINDUE;
        
        for(i=0;i<5;i++)
            {printf("inserisci V[%d].uno e V[%d].due\n",i,i);
            scanf("%lf%lf",&V[i].uno,&V[i].due);
            }
            
            funz(V,&MAXUNO,&MINDUE);
            
            printf("MAXUNO %lf\nMINDUE %lf",MAXUNO, MINDUE);
                
        return 0;

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    MAXUNO e MINDUE nel main sono puntatori a double ma dovrebbero essere semplicemente dei double

    doubleMAXUNO,MINDUE;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Forse ho capito ho tolto nel main l' asterisco a *MAXUNO e *MINDUE .
    Entrano nella funzione come indirizzo e ritornano i valori essendo definiti puntatori nella funzione.

    Spero sia corretto purtroppo faccio ancora confusione con i puntatori.
    Se qualcuno riesce a spiegarlo meglio o può confermare lo ringrazio comunque il programma ora funziona.

  4. #4
    Si grazie Oregon mi sono autorisposto anch' io!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.