廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3151 個閱讀者
 
<< 上頁  1   2  >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

x.size <---在這段程式的意思...應該是這個x.ptr大小
x.ptr   <---可以說是陣列...不過他是宣告指位器(指位器是我的講法...在書上..應該是講指標)

再main有一段如下...

vector x;   <----建立以vector結構體建立一ㄍx的結構體
x.ptr=NULL; <---指位器歸零 (因為NULL=0)
x.size=0;     <---將x.size歸零 (也可以寫成x.size=NULL)

vec_creat(x,10);   <---你就是卡在這裡....
這ㄍvec_creat函式原型是這樣...--->void vec_creat(vector& v, int s);
基本上....x.size要存入int s
因為程式跑到以下這段...
for(int i=0; i<x.size;i++)
  vec_set(x,i,i*i);

就要跑回圈了....
而你x.size=0....當然到了for這一段就會跳到vec_print執行裡面的cout來輸出....
但是...你for迴圈是要設定x裡面的值阿....
所以...你在執行到vec_creat就要設定x.size了...
到了for就會以x.size來決定...迴圈要跑幾次....
你的x.size=0....當然回圈不會有動作摟...
而這ㄍ迴圈裡面的程式就是來設定資料的ㄚ
你裡面都沒有資料....當然就沒東西可以輸出摟...

這樣說明...了解ㄇ??

此文章被評分,最近評分記錄
財富:30 (by codeboy) | 理由: 說明的很清楚喔~^^



獻花 x0 回到頂端 [10 樓] From:台灣中華電信 | Posted:2005-05-11 13:49 |
jasonh920 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x3 鮮花 x50
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

[quote]下面是引用codeboy於2005-05-11 11:25發表的 :

這是因為程式之前宣告了一個結構
複製程式
struct vector { //定義結構
  int* ptr;
.......[/quote]
=================================================
複製程式
 vector x;
 x.ptr=NULL;
 x.size=0;
 
 vec_creat(x,10);
 for(int i=0; i<x.size;i++)   //x.size不是已經等於零ㄌ,那為什麼還要這樣設定ㄚ.
   vec_set(x,i,i*i);

我有去作單步執行的動作,但我ㄉ程式卻都不會進入vec_sec(x,i,i*i)這個函式...
各位大大幫我解釋一下好不好...
拜託拜託.. 表情 表情


獻花 x0 回到頂端 [11 樓] From:台灣中華電信 | Posted:2005-05-11 14:03 |
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用jasonh920於2005-05-11 14:03發表的 :

[/code]=================================================
[code] vector x;
.......

你在六樓貼的程式碼...

我用組譯器去Run...
在vec_creat執行之後....x.size是0....

我不清楚你怎ㄇ弄的....反正在vec_creat函式裡面...要多加一行v.size=s
到了for迴圈才會動作....

如果我沒在vec_creat函式裡面加一行v.size=s
那for迴圈不會動作....

看來你的c要多用功一點喔...

我有去作單步執行的動作,但我ㄉ程式卻都不會進入vec_sec(x,i,i*i)這個函式...
就是因為你的x.size是0...for才不會動作..


[ 此文章被0951020223在2005-05-11 15:03重新編輯 ]


獻花 x0 回到頂端 [12 樓] From:台灣中華電信 | Posted:2005-05-11 14:57 |
jasonh920 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x3 鮮花 x50
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用0951020223於2005-05-11 14:57發表的 :

就是因為你的x.size是0...for才不會動作..


複製程式
#include <cstdlib>
#include <iostream>

using namespace std;

struct vector { //定義結構
  int* ptr;
  int  size;
};

//以下為你必須實現功能的函數
void vec_creat(vector& v, int s); //建立vector
void vec_resize(vector& v, int s); //重新調整vector 大小
int vec_get(vector& v,int p);//取出數值
void vec_set(vector& v, int p, int val); //設定數值(指定array位置作數值設定)
void vec_clean(vector& v); //清除vector


//以下為已完成功能的函數(你只需使用下列函數,不要對下列函數修改)
void vec_set(vector& v,int val); //設定數值(對全部array作設定)
void vec_print(vector& v); //列印

//主程式

int main(int argc, char *argv[])
{
 vector x;
 x.ptr=NULL;
 x.size=0;
 
 vec_creat(x,10);
 int i=0;
 for(int i=0; i<x.size;i++)
   vec_set(x,i,i*i);
 
 vec_print(x);
 
 vec_set(x,99);
 vec_print(x);
 
 system("PAUSE");
 return 0;
} 

//===============
void vec_print(vector& v){
   for(int i=0; i<v.size;i++)
     cout<<vec_get(v,i)<<" ";
   cout<<endl;
}

void vec_set(vector& v,int val) {
   for (int i=0; i<v.size;i++)
     v.ptr[i]=val;
}
//=============================
void vec_creat(vector& v,int s){
        v.ptr = new int[s];
        v.size = s;
        memset(v.ptr, 0, sizeof(int)*v.size); 
}

void vec_resize(vector& v,int s){
     int s1,v1;
      v.ptr =new int[s];
     for (int i=0;i<s;i++)
     v.ptr[s1]=v.ptr[s];
      delete [] v.ptr;
       v.ptr[s];  
}

int vec_get(vector& v,int p){
     return v.ptr[p];
}

void vec_set(vector& v,int p,int val){ //指定位置設定數值                       
   v.ptr[p]=val;     
}

void vec_clean(vector& v){
     if (v.ptr=NULL)
     delete [] v.ptr;
     v.ptr=NULL;
}      



這是我剛剛跑出來的答案,雖然是跟助教的答案一樣.
但我總覺得要ㄉ好像並不是這樣子內... 表情
好像還要有些條件. 表情

其實說老實話,我真ㄉ一點都看不懂我自己在寫什麼.
尤其是 ?.ptr   ?.size
轉來轉去,實在也是不知道該如何ㄉ使用.

真ㄉ很感謝各位大大ㄉ幫忙...
尤其是0951020223,codeboy和唐老鴨.
這幾位大大的大力協助.....
謝謝您們囉!!


[ 此文章被jasonh920在2005-05-11 15:35重新編輯 ]

此文章被評分,最近評分記錄
財富:10 (by codeboy) | 理由: 有問題再繼續提沒關係...這裡歡迎你來發問喔~^^


獻花 x0 回到頂端 [13 樓] From:台灣中華電信 | Posted:2005-05-11 15:30 |

<< 上頁  1   2  >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.055330 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言