Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C]Piano cartesiano

  1. #1

    [C]Piano cartesiano

    Ciao, ho bisogno di un aiuto dato che non sono molto pratica in C. Devo inserire in un piano cartesiano il punto A(x1,y1) unito al punto B(x2,y2). E lavorare quindi su qst segmenti implementando diverse operazioni. Ho pensato di creare un grafo xè una delle successive operazioni è il calcolo dei cammini minimi partendo da un punto arrivando ad un altro. Ma ogni nodo è caratterizzato di solito da un id mentre ora ho le due coordinate cm faccio quando inserisco un arco a dire che voglio collegare il punto A al punto B entrambi d coordinate x,y?o avete qualche altra soluzione che non sia un grafo?
    Spero che abbiate capito il mio problema. Grazie

  2. #2
    il codice che ho fatto è il seguente:


    #include <stdio.h>
    #include <stdlib.h>

    /* VARIABILI GLOBALI */
    FILE *fp;

    /* STRUTTURA NODO DELLA LISTA DI ADIACENZA */
    typedef struct node {
    int x,y;
    struct node *next; /*PUNTATORE AL VERTICE SUCCESSIVO*/
    };


    /* STRUTTURA ASSOCITA AD OGNI GRAFO */
    struct graph {
    int V; /* NUMERO NODI */
    int E; /* NUMERO ARCHI */
    struct node **A; /* ARRAY DI LISTE DI ADIACENZA */
    };


    /* CREAZIONE GRAFO
    Richiede il numero di vertici e il numero di archi del grafo da creare. Alloca spazio per ogni lista di adiacenza inizialmente vuota */
    struct graph *createGraph( int nv, int ne){
    struct graph *g = malloc(sizeof(struct graph));
    if(!g)
    { pritf("ERRORE");}
    g->E = ne;
    g->V = nv;
    if(!(g->A = calloc(nv, sizeof(struct node*))))
    { pritf("ERRORE");}
    return g;
    }


    /* INSERIMENTO ARCHI NELLE LISTE DI ADIACENZA
    Legge da un file gli archi. Nel file ogni riga contiene un unico arco specificato dalle coordinate del primo nodo(x1,y1)
    che si collega al secondo nodo(x2,y2) formando il segmento */
    void addArco() {
    int i, x1,y1,x2,y2;
    for(i=0;i<g->E;i++) {
    fscanf(fp,"%d %d %d %d \n",&x1,&y1,&x2,&y2);

    g->A[x1] = insertNode()
    }
    /* qui mi blocco perchè ogni nodo è caratterizzato da due interi e non da uno solo come faccio ad andare avanti? cosa ho sbagliato??? */
    }

    struct node *insertNode(struct node *p, int k)
    {
    struct node * q = malloc (sizeof(struct node));
    if(!q)
    { printf("ERRORE") }
    q->V = k;
    q->next = p;
    return q;
    }


    mi blocco quando devo fare la funzione addArco xè l'id del nodo deve essere uno solo e non due. Avete da proprormi delle soluzioni?

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.