| JeKyLl a întrebat:

Bună TPU!
Vreau să fac în C++, cu ajutorul unei macroinstructiuni, un program care să determine cel mai scurt drum.
De exemplu, sa ziceam ca in tara sunt 2 magazine, unul la Cluj si unul la Alba. Daca eu sunt la Suceava, vreau sa determin care e cel mai scurt drum catre unul din magazine.Nu ma pricep asa de bine.Voi atasa mai jos secventa de cod. Vreau doar niste explicatii.
https://pastebin.com/275j5Sjf

6 răspunsuri:
| PainTech a răspuns:

In primul rand codul tau nu prea are mult sens. Lasam faptul ca se citeste un numar intreg si se compara cumva cu cuvantul "Suceava", ai si cateva probleme conceptuale :

- Numerele date fiecarui magazin probabil reprezinta distanta. Totusi nu ai cum sa memorezi distanta, e pur si simplu o pierdere de timp, atat pentru tine cat si pentru sarcacul calculator.

Sa zicem ca ai memorat distanta pana la fiecare judet. Daca eu, mare filozof incerc sa bag o localitate care nu e in lista nu o sa mai mearga programul. Astfel programul tau merge pe un "esantion" extrem de limitat.


As vedea doua metode de abordare :
1. Coordonate carteziene.
Pentu cele doua magazine memorezi longitudinea si latitudinea. Apoi pentru orice locatie bagi coordonatele formula e extrem de simpla :
distanta_cluj = sqrt(pow((x_locatie - x_cluj), 2) + pow((y_locatie - y_cluj), 2))
distanta_alba = sqrt(pow((x_locatie - x_alba), 2) + pow((y_locatie - y_alba), 2))

if (distanta_cluj < distanta_alba) cout

| PainTech a răspuns (pentru PainTech):

2. Grafuri.
Fiecare localitate reprezinta un nod, fiecare linie care uneste doua localitati o strada. Astfel sti numele fiecarei localitati si lungimea fiecarei sosele, poti sa calculezi cel mai scurt drum.

A fost un nene odata pe nume Dijkstra. Si fix la problema asta s-a gandit :
https://www.youtube.com/watch?v=gdmfOwyQlcI

| peperonies a răspuns:

Sunt destul de multe probleme in programul tau dar cum ai zis esti incepator.
Ce nu inteleg e cum vrei sa calculezi distanta intre 2 orase cu 1 singur numar. Ce inseamna in viziuna ta Cluj=200;
Alba=300;?

Poti sa asignezi valori variabilelor la declarare nu ai nevoie sa faci ifurile alea acolo.

| InvatamProgramare a răspuns:

Ca sa poti face asta ar trebui sa folosesti grafurile sa parcurgi toate variantele dintre magazine pe toate drumurile posibile si sa il alegi dintre ele "drumul optim" in acest caz drumul cel mai scurt.
Spor!