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

    [C] Un codice sui grafi

    Salve a tutti spero di trovare un aiuto : )
    Sto svolgendo questo problema (con poco successo)

    Sia una matrice M:n x n rappresenta le strade che connettono n paesi. In particolare, M[i,j] vale 1 se esiste una strada diretta dal paese i al paese j, 0 altrimenti. Si assume che:
    - M[i,i] = 1 per ogni i = 0,..,n-1.
    - M[i,j] = M[j,i] per ogni i,j = 0,..,n-1

    (questa credo sia una matrice di adiacenza di un grafo, ma non ne sono certo poiché teoria dei grafi non ne abbiamo fatta )

    Scrivere un programma che legga da tastiera una matrice M di dimensioni 6x6, due interi i e j ed un valore intero max (fin qui tutto ovvio) e dica se esiste un percorso dal paese i al paese j di lunghezza al più max.
    Il programma dovrà stampare 1 se il percorso esiste, 0 altrimenti.

    Ma la NOTA DOLENTE è questa:
    La funzione di verifica dell'esistenza del percorso deve essere RICORSIVA, funzioni iterative saranno considerate errate.
    Please help me!
    Fino ad ora ho scritto il codice seguente, ma non funziona con ogni input.

    codice:
    #include <stdlib.h>
    #include <stdio.h>
    #define SIZE 6
    
    int Cammino(int M[SIZE][SIZE],int i, int j, int k)
    {
    	if((M[i][j]==1)&&(k!=0))
    		return 1;
    	else if(k==0)
    		return 0;
    	else {
    		int adj=0;
    		int flag=0;
    		for(adj=0;adj<SIZE;adj++)
    		{
    			if((M[i][adj]==1)&&(adj!=i)&&(flag==0))
    				return Cammino(M,adj,j,k-1);
    			else return 1;
    		}
    	}
    }
    
    int main()
    {
    	int i, M[SIZE][SIZE];
    	for (i=0; i<SIZE; i++) {
    		
    		scanf("%d %d %d %d %d %d",&(M[i][0]),&(M[i][1]),&(M[i][2]),&(M[i][3]),&(M[i][4]),&(M[i][5]));}
    
    	int inizio;
    	printf("\nInizio= ");
    	scanf("%d",&inizio);
    	int fine;
    	printf("\nFine= ");
    	scanf("%d",&fine);
    	int lmax;
    	printf("\nLunghezza= ");
    	scanf("%d",&lmax);
    	int esito=Cammino(M,inizio,fine,lmax);
    	printf("\n\n\n %d\n\n\n",esito);
        return 0;
    }
    Vi prego è urgente

  2. #2
    Un piccolo aiuto please!
    URGENTE!

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.