PDA

View Full Version : correzione programma in C


mikael_c
19-07-2013, 09:40
il codice viene eseguito perņ non stampa nessun valore, dove č l'errore??
secondo me quel return va cambiato oppure manca qualche inizializzazione di qualche variabile.puoi dare una controllata???
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

/*
VARIABILI GLOBALI:
n
nChr = numero di permutazioni alcolate (inizialmente 0)
Chr = permutazione
Chr1 = permutazione inversa (Chr1[i] = n equivale ad elemento di permutazione non definito
(se Chr[i]=j, allora Chr1[i]=j)
Succ = risposta della procedura genTPerm (inizialmente 1)
*/

int Chr[100]; /* vettore soluzione (permutazione) */
int Chr1[100]; /* soluzione inversa */
int nChr=0; /* numero soluzioni costruite dalla procedura esaustiva */
int Succ=1; /* flag che indica il successo della procedura esaustiva */
int n; /* numero vertici digrafi */

/* procedura di inizializzazione dei vettori soluzione (Chr[] e Chr1[]) */

void initChr()
{
int i=0;

for(i=0;i<n;i++)
{Chr[i]=n;
Chr1[i]=n;
}
}

/* procedura di stampa di Chr[] */

void stampaVett()
{
int i=0;

for(i=0;i<n;i++)
printf ("%d ",Chr[i]);
printf("\n");
}

/* procedura esaustiva di calcolo soluzioni */

void genTPerm(int k)
{
int i=0;

if(k>(n-1))
{
stampaVett();

/* verifica se la soluzione trovata č un ciclo: se si succ=1 e termina genTPerm */

nChr++;
if(nChr>n)
{
Succ=0;
return ;
}
}
else
for(i=0;i<n;i++)
{if(Chr1[i]==n)
{Chr[k]=i;
Chr1[i]=k;
genTPerm(k+1);
Chr1[i]=n;
Chr[k]=n;
}
}
}

/* programma principale */

int main(void)
{

int i=0, k=0;

/* inizializza variabili, vettori e strutture dati */

nChr = 0;
initChr(); /* procedura che inizializza Chr e Chr1 */
genTPerm(6); /* procedura esaustiva per il calcolo di soluzioni */

}

mikael_c
19-07-2013, 10:31
avevo dimenticato di inizializzare n, perņ per n=5 il programma mi stampa 5 5 5 5 5, non mi sembra normale

mikael_c
23-07-2013, 09:59
come faccio a far stampare la permutazione correttamente??attendo un vostro aiuto.