程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Python與C++ 程序的簡單實例對比

Python與C++ 程序的簡單實例對比

編輯:C++入門知識
一位網友正在學校做課程設計題目,要求在一個文件中找到給定單詞出現的位置並統計出現次數。這是一個比較簡單的文本處理問題, 於是, 我給他用 python 寫了一個,並打賭在5分鐘內用不到30行程序解決問題。 下面是程序: if __name__=='__main__':
  
  file_name = raw_input('Input the file you want to find in:')
  
  try:
  
  in_file = open(file_name,'r')
  
  lines = in_file.readlines()
  
          tag_tok = ''
  
  while tag_tok.upper() != 'Q':
  
  tag_tok = raw_input('Input the Word you want to find(Q for quit):')
  
  if tag_tok.upper() != 'Q':
  
  count = 0
  
  line_no = 0
  
  for line in lines:
  
  line_no = line_no + 1
  
  inline_cnt = line.count(tag_tok)
  
  count = count + inline_cnt
  
  if inline_cnt > 0:
  
  print 'Find %s %d time(s) in line :%d'%(tag_tok,inline_cnt,line_no)
  
  print line
  
  print '---------------------------------'
  
  print 'Total fount %s %d time(s)'%(tag_tok, count)
  
  except:
  
  print "Can't open file %s"%(file_name) 但是,這個網友還不滿足非要一個 C++的程序,理由是他們老師不會python , 正好我也想試試用C++解決和python做下對比: #include <fstream>
  
  #include <iostream>
  
  #include <string>
  
  #include <vector>
  
  #include <algorithm> using namespace std; int BruteFind(const char *x, int m, const char *y, int n ,vector<int>& colpos) {
  
  int i, j, cnt=0;
  
  /* Searching */
  
  for (j = 0; j <= n - m; ++j) {
  
  for (i = 0; i < m && x == y[i + j]; ++i);
  
  if (i >= m){
  
  colpos[cnt++] = j;
  
  if(cnt == colpos.size())
  
  colpos.resize(cnt * 2);
  
  }
  
  }
  
  return cnt;
  
  } int count_string(string source, string tag, vector<int>& colpos){
  
  int find_cnt = 0;
  
  find_cnt = BruteFind(tag.c_str(), tag.size(), source.c_str(),source.size(),colpos);   return find_cnt;
  
  } int main(){
  
  string file_name, line;
  
  vector<string> lines;
  
  lines.resize(10);
  
  
  
  cout << "Input the file name:";
  
  cin  >> file_name;
  
  ifstream in_file;
  
  try{
  
  in_file.open(file_name.c_str());
  
  if(!in_file)
  
  throw(file_name);
  
  }
  
  catch(string file_name){
  
  cout << "Fatal error: File not found."<<endl;
  
  exit(1);
  
  } int line_count = 0;
  
  do{
  
  getline(in_file, lines[line_count]);
  
  line_count ++;
  
  
  
  if(line_count == lines.size()){
  
  lines.resize(line_count * 2);
  
  }
  
  }while(in_file.eof()==0);
  
  string tag_tok;
  
  vector<int> colpos;
  
  colpos.resize(10);
  
  do{
  
  cout << "Input the word you want to find(Q for quit):";
  
  cin >> tag_tok;
  
  if(tag_tok == "Q"){
  
  break;
  
  }
  
  
  
  int count = 0, line_no = 0 , inline_count;
  
  for(line_no = 0 ;line_no < line_count ; line_no++){
  
  inline_count = count_string(lines[line_no], tag_tok, colpos);
  
  count += inline_count;
  
  if(inline_count > 0){
  
  cout << "Find " << tag_tok << " " << inline_count << " time(s) in line " << line_no ;
  
  cout << " , column pos is ( ";
  
  
  
  for(int i = 0 ;i< inline_count ;i++){
  
  cout << colpos << ' ';
  
  }
  
  cout << " )" << endl;
  
  cout << lines[line_no] << endl;
  
  }
  
  }
  
  cout << "--------------------------------" <<endl;
  
  cout << "Total fount " << tag_tok << " " << count << " time(s)" << endl;
  
  }while(tag_tok != "Q");
  
  in_file.close();
  
  return 0;
  
  }
   這個程序用了30分鐘。 從程序長度和編程時間上,粗略對比下: Python  5 分鐘 22行 C++       30 分鐘 60多行 從這個簡單的例子中可以大體看到 腳本語言與C++語言中在開發時的差異了。
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved