想請問~~路徑資料加總之後?? |
尚未結案
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
不好意思~~想請問RedSnow 大大 您之前有幫忙我寫過最短路徑的程式 我將之前的程式作了一些修改 因為我變成要計算車速~~~所以我就將之前的距離~~轉換成車速計算
void FindspeedPath(DList *pointer, String end_road, int index) //以下是虛擬路徑,時速 { // 如果不是路徑開頭則加上 "->" 符號以作分隔 if(roadPaths->Strings[index] != "") roadPaths->Strings[index] = roadPaths->Strings[index] "->"; // 加上找到的路名到路徑內 roadPaths->Strings[index] = roadPaths->Strings[index] pointer->roadname; if (pointer->an_speed != 0 ){ // 如果有分支道路 if (pointer->roadname != end_road){ // 若不是 ComboBox2 所設之終點路名 int k = roadPaths->Add(roadPaths->Strings[index]); // 增加路徑陣列 roadLen.push_back(roadLen[index]); // 增加距離加總陣列,並設初值為之前加總距離 roadLen[k] = roadLen[k] pointer->an_speed; // 加上本次分支道路的距離 FindPath(pointer->an_road, end_road, k); // 遞迴找尋這條分支道路 } } if (pointer->speed != 0) { // 如果後邊有連接道路 if (pointer->roadname != end_road) { // 若不是 ComboBox2 所設之終點路名 roadLen[index] = roadLen[index] pointer->speed; // 加上到下一條道路的距離 FindPath(pointer->road, end_road, index); // 遞迴找尋這條道路的下一條路 } } }在roadiobutton選擇方面~~多了一個 if(RadioButton3->Checked==true) { Form1 -> Memo1 -> Clear() ; roadPaths = new TStringList(); int k = roadPaths->Add(""); // 新增第一條路徑 roadLen.push_back(0); // FindspeedPath(find_head, ComboBox2->Text, k); // 開始找尋路徑 Memo1->Clear(); int shortRoad = 9999; // 比對最短路徑之用,先隨意設一個最大值 int shortIndex = 0; // 比對後,存放最短路徑的索引值 int PathNo = 0; for(int i=0; i我都將之前的距離road_numeral 、an_road_numeral都換成 speed、an_speed了 但計算出來卻會錯誤~~~ 比如說~~成功路到自由路~~是0.4375 自由路到博愛路是1.12 我選隔一條路~~算出來數值都對 但如果選~~成功路到博愛路~~~卻會變成45.4375 >"<不知道為什麼會變成這樣子~~ 能請RedSnow 大大或是各位高手大大~~解答一下嗎? |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
liyanzi 妳好: 請確認一下妳上傳的檔案內容,或說明那些檔案才是正確的?因為檔案內有三層目錄,第一層名為 abc,有 project1.bpr 與 project1..cpp 與執行檔,日期較新但是卻沒有 Unit1.cpp 與 Unit1.h,第二層目錄名為 new,內有三個 .mdb 檔案,第三層目錄內有完整的各個檔案,但是日期卻是 8 月 11 日的。 另外在打包檔案時,請不要將 .tds 等無關檔案壓縮進去,那些檔案會隨著每次的編譯而重新產生,是沒有必要上傳的。 7 天天敲鍵盤 v 時時按滑鼠 8
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
引言: liyanzi 妳好: 請確認一下妳上傳的檔案內容,或說明那些檔案才是正確的?因為檔案內有三層目錄,第一層名為 abc,有 project1.bpr 與 project1..cpp 與執行檔,日期較新但是卻沒有 Unit1.cpp 與 Unit1.h,第二層目錄名為 new,內有三個 .mdb 檔案,第三層目錄內有完整的各個檔案,但是日期卻是 8 月 11 日的。 另外在打包檔案時,請不要將 .tds 等無關檔案壓縮進去,那些檔案會隨著每次的編譯而重新產生,是沒有必要上傳的。 7 天天敲鍵盤 v 時時按滑鼠 8真的非常不好意思~~沒有事先整理過>"< 我是將整個程式~~直接解壓縮成~~一個abc的檔 解壓縮後~~有一個new的檔~~new裡面是資料庫access的資料 其中~~db2.mdb就是現所連結的資料庫,其餘可先不理會。。 而new的子目錄有各個完整檔案~~可不理會。 而關於沒有Unit1.cpp 與 Unit1.h的檔~~ 在第二層目錄是Unit1.~cpp 與 Unit1.~h 真的是非常抱歉~~ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
引言: liyanzi 妳好: 我在妳上傳的檔案中找不到含有 FindspeedPath 或是 RadioButton3 字樣的 .cpp 檔,請將妳的壓縮檔整理一下,將妳現在改寫後的程式壓縮進去,將無關的檔案剔除掉 (例如 .tds 檔),然後再重新上傳。 7 天天敲鍵盤 v 時時按滑鼠 8Redsnow大大~~ =.="真是不好意思~~麻煩你了 我把檔案重新整理了一下~~也壓縮了~~ 關於那些用不到的檔(例:.tds),我另存檔時~~只要一執行,就會出現 我怕刪掉後~~就不能執行了~~>"< 所以我還是附上了。。 另外~~資料庫的資料~~db2.mdb我也附在同一目錄下 不過~~就算執行時~~也不用在另外連結資料庫了吧!! 只是附上~~會比較清楚~~ 我有另外在解壓縮看看~~裡面是有.cpp檔的喔~~ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
引言: liyanzi 妳好: 妳這次上傳的檔案我檢查過了,檔案應該是齊全了,但是我仍然無法正確執行妳的程式,妳的程式中有使用到一個 TADOTable 元件,不知道是不是版本的問題?我使用的 BCB4 找不到有這個元件,因此無法在程式中開啟妳的資料庫檔案。 如果路名資料並不是很多的話,看看是否可以將資料庫檔案的部份改成使用文字檔來代替,否則我在妳這篇問題上恐怕是很難幫上忙了。 7 天天敲鍵盤 v 時時按滑鼠 8抱歉~~那是否能請您將程式中~~FormCreate裡路徑資料的部份 將Tabe->Close(); Table->Open(); 這兩行刪掉 而將程式裡~~連成資料庫的語法 改成以下的程式 for ( int i = 0; i < 10; i ) delete_road[ i ] = new Save_roadname ; head = new DList ;//先將其設為NULL find_head = new DList ; for ( int i = 0; i < 10; i ) temp_road[ i ] = new DList ; all_num = 0 ; DList *pointer, *temp[10] ; for ( int i = 0; i < 10; i ) temp[ i ] = new DList ; head -> number = 1 ; head -> roadname = "成功路" ; ComboBox1 -> Items -> Add( head -> roadname ) ; head -> road = temp[ 0 ] ; // 成功 -> 自由 head -> road_numeral = 35 ; head -> an_road = NULL ; // 無 head -> an_road_numeral = 0 ; head -> speed = 100; head -> an_speed = 0; temp[ 0 ] -> number = 2 ; temp[ 0 ] -> roadname = "自由路" ; ComboBox1 -> Items -> Add( temp[ 0 ] -> roadname ) ; temp[ 0 ] -> road = temp[ 1 ] ; // 自由 -> 博愛 temp[ 0 ] -> road_numeral = 45 ; temp[ 0 ] -> an_road = temp[ 2 ] ; // 自由 -> 中正 temp[ 0 ] -> an_road_numeral = 30 ; temp[ 0 ] -> speed = 40 ; temp[ 0 ] -> an_speed = 80 ; temp[ 1 ] -> number = 3 ; temp[ 1 ] -> roadname = "博愛路" ; ComboBox1 -> Items -> Add( temp[ 1 ] -> roadname ) ; temp[ 1 ] -> road = temp[ 3 ] ; // 博愛 -> 仁愛 temp[ 1 ] -> road_numeral = 25 ; temp[ 1 ] -> an_road = NULL ; // 無 temp[ 1 ] -> an_road_numeral = 0 ; temp[ 1 ] -> speed = 50 ; temp[ 1 ] -> an_speed = 0 ; temp[ 2 ] -> number = 4 ; temp[ 2 ] -> roadname = "中正路" ; ComboBox1 -> Items -> Add( temp[ 2 ] -> roadname ) ; temp[ 2 ] -> road = temp[ 3 ]; // 中正 -> 仁愛 temp[ 2 ] -> road_numeral = 45 ; temp[ 2 ] -> an_road = temp[ 4 ]; // 中正 -> 中山 temp[ 2 ] -> an_road_numeral = 130 ; temp[ 2 ] -> speed = 100 ; temp[ 2 ] -> an_speed = 60 ; temp[ 3 ] -> number = 5 ; temp[ 3 ] -> roadname = "仁愛路" ; ComboBox1 -> Items -> Add( temp[ 3 ] -> roadname ) ; temp[ 3 ] -> road = temp[ 4 ] ; // 仁愛 -> 中山 temp[ 3 ] -> road_numeral = 100 ; temp[ 3 ] -> an_road = NULL ; temp[ 3 ] -> an_road_numeral = 0; temp[ 3 ] -> speed = 70 ; temp[ 3 ] -> an_speed = 0; temp[ 4 ] -> number = 6 ; temp[ 4 ] -> roadname = "中山路" ; ComboBox1 -> Items -> Add( temp[ 4 ] -> roadname ) ; temp[ 4 ] -> road = NULL;//無 temp[ 4 ] -> road_numeral = 0 temp[ 4 ] -> an_road = NULL ; // 無 temp[ 4 ] -> an_road_numeral = 0 ; temp[ 4 ] -> speed = 0 ; temp[ 4 ] -> an_speed = 0 ;在speed方面。我將值改成與資料庫裡的值不同 但還是可計算。。改成整數~~您也比較好判斷錯誤~~ 不好意思~~真的非常的麻煩您~~~ 我會多加注意的~~~^^ 發表人 - liyanzi 於 2005/09/15 13:26:05 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
引言: liyanzi 妳好: 我已經將程式修改,現在可以正常編譯與執行了,可否再麻煩妳一下,請妳依據妳這次提供的數字 (為了便於測試而更改的整數資料) 做一下測試,然後將妳的操作過程簡述一下,並且舉數個例子,說明 "起點" 與 "目的地" 各別是設定為那個道路時,何者是傳回錯誤答案 (說明錯誤答案的數字),並說明正確數字應該是甚麼?這樣子可以提供給我當作找問題的參考,以減少摸索的時間。 7 天天敲鍵盤 v 時時按滑鼠 8您好: 如起點:成功路 終點:自由路 選擇radiobutton3 答案為100 自由路 博愛路 40 而如果成功路到博愛路的話 應為140 但答案為145 145=100 45 45應該是road_numeral 而非speed值40 似乎測試只隔一條路的都對 但只要兩條以上的路~~~數值都加上原本的距離了 但findspeedpath 我都已將程式改成speed或an_speed計算了 不知道為何還是會錯?? 感謝你耐心的解答^^ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
引言: liyanzi 妳好: 和上次一樣,我的雙眼都看花了....,不過後來總算看出點名堂了,妳大概是在複製、修改的過程中漏了修改一個地方,妳應該將 <>> 函式裡邊呼叫 <>> 函式的地方 (共兩處),都修改成 <>> (僅需修改呼叫的函式名稱即可,呼叫的參數可以不用修改)。 我找到這個問題之後,依據妳提供的資料測試了一下,結果都是 > <>> 天天敲鍵盤 <>> 時時按滑鼠 <>> > >>< face="Verdana, Arial, Helvetica"> 真是對不起阿~~竟然沒注意到這小細節~~~ 感謝大大的細心呢!~~~=.=" |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |