顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


主題 - asdf

頁: [1] 2 3
1
我不知道這個問題要貼在哪裡

一個機器的信號
使用數位信號比較可靠
為什麼

我的想法是:
使用數位(離散)信號
電路比較容易偵測到信號(通常是電壓)的變化

我這學期修了一門"交換電路與邏輯設計"
我問老師
他說:
數位信號可以加檢查碼
容易容錯
而這個問題已經是很深的問題了
以後才會學到

請問各位:
什麼時候才會學到呢?

2
Network 討論版 / [問題] Broadband 與頻率多工
« 於: 2005-09-19 14:23 »
http://www.study-area.org/network/network_material.htm

關於 baseband 指的是基頻訊號,像是我們看的電視的 AV 訊號一樣,同一時間就只有一組訊號在傳輸﹔那相對於基頻訊號的就是射頻訊號,像是 CATV 就是運用射頻訊號進行傳輸,同時以不同的載波,傳輸不同的訊號。對於 broadband 是相對於窄頻,這兩個字一個指的是訊號的調變方式,一個是在對頻寬的稱呼,兩個不能相比較。上圖是以多工方式來說明:一個是時間為基底的多工(TDM, Time Division Multiplexing),一個是以頻率為基底的多工方(Frequency Division Multiplexing)。一般而言網路都是時間多工的方式來進行傳輸,這也是 CSMA/CD 的作用。


訊號以電流傳輸
也會有頻率嗎
難道這電流是交流電
所以有頻率嗎
如果不是
那這頻率是什麼?

3
雜七雜八 / 請推荐計算機架構的書
« 於: 2005-08-25 07:54 »
我手邊有一本中文的 "計算機組織與架構"
我覺得它寫得不清不楚
有的部分根本沒有交代完整
內容給人跳躍式思考的感覺
好像還要先學組語才看得懂........

怎樣才算寫得清楚呢?
Apostol 的 Calculus 就寫得很清楚
(Calculus 一定要讀 Apostol!!呵呵)
每一個推導過程都交代得很詳細
而且很有次序
不會一個定理還沒證就證下一個定理

我也想要一本這樣的計算機結構的書
最好是大師寫的書
這樣才能吸收到大師的思想
而且以後讀別的東西才不會銜接不上
不用再重讀
英文的沒關係

我應該會傾向於自學
因為很多課都衝堂

對了
問一下:
學計算機結構要先學什麼東西嗎
計算機結構和計算機概論一樣嗎?

4
我的書出了一些習題:

寫以下的宣告式:
指向內含 10 個整數的陣列的指涉器 (reference)
指向字串陣列的指標

我這樣寫(依序)
int& c[10];       // 指向內含 10 個整數的陣列的指涉器
string* d[10];      // 指向字串陣列的指標

這樣寫其實不太符合要求
(而且第一行還是錯的)

那要如何寫呢?
我不了解,希望大家能幫我

5
左值(lvalue) 是一個可以取得其位址的物件
(以下 i 是一個變數)
為什麼 ++i 是左值
為什麼 i++ 不是左值
我不了解,希望大家能幫我

6
我把一個 2 色
由小畫家產生的 BMP 檔案解碼
寬 8 pixels, 高 6 pixels:

    ofstream fout("C:\\Dev-Cpp\\Templates\\colour2_24.txt");
    ifstream fin("C:\\Dev-Cpp\\Templates\\colour2_24.bmp");
    char a[F_size];    // 由 BMP 檔案的大小決定,在此為 86 Bytes
   
    fin >> a;
   
    for( int i=0 ; i<F_size ; i++ ){
        fout << hex << (short)(a) << endl;
    }

    fin.close();
    fout.close();
   
結果:
問題在於 2 色的 BMP 檔案
一個 pixel 應該只佔 1 個 bit
可是 Image Data 有 24 Bytes
等於一個 pixel 佔 4 個 bits,為什麼?

42          // Line 1, HEADER
4d
56
0
0
0
0
0
0
0
3e
0
0
0
28         // Line 15, INFOHEADER
0
0
0
8
0
0
0
6
0
0
0
1
0
1
0
0
0
0
0
18
0
0
0
ffffffc4
e
0
0
ffffffc4
e
0
0
0
0
0
0
0
0
0
0
0         // Line 55, palette
0
0
0
ffffffff
ffffffff
ffffffff
0
0         // Line 63, Image Data
0         // 兩個 pixel 佔一個 byte??
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

7
我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

我宣告一個陣列:

      int arrInt[10];   //陣列名稱為arrInt,型態為int,大小為10

    for(int i=0; i<22; i++){
        arrInt = 100;
        fout << arrInt << endl;   // fout 有宣告過,輸出到檔案
    }

我要從 arrInt[0] 寫到 arrInt[21]
是因為我想挑戰它的極限
i<10 到 i<16 都可以把記憶體中原有的資料覆寫過去
(原本不是 100 也不是0 位址,被覆寫成100)
(本來我以為:其值為 0 的位址可覆寫,非 0 則不可覆寫,可是錯了)
可是i<17 開始
執行時會出現 "這個程式執行的作業無效,即將關閉"

記憶體覆寫的極限在那裡呢?

8
Computer 討論版 / 7bits ASCII
« 於: 2005-06-25 06:39 »
舊的 7bits ASCII 一個字元只有七個位元
可是這樣的字元儲存在硬碟上
一個字元會佔據 1 Byte (8 bits) 還是 7 bits?

9
我的書上寫著:
(C++程式語言經典增訂版 Bjarne Stroustrup著 葉秉哲譯 p.117 4.9宣告)
在C++程式裡,每一個名字都只能有唯一一個定義之處
至於宣告,倒是可以有好多個,但都必須與它所指涉的個體型別相符

如果我重複宣告一個結構:
struct asdf;
struct asdf;
這不會有問題

可是如果我重複宣告一個整數:
int a;
int a;   // Line 9
編譯器出現訊息:
9 c:\dev-cpp\templates\新文件4.cpp   redeclaration of `int a'

我的理解不知道對不對:
宣告一個整數時
它會同時被定義(被編譯器定義嗎)
這定義包括它的初值(書上寫0,在我的PC上是575)
和它的記憶體位置

10
程式討論版 / bool的大小
« 於: 2005-06-21 23:45 »
我用c++顯示bool變數的大小:
cout << sizeof(bool) << endl;
結果是1 Bite
和char一樣大
可是bool只有0和1
應該只要一個位元,不用一個位元組吧?

11
我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

我想測試char的十六進位和八進位寫法:
   // ......
cout << "a\x123456h\12345";   // Line 29
   // ......
可以compile但編譯器訊息:
29 C:\Dev-Cpp\Templates\新文件1.cpp   [Warning] escape sequence out of range for character

也可以執行,結果如下:
aVhS45

\x123456(十六進位)代表'V'
\123(八進位)代表'S'

但我把Line 29改成:
cout << "a\x123456789h\12345";
編譯器訊息:
29 C:\Dev-Cpp\Templates\新文件1.cpp   hex escape out of range
29 C:\Dev-Cpp\Templates\新文件1.cpp   [Warning] escape sequence out of range for character

八進位字元會在超過三位數的時後自動截斷
十六進位字元卻不會?
為什麼

12
C/C++程式設計討論區 / 結構指標
« 於: 2005-04-16 17:03 »
我照書上的指示,打了一個C++程式:

#include<iostream>
#include<stdlib.h>          // 使用system 就要引入這個檔案
const float pi = 3.141592653589793238462;

struct Circle{              // 宣告一個結構資料型態 Circle
    int r;                  // 資料成員
    float area();           // 宣告一個成員函數 area  
};

float Circle::area(){       // 定義成員函數 area 的內容
    return r*r*pi;
}



void main(void)
{
    Circle circle1 = {5};
    cout << "圓 circle1 的面積為:" << circle1.area() << endl;
   
   
    Circle *circle2 = &circle1;
    cout << "圓 circle2 的面積為:" << circle2->area() << endl;  // Line 31
   
   
    Circle *circle3 = new Circle;
    circle3->r = 5;
    cout << "圓 circle3 的面積為:" << circle3->area() << endl;
    delete circle3;
   

    system("PAUSE");
    return 0;
}

Line 31 的 circle2->area() 我看不懂
既然 circle2 是一個指標,用來取 circle1 的 area() 值
為什麼不是 *circle2::area()

13
我照書上的指示打了一段C++程式

我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

#include<iostream>
#include<stdlib.h>          // 使用system 就要引入這個檔案
#include<dos.h>

void main(void)
{
    struct date current_date;
    getdate(&current_date);         // Line 22
    cout << "現在的日期是......";
    cout << current_date.da_year << "年 ";
    cout << int(current_date.da_mon) << "月 ";
    cout << int(current_date.da_day) << "日\n\n";


    system("PAUSE");
    return 0;
}

結果Compiler回應:
   C:\Dev-Cpp\Templates\新文件2.cpp    [Warning] In function `int main(...)':
22 C:\Dev-Cpp\Templates\新文件2.cpp   implicit declaration of function `int getdate(...)'

dos.h 裡面沒有定義getdate和gettime函式嗎?

14
C/C++程式設計討論區 / (C++)前置處理指令
« 於: 2005-04-16 12:08 »
我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

我寫了一段前置處理指令:

#define PI 3.14159
#define AREA(r) ((r)*(r)*(PI))
#define MAX(a, b) ((a>b)?a:b)

#ifndef AREA(r)                // Line 15
#define AREA(r) ((r)*(r)*(PI))
#endif

#if !define AREA(r)            // Line 19
#define AREA(r) ((r)*(r)*(PI))
#endif

#ifndef PI
#define PI 3.14159
#endif

#if !define PI                 // Line 27
#define PI 3.14159
#endif

15 C:\WINDOWS\Desktop\新文件2.cpp   [Warning] garbage at end of `#ifndef' argument
19 C:\WINDOWS\Desktop\新文件2.cpp   parse error
27 C:\WINDOWS\Desktop\新文件2.cpp   Floating point numbers not allowed in #if expressions

為什麼會這樣?
尤其是 Line 27
為什麼 #if 指令不接受 Floating point numbers?

15
C/C++程式設計討論區 / (C++)rand的問題
« 於: 2005-04-10 12:30 »
我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

我key-in以下程式來產生亂數:

#include<iostream.h>
#include<stdlib.h>          // 使用system 就要引入這個檔案
int main(void)
{
    cout << rand() << endl;
    system("PAUSE");
}

可是不管我怎麼Compile
執行產生的數字都是 "41"
我把以上程式碼copy到另一個原始碼檔案重新Compile
結果還是 "41"
重新開機,再Compile
結果還是 "41"
這還能叫亂數嗎?
我的Compiler有問題嗎?

16
我的環境:
Win98
Compiler: gcc 2.95.3-6
IDE:      Bloodshed Software Dev-C++ 4.9.7.0

我在練習使用C++的string資料型態
卻發我無法宣告string資料型態的變數:

#include<iostream.h>
#include<string.h>
#include<stdlib.h>          // 使用system 就要引入這個檔案

int main(void)
{
    string a, b;      // Line 12
   
    cin >> a >> b;          // Line 14
    cout << a << endl;
   
    system("PAUSE");
}
編譯器回應如下:
   C:\WINDOWS\Desktop\新文件2.cpp   [Warning] In function `int main()':
12 C:\WINDOWS\Desktop\新文件2.cpp   `string' undeclared (first use this function)
               [Build Error] (Each undeclared identifier is reported only once
               [Build Error] for each function it appears in.)
12 C:\WINDOWS\Desktop\新文件2.cpp   parse error before `,'
14 C:\WINDOWS\Desktop\新文件2.cpp   `a' undeclared (first use this function)
14 C:\WINDOWS\Desktop\新文件2.cpp   `b' undeclared (first use this function)

string.h裡面沒有宣告string資料型態嗎?

如果不用string資料型態
而用char陣列
就有許多函數不能用
這該怎麼辦

17
我在學c++程式語言
我目前感到最大的困擾是:
有許多很難記又有很多參數的函數
例如:(處理字元與字串的函數)
s1.compare(i1, len1, s2, len2);
s1.find("asdf", i1, len2); .......etc.

當函數很容易忘掉時
請問各位如何克服這個困難?
(忘記一次就翻書一次似乎不是很有效率的方法)

18
雜七雜八 / 一位準大學生亟需要您的幫助
« 於: 2004-12-06 06:32 »
從高二以來, 我的大學目標一直是資訊工程和物理
不過現在我有以下三個問題


(1)
現在電機系大多設有電子計算機組
和資訊工程系有什麼不同?
這個問題, 寫自傳和參加口試時都會遇到

以下這一段敘述不知道對不對(引自台大電機系 入學資訊)

基本上,電機工程與資訊工程的領域相當接近。但是基本的訓練基礎有所差異。資訊系重視的是利用數學和演算法的方法,以設計軟體的方式來解決問題。而電機系會利用物理和電學的方法,以設計硬體的方式來解決問題。電機系與資訊系的學生都要寫程式,但是電機領域的學生在處理問題時,會比較偏向要考慮到與物理、電學、硬體等的配合程度。台大電機系的課程設計是讓大學部同學在低年級時廣泛接觸所有電機資訊 (EECS) 相關領域的基本知識,到了高年級再根據自己感興趣的方向選擇進階課程。而資訊系是以培養資訊科學專長為目的,來規劃大學部的整體課程


(2)
物理系會有很多實驗嗎?(我最怕實驗了)
我將來還要去日本留學
實驗成績會不會成為我申請獎學金的包袱?

可是資工的實驗該不會跟物理系一樣多吧!
(是那種要操作很多很奇怪的陌生儀器的
還是只有叫電腦去run的...........)

嗚呼哀哉!!逃不掉了


(3)
資訊工程的未來呢?
現在的軟體設計好像都是叫印度人去做
(竟然搶我最喜歡的領域)
好吧, 那就再找別的來做好了
曾經有老師說我應該朝網路發展
也有人說要走Unix一類專業化的東西
也有人說我可以去做韌體, 上班摸魚老闆也不會怎樣

我個人可是有"鴻鵠大志"的(也許吧)
希望能為資訊工程帶來突破!!

如果我以後要去日本
不知道在那邊可以有什麼樣的發展.........(台東小孩子的幻想)

19
C/C++程式設計討論區 / [問題](C++)異常處理
« 於: 2004-04-25 18:37 »
我的環境:
RedHat Linux 7.3
Kernel: 2.4.18-3
gcc: 2.96-110
make: 3.79.1-8


我照書上的指示, 打了一段程式:

代碼: [選擇]

// 異常處理(Exception Handling)

// ...

int main(int argc, char *argv[])
{
  cout << endl;

  ifstream fin(argv[1]);

  try
    {
      if(!fin)                         // 檢查輸入檔 fin 是否成功開啟
throw "無法開啟輸入檔: ";      // Line 40
      else
throw "成功開啟輸入檔: ";      // Line 42

      cout << "此行不會被執行" << endl;
    }
  catch(const char *message)
    cout << message << argv[1] << endl;// Line 47
  cout << "結束" << endl;

  cout << endl;

  return 0;
}                                      // Line 54



編譯時出現錯誤:

main.cpp:40: exception handling disabled, use -fexceptions to enable
main.cpp:42: unknown escape sequence: `\' followed by char code 0xb6
main.cpp:47: parse error before `<'
main.cpp:54: confused by earlier errors, bailing out

這是為什麼?

20
Linux 討論版 / [問題]bash 和 sh
« 於: 2004-03-06 14:52 »
如果 sh 是 bash 的 link
為什麼兩者的命令提示符號不同?

21
書上出了一個題目:

請設計一個 C++ 程式, 可以從任意一個文字檔案中尋找是否存在一個由使用者所輸人的字串.

我這樣子寫:

int main( int argc, char *argv[] )
{
  ifstream fin;
  fin.open(argv[1]);     // fin 為搜尋目標
  ofstream temp1;
  temp1.open("temp.txt");
  if(!fin)               // 檢查檔案 fin 是否成功開啟
    {
      cout << "輸入檔案[" << argv[1] << "]無法開啟" << endl;
      return 1;
    }


  char ch;
  while(!fin.eof())      // 檢查檔案 fin 是否還有資料
    {
      fin.get(ch);       // 自檔案 fin 讀取一個字元
      if( (ch>=32) && (ch<=126) )     // 把控制字元排除掉, 但將無法讀取中文
   temp1.put(ch);   // 將字元輸出到暫存檔 temp1,
                         // 為了避免搜尋受控制字元的干擾
    }


  temp1.close();
  ifstream temp2;        // 把 temp1 (ofstream) 關閉
  temp2.open("temp.txt");// 重新開啟為 temp2 (ifstream)


  string s1, s2;
  cout << "Search for string: ";
  cin >> s2;             // 將 temp2 的內容輸入 s1 為搜尋目標
  getline(temp2,s1);     // s2 為搜尋字串


  unsigned int len = sizeof(s1);// 取得 s1 的長度 len
  if( (s1.find(s2)>=0) && (s1.find(s2)<=len) )
                                // s1.find(s2) 的值必須在 0 和 len之間
    cout << "已找到 ";
  else
    cout << "找不到 ";
  cout << s2 << endl;
   

  fin.close();
  temp2.close();
}


但我知道這樣寫是錯的, 因為:
(1) 無法搜尋中文
(2) 我再怎麼弄, len(s1的長度)都是4, 也就是說, temp2 的內容沒有輸入到 s1
    這樣不能搜尋!

請問一下誰有比較好的設計和寫法?

22
我的環境:
RedHat Linux 7.3
Kernel: 2.4.18-3
gcc: 2.96-110
make: 3.79.1-8


我在一個程式裡用了system()函式:

//.....

   system("asdf");
   //.......

實際執行的結果:
sh: asdf: command not found

表示system()是呼叫 sh
可是我的shell是bash
我如何讓它呼叫bash?

23
我的環境:
RedHat Linux 7.3
Kernel: 2.4.18-3
gcc: 2.96-110
make: 3.79.1-8

一個最簡的程式碼:

//......

cout << "asdf";

     //......

我也可以這樣寫, 似乎沒有任何問題:

//......

cerr << "asdf";

     //......

書上給我的定義是這樣的:

習慣上用 cout 做一般的輸出
    cerr 做程式錯誤訊息的輸出

那除了習慣上的差別
cout 和 cerr 在執行上有什麼不同?
[/code]

24
我的環境:
RedHat Linux 7.3
Kernel: 2.4.18-3
gcc: 2.96-110
make: 3.79.1-8


我照書上的指示
練習格式化輸出運作子
可是發現下列這些不能使用:

showbase
noshowbase
uppercase
nouppercase
fixed
scientific
left
right
boolalpha
noboolalpha

例如說:

#include<iostream>
#include<iomanip>
using namespace std;

int main(void)
{
  //scientific
  cout << "(scientific)" << endl;
  cout << "1089 = " << scientific << 1089.123456789 << endl;
  cout << endl;

編譯時錯誤訊息:
main.cpp:85: `scientific' undeclared (first use this function)
main.cpp:85: (Each undeclared identifier is reported only once for each
function it appears in.)

該引入的 header file 我都用了
那我該怎麼辦?

25
我的環境:
RedHat Linux 7.3
Kernel: 2.4.18-3
gcc: 2.96-110
make: 3.79.1-8

我發現有兩個問題
書上寫的(2002年2月初版)
和我實際測試的結果不同

書上寫說底下這一段程式錯誤:

   //...

cin >> i;   //因為陣列的大小必須在編譯期(Compile Time)就決定
int d;

可是這一段程式
我編譯起來正常
執行也正常


那這一段程式呢?:

   //...

cin >> i;
int *d = new int;

我不了解這是怎麼回事(C++的最新標準嗎)
請問一下!
[/code]

26
底下兩個類似的程式,各將要求使用者輸入一個字串,並輸出之:

(1)
  char a[20];
  cin >> a;   //無法自動過濾換行符號
  cout << a;

(2)
  string a;
  cin >> a;   //可過濾換行符號
  cout << a;

在(1)中
就算我一個字也不打,直接按Enter
它也當我輸入完成

那當輸入字串於字元陣列 a[n] 時
如何使其忽略換行符號?

27
我們可以用字元陣列來宣告一個字串:
char a[30];   //此字串的長度限制為30

也可以用string來宣告:
string a;   //無法限制此字串的長度

那麼當使用string宣告字串時
如何限制它的長度?



這個問題很重要,因為有時候我們非使用string不可
底下兩個類似的程式,各將要求使用者輸入一個字串:

(1)
  char a[20];
  cin >> a;   //無法自動過濾換行符號

(2)
  string a;
  cin >> a;   //可過濾換行符號

在(1)中
就算我一個字也不打,直接按Enter
電腦也以為我輸入完成[/code]

29
我寫了個C++程式
發現有無窮迴圈的情形:

#include <iostream.h>

int main(void)
{
  cout << endl;

  unsigned int H1, H2;
  const float pi = 3.1415926;

  for (;;)
    {
    cout << "請輸入H1:";
    cin >> H1;
    cout << "請輸入H2:";
    cin >> H2;
    cout << endl;

    if(H1 > H2)
      {
      cout << "灰色部分的面積為"
      << (H1*H1 - H1*H1*pi/4) + (H1*H2 - H2*H2) << endl;
      break;
      }
    if(H1 <= H2)
      {
      cout << "H1必須大於H2!" << endl << endl;
      continue;
      }    
    }
  }
   
  cout << endl;
}

  如果 H1輸入一個或數個非整數字元
  輸出結果如下:

請輸入H1:^[[A
請輸入H2:
灰色部分的面積為4.28744e+09


  這次換 H2輸入一個或數個非整數字元
  輸出結果如下:

請輸入H1:2
請輸入H2:q

H1必須大於H2!

請輸入H1:請輸入H2:
H1必須大於H2!

請輸入H1:請輸入H2:
H1必須大於H2!

請輸入H1:請輸入H2:
H1必須大於H2!

   ...............(無窮迴圈)

為什麼會這樣?

30
我寫了一個C++程式
用來計算 N!:

  int N, r;long double factorial = 1;   //第5行
  cout << "請輸入整數 N:";
  cin >> N;

  if(N>0) r = 1;
  if(N<0) r = 2;
  else    r = 3;

  switch(r)
    {
    case 1:
      for(; N>1 ; N-- )
   factorial *= N;
      break;
    case 2:
      for(; N<0 ; N++ )
   factorial *= N;
      break;
    default:
      break;
    }
  cout << "N! = " << factorial << endl;

執行以後出現問題:
若輸入一個大於0的數,結果都是1
但輸入小於或等於0的數,結果就正常
為什麼

頁: [1] 2 3