Torna indietro   Hardware Upgrade Forum > Mondo Smartphone > Smartphone > Altri produttori (HTC, Acer, BlackBerry, ecc)

Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2013, 17:08   #1
mikael_c
Member
 
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
Modifica codice in C con lista di adiacenza

Devo modificare il codice sottostante in modo che il vettore permutazione nella generazione di tutte le possibili possibilità sceglie solo i vertici adiacenti.Il grafo deve essere rappresentato con lista di adiacenza.
Codice della permutazione
Codice:
/*
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=3;	       /* 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 */


/* metto 0 nella prima posizione e generola permutazione su 1 2,
poi metto 1 nella prima posizione e genero la permutazione su 0 2, 
ed infine metto 2 nella prima posizione e genero la permutazione su 0 1 , */


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(0); /* procedura esaustiva per il calcolo di soluzioni */
 
  }
Questo è il codice di un grafo con lista di adiacenza viene eseguito però non so se va bene:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 100

struct nodo {
  int info;
  struct nodo *next;
};


/*
 *	Acquisisce in input una sequenza di n interi e la memorizza
 *	in una lista; restituisce l'indirizzo del primo elemento della lista.
 */

struct nodo *leggiLista(void) {
  struct nodo *p, *primo = NULL;
  int i, n;
  printf("Numero di elementi: ");
  scanf("%d", &n);
  printf("Elementi della lista: ");
  for (i=0; i<n; i++) {
    p = malloc(sizeof(struct nodo));
    scanf("%d", &p->info);
    p->next = primo;
    primo = p;
  }
  return(primo);
}

/*
 *	Acquisice in input le n liste di adiacenza dei vertici del grafo G.
 */

int leggiGrafo(struct nodo *V[]) {
  int i, n;
  printf("\nNumero di vertici del grafo: ");
  scanf("%d", &n);
  for (i=0; i<n; i++) {
    printf("\nLista di adiacenza del vertice %d:\n", i);
    V[i] = leggiLista();
  }
  return(n);
}

/*
 *	Stampa gli elementi di una lista.
 */

void stampaLista(struct nodo *p) {
  while (p != NULL) {
    printf("%d --> ", p->info);
    p = p->next;
  }
  printf("NULL\n");
  return;
}

/*
 *	Stampa le liste di adiacenza dei vertici del grafo G.
 */

void stampaGrafo(struct nodo *V[], int n) {
  int i;
  printf("Liste di adiacenza del grafo:\n");
  for (i=0; i<n; i++) {
    printf("%2d: ", i);
    stampaLista(V[i]);
  }
  return;
}

/*
 *	Genera un array di numeri casuali minori di una soglia.
 */

int generaVettore(int S[], int soglia) {
  int i, n;
  printf("\nNumero di elementi della sequenza casuale: ");
  scanf("%d", &n);
  srand((unsigned)time(NULL));
  for (i=0; i<n; i++)
    S[i] = rand() % soglia;
  return(n);
}

/*
 *	Stampa gli elementi di un vettore di numeri interi.
 */

void stampaVettore(int S[], int n) {
  int i;
  printf("\n");
  for (i=0; i<n; i++)
    printf("%d ", S[i]);
  printf("\n");
  return;
}

/*
 *	Restituisce "vero" (1) se x e y sono adiacenti in G, restituisce
 *	"falso" (0) altrimenti.
 */

int adiacenti(struct nodo *V[], int x, int y) {
  int risp;
  struct nodo *p;
  p = V[x];
  while (p != NULL && p->info != y)
    p = p->next;
  if (p != NULL) 
    risp = 1;
  else
    risp = 0;
  return(risp);
}

/*
 *	Verifica se gli elementi di S rappresentano un cammino sul grafo G.
 *	Restituisce 1 (vero) se S e' un cammino, 0 (falso) altrimenti.
 */

int verificaCammino(int S[], int k, struct nodo *V[], int n) {
  int i, risp=1;
  for (i=0; i<k-1 && risp==1; i++)
    if (!adiacenti(V, S[i], S[i+1]))
      risp = 0;
  return(risp);
}

/*
 *	Funzione principale.
 */

int main(void) {
  struct nodo *V[MAX];
  int n, k, S[MAX];
  n = leggiGrafo(V);
  k = generaVettore(S, n);
  stampaGrafo(V, n);
  stampaVettore(S, k);
  if (verificaCammino(S, k, V, n))
    printf("La sequenza e' un cammino su G\n");
  else
    printf("La sequenza NON e' un cammino su G\n");
  return(0);
}
mikael_c è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
MOUSE: P.I. For Hire: sembra un cartone ...
Francia all'attacco: X sotto indagine, p...
Vodafone abilita il Wi-Fi Calling in Ita...
GTA VI: confermata l'uscita a novembre, ...
Il robot umanoide G1 di Unitree cammina ...
Gli americani comprano quasi solo iPhone...
Xcode 26.3 trasforma gli assistenti AI i...
Anche la Spagna è pronta a vietar...
Loongson 3B6000: la CPU cinese scalfisce...
Hard disk ancora protagonisti: Western D...
Robot grandi quanto un granello di sale:...
Top 10 bestseller Amazon: febbraio strav...
Scendono ancora i prezzi Amazfit su Amaz...
Xbox Game Pass: le novità del cat...
Epic Games Store cambia volto: nuovo lau...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v