zales Opublikowano 20 Marca 2008 Zgłoś Opublikowano 20 Marca 2008 (edytowane) Mam problem z napisaniem pewnego algorytmu. Stworzyłem program który pobiera z pliku txt dane do dwóch tablic, wygląda on tak: #include <stdio.h>#include <stdlib.h>#include <iostream.h>main(){FILE *plik;int i_tab;int i,s=0;i_tab=0;char punkt_pierwszy[100][2], punkt1, punkt2, punkt[20];int odleglosc[100], droga[20];plik = fopen("dane.txt","r");while (fscanf(plik, "%c%c%d%20",&punkt_pierwszy[i_tab][0],&punkt_pierwszy[i_tab][1],&odleglosc[i_tab]) !=EOF)i_tab++;fclose(plik);for (i=0; i<i_tab; i++)printf("%c - %c - %d\n", punkt_pierwszy[i][0], punkt_pierwszy[i][1], odleglosc[i] );printf("\nPodaj punnkt poczatkowy: ");scanf("%c", &punkt1);printf("\nPodaj punkt koncowy: ");cin >> punkt2;//scanf("%c", &punkt2);}Plik tekstowy wyglada tak: AB5 BC6 BD10 CD4 AD16 DB8 BA12 CA13 W pierwszej tablicy zapisywane są w dwóch kolumnach litery, a w drugiej liczby. Teraz chce stworzyć tablicę, w której będą zapisane wszystkie odległości miedzy tymi punktami, np. odległośc midzy A i B wynosi 5, a odległość między B i C wynosi 6. Zatem odległość między A i C wynosi 11 (nie jest to to samo co między CA) itd, po prostu w tablicy musza byc zawarte wszystkie odległości miedzy wszystkimi punktami (o ile istnieją takie powiązania). Jaki napisac do tego kod? Edytowane 20 Marca 2008 przez zales Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
KrOOliK89 Opublikowano 20 Marca 2008 Zgłoś Opublikowano 20 Marca 2008 Nie wiem jak sprawa wygląda w cpp, ale nie lepiej zrobić strukturę i zapisywać ją do pliku? coś takiego: { char odcinek1; char odcinek2; int odleglosc;} Powinno być wygodniej, ale mogę się mylić! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
zales Opublikowano 21 Marca 2008 Zgłoś Opublikowano 21 Marca 2008 To akurat nie robi chyba większej różnicy, łatwiej jest chyba wrzucić od razu do tablicy niż zapisywać do pliku, a potem z niego wyciągać. Najwiekszym problemem jest to jak zrobić aby program liczył te odległości? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
KrOOliK89 Opublikowano 21 Marca 2008 Zgłoś Opublikowano 21 Marca 2008 Ok wybacz, nie doczytałem. Ale muszę Ci powiedzieć, że nie rozumiem za bardzo pytania. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
zales Opublikowano 21 Marca 2008 Zgłoś Opublikowano 21 Marca 2008 W pliku tekstowym zapisane są odległości od poszczególnych punktów. Widać np że najktótsza droga z punktu A do C wynosi 11 i biegnie ona przez punkt B. Tak samo np najkrótsza droga z punktu A do D wynosi 15 i biegnie przez punkt B. Ta sama droga też będzie przez punkty B i C. Wszystkie te odleglosci pomiedzy punktami zapisane w tym pliku tekstowym. Progam ma właśnie obliczyć te odległości i zapisać do tablicy. To jest właśnie dla mnie najwiekszy problem bo nie wiem jak to zorbic. Potem użyje jakiegoś sortowania w tablicy i bede wyszukiwał najkrótszych dróg do podanych przez użytkownika punktów. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
KrOOliK89 Opublikowano 21 Marca 2008 Zgłoś Opublikowano 21 Marca 2008 Raczej odpadam. Ale zadam jeszcze jedno pytanie. Ilość punktów jest stała? Czy dynamiczna? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
zales Opublikowano 21 Marca 2008 Zgłoś Opublikowano 21 Marca 2008 Ilość punktów jest dynamiczna, z tym że nie może być ich mniej niż 5 i więcej niż 10. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ragnor Opublikowano 22 Marca 2008 Zgłoś Opublikowano 22 Marca 2008 W czym dokładnie masz problem? W algorytmie obliczania tych odległości czy też w zapisaniu gotowych już wyników do jakieś sensownej struORT: ORT: ORT: ktury? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
zales Opublikowano 22 Marca 2008 Zgłoś Opublikowano 22 Marca 2008 Dokładnie w algorytmie obliczania tych odległości, po części też w zapisywaniu no bo jest to powiązane ze sobą. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ragnor Opublikowano 24 Marca 2008 Zgłoś Opublikowano 24 Marca 2008 Jeśli chodzi o ten problem nie ma sensu po raz kolejny wymyślać koła. Rozwiązaniem Twoich problemów będzie algorytm Floyda-Warshall lub algorytm Johnsona, przy czym ten pierwszy zdaje się być prostszy w implementacji, jednak dla grafów rzadkich będzie wolniejszy niż algorytm Johnsona. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...