正文

单词表逆序程序2007-06-13 20:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tonyhu/26755.html

分享到:

以前地ACM同胞现全有自己地事去了,继续搞ACM的现当然几乎成领军人物了,只有我这烂人还在这准备考研地说,正经程序就再没写几个,方便背单词的小程序倒自己写了N(N>10)个……哈哈,都笑我没品位呀……,其实都是些自己实用的程序,这个逆序程序好像还比较有用的……,背单词换个口味呢……

#include <iostream>
#include <string.h>

using namespace std;
const int N=8000;    //偶最多也只背这么多个

int cmp(char *a,char *b)
{
 char ta,tb;
 int la=0,lb=0;
 while(a[la]!='\0' && a[la]!=9 && a[la]!=' ' && a[la]!=','
    && a[la]!='(' && a[la]!= '[' && a[la]!='/' && a[la]!='.')
  la++;
 while(b[lb]!='\0' && b[lb]!=9 && b[lb]!= ' ' && b[lb]!=','
  && b[lb]!='(' && b[lb]!= '[' && b[lb]!='/' && b[lb]!='.')
  lb++;
 la--;
 lb--;
 while(la!=-1 || lb !=-1)
 {
  if(a[la]>='A' && a[la]<='Z')
   ta=a[la]+32;
  else ta=a[la];
  
     if(b[lb]>='A' && b[lb]<='Z')
   tb=b[lb]+32;
  else tb=b[lb];
  
  if(ta>tb)
   return 1;
  else if(ta<tb)
   return -1;
  else
  {
   la--;
   lb--;
  }
 }
}

int main()
{
 FILE *fp;
 int i,j,p=0,min;
 char ch[N][100]={0};
 char tmp[100];
 if((fp=fopen("in.csv","r"))==NULL)
 {
  cout << "read error" <<endl;
  return 1;
 }
 while(!feof(fp))
 {
  i=0;
  while( !feof(fp) 
    && (ch[p][i++]=fgetc(fp))!='\n');
  ch[p][i-1]='\0';
  p++;
 }
 p--;
 for (i=0;i<p;i++)
 {
  min = i;
  for (j=i+1;j<p;j++)
  {
   if(cmp(ch[j],ch[min])<0)
    min=j;
  }
  if(min != i)
  {
   strcpy(tmp,ch[min]);
   strcpy(ch[min],ch[i]);
   strcpy(ch[i],tmp);
  }
 }
 fclose(fp);
 fp=fopen("out.csv","w+");
 for (i=0;i<p;i++)
 {
  fprintf(fp,"%s\n",ch[i]);
 }
 fclose(fp);
}

阅读(4126) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册