Re: [討論] 運用C語言撰寫前星法(forward star)程式

作者: yyan1218 (今天下雨了嗎)   2014-12-08 22:30:37
※ 引述《dbox90 (微風)》之銘言:
: 如題,小弟利用C語言撰寫forward star(前星法)問題
: 因老闆要求需有兩種的寫法,小弟是用for迴圈寫成
: 不知是否能運用while 或 do 迴圈撰寫,懇請各位大大,給予指導
: 以下使小弟所撰寫的程式碼
^^^^
: http://codepad.org/3P5NzZnF
: 題目如下
: 1 2 6
: 1 4 3
: 2 3 2
: 2 6 1
: 2 5 2
: 3 6 3
: 4 5 1
: 5 2 3
: 5 6 5
: ===================
: for((A)前置處理;(B)條件式;(C)迴圈變動)
: {
: .
: (D)內容
: .
: }
: ===================
: 替換成while
:
: (A)
: while((B))
: {
: (D)
: (C)
: }
:
: ===================
: 替換成 do...while
:
: (A)
: do
: {
: if((B)) break;\\這行是要避免do..while 先斬後奏的問題
: \\有可能在不符合條件式做 造成一些問題
: (D)
: (C)
: }while((B));
這篇是小弟發文 站內信卻是"小女子"?
鄉民的性別真是難以捉摸
你的Code有三個部份的for迴圈
重點是只有單層 要替換一點都不難 =ˇ=
就女子心幫幫你
=================================
for(i=1; i<allink; i++)
{ scanf("%d %d %d", &k[i], &a[i], &c[i]);
}
for(i=1; i<allink; i++)
{
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
}
for(i=1; i<allink; i++)
{ printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
}
==============================================
while版本
i=1;
while(i<allink)
{ scanf("%d %d %d", &k[i], &a[i], &c[i]);
i++;
}
i=1;
while(i<allink)
{
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
i++;
}
i=1;
while(i<allink)
{ printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
i++;
}
=======================================
do....while 版本
i=1;
do
{
if(i<allink) break;
scanf("%d %d %d", &k[i], &a[i], &c[i]);
i++;
}while(i<allink);
i=1;
do
{
if(i<allink) break;
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
i++;
}while(i<allink);
i=1;
do
{
if(i<allink) break;
printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
i++;
}while(i<allink);
========================
自己對照一下,不小心手打錯就請見諒了(挖鼻)。

Links booklink

Contact Us: admin [ a t ] ucptt.com