Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495

    funzioni per calcolare il minimo di una somma

    Ciao!
    aiutooo!la funzione SOMMA non va...

    int minimo(int i, int *c, int *r)
    { int j,min=-1;
    char flag;
    for(j=0;j<nodi-1;j++)
    { flag=0;
    if(i<j)
    { min=minore(somma(l[i+1][j+1].dato,Dvec[j].dato),min,&flag);
    printf("se i<j %d",min);
    if(flag==1)
    *r=i+1;
    *c=j+1;
    }
    else { min=minore(somma(l[j+1][i+1].dato,Dvec[j].dato),min,&flag);
    printf("se i>j sono nell'else %d",min);
    if(flag==1)
    *r=j+1;
    *c=i+1;
    }
    }
    return min;
    }


    int minore(int a,int b,char *flag)
    { if(a!=-1)
    if(b!=-1)
    if(a<b)
    { *flag=1;
    return a; }
    else return b;
    else { *flag=1; return a;
    }
    else if(b!=-1) return b;
    else { *flag=1;
    return a;}
    }

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Ma il linguaggio nel titolo - o il prefisso - lo indichi? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495
    E' linguaggio C

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    mmh...dici che la funzione ( ) somma non va, ma non hai postato il codice...

    supposto che somma() non faccia altro che sommare dei numeri,
    e, in particolare, somma(n1, n2) = n1 + n2 :

    codice:
    /* Dovrebbe andare, ma puoi anche non fare caso ai vari
    * cambiamenti nella funzione minimo() */
    
    int minimo(int i, int *c, int *r)
    { 
    	int	j;		
    	int	min;
    	char	flag;
    	int 	testgt; /* Questa č un'aggiunta. */
    	int 	sum;    /* Anche questa. */
    
    	min	= -1;	
    	for (j = 0; j < (nodi - 1); j++) {
    		flag 	= 0;
    		testgt	= i < j ? 1 : 0;
                    /* La somma. */
    		sum 	= (testgt) 
    			? (l[i + 1][j + 1].dato + Dvec[j].dato)
    			: (l[j +1 ][i + 1].dato + Dvec[j].dato);
    		min	= minore(sum, min, &flag);
    
    		(testgt) 
    			? printf("se i < j %d\n", min)
    			: printf("se i > j sono nell'else %d\n", min);
    		(testgt) 
    			? (*c = j + 1, (flag) ? (*r = i + 1) : 0)
    			: (*c = i + 1, (flag) ? (*r = j + 1) : 0);
    	}	
    	return min;
    }
    
    /* Dovrebbe essere corretta. */	
    int minore(int a, int b, char *flag)
    {
    	if ((b != -1) && (a == 0 || !(a < b)))
    		return b;
    	*flag = 1;
    	return a;
    }
    spero di essere stato utile

    ___

  5. #5
    Nel for c'č la variabile "nodi" ma questa precedentemente mi sembra che non sia stata ne dichiarata ne gli sia stato assegnato un valore o mi sbaglio?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.