Ciao a tutti,
non ho molta esperienza con il linguaggio C e mi sto esercitando per sostenere un esame.
Il quesito posto è
Abbiamo un cubo
Ad ogni nodo sono assegnate 3 cifre binarie (x, y, z) tale che due nodi adiacenti differiscono per una sola cifra (la
dimensione cartesiana lungo la quale ci si muove).
Si chiede di progettare, un algoritmo che, dati due nodi in ingresso, calcoli il
percorso minimo tra i due nodi e stampi a video tutti i punti attraversati dal percorso. Esempio: nodo1 = 000, nodo2 = 101
Percorso = 000, 100, 101.
In allegato l'immagine del cubo
#include<stdio.h>
#include<conio.h>
int x, a, x2;
int y, b, y2;
int z, c, z2;
int scambi;
main(){
printf("Inserire primo nodo: \n");
scanf("%d%d%d",&x,&y,&z);
printf("Inserire secondo nodo: \n");
scanf("%d%d%d",&a,&b,&c);
scambi=0;
if(x==a) {
printf("Il punto non si è spostato lungo l'asse delle x\n");
x2=x;}
else{
printf("Il punto si è spostato lungo l'asse delle x\n");
x2=a;
scambi=scambi+1;
printf("%d\n",scambi);};
if(y==b){
printf("Il punto non si è spostato lungo l'asse delle y\n");
y2=y;}
else{
printf("Il punto si è spostato lungo l'asse delle y\n");
if(scambi==0){
y2=b;
scambi=scambi+1;};
printf("%d\n",scambi);
};
if(z==c){
printf("Il punto non si è spostato lungo l'asse delle z\n");
z2=z;}
else{
printf("Il punto si è spostato lungo l'asse delle z\n");
if(scambi==0){
z2=c;
scambi=scambi++;};
printf("%d\n",scambi);
};
printf("Nodo1:%d%d%d\n",x,y,z);
printf("Nodo2:%d%d%d\n",a,b,c);
printf("Percorso=%d%d%d,%d%d%d, %d%d%d \n",x,y,z,x2,y2,z2,a,b,c);
getch();
return 0;
}
L'idea del mio progetto (sbagliata) è quella di acquisire i dati poi controllare se le coordinate dei due nodi sono uguali in caso contrario li nuovo nodo avrà la coordinata discordante dell'ultimo nodo e incrementerà di 1 la variabile scambi. La variabile scambi servirebbe a controllare se sono stati effettuati scambi di coordinate dal primo nodo a quello intermedio e dovrebbe servire a non permettere ulteriori scambi (perchè ne serve solo uno),Il problema risiede nella variabile scambi ma non so come risolverlo? qualcuno può aiutarmi? magari suggerendomi anche un altro modo di agire?
Grazie
|