| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1805 人关注过本帖
标题:利用c++分析生物信息学数据疑问
取消只看楼主 加入收藏
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
我主要遇到的问题,是不知该如何运用c++,来读取及分析一个档案的内容...分析后,又该如何将其储存于另一个档案 :(
用awk/sed/perl最方便的地方,或许是只需要在工作业面,输入要读取档案的名称后,利用“〉”符合,将分析结果,储存于另一个新档案...
我理想利用c++语言写好程序后的处理格式是:
程序代码:
c++程序名称 读取档案名称 结果档案名称
eg.
a.out input_file.txt output_file.txt
2011-07-02 07:32
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
若是以我提出的例子,c++的程序比awk/sed/perl慢些也没关系...
我主要是希望可以透过此例子,慢慢熟悉如何利用c++来写程序,分析数据...
谢谢...
请多指教 :)
2011-07-02 07:42
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 24楼 玩出来的代码
你好,请问可以分享你的c++程序吗?
希望可以更熟悉c++程序,是如何处理我的案例,谢谢噢 :)
2011-07-02 11:37
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 26楼 玩出来的代码
你好,这是我使用的c++程序内容:
程序代码:
// aa.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
FILE *pOpen;
char chBuf[200];
int nSum=0;
long nLen=0;
int k;
pOpen = fopen("d:\\aa.txt","r"); //打开文件

if (pOpen==NULL)
{
printf("打开文件失败");
}
else
{
//打开文件成功,读取内容
fread(chBuf,200,1,pOpen);
//开始统计
nLen = strlen(chBuf);
for(int k=0;k < nLen;k++)
{
if(chBuf[k]=='A' || chBuf[k]=='C' || chBuf[k]=='G' || chBuf[k]=='T' || chBuf[k]=='N')
{
nSum++;
}
}
fclose(pOpen);
}

printf("%d\n",nSum);

return 0;
}

以上的程序,处理小档案,没有很大问题...
但还是有些不足的地方:
1.档案的名称,必须在c++程序内列明(如:aa.txt);
2.无法把结果,显示在新的档案内;

我理想的c++程序,是希望能按照一下的格式:
程序代码:
c++程序名称 读取档案名称 结果档案名称
eg.
a.out input_file.txt output_file.txt
a.out input_file2.txt output_file2.txt

非常感谢您的意见及改写以上的c++程序 :)
2011-07-02 17:01
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 28楼 玩出来的代码
你好,谢谢你噢 :)
我会好好消化您所分享的c++程序...
c和c++,我也有些混淆了 :(

我在使用您的c++程序时,是否该增加"#include <stdio.h> #include <stdlib.h>"在其开头?
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
    FILE *pf=fopen(argv[1],"rb+");
    fseek(pf,0,SEEK_END);
    int filesize=ftell(pf);
    fseek(pf,0,SEEK_SET);
.
.


谢谢您的确认...
您所写的c++程序,分析数据很快 :)
2011-07-02 23:22
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 28楼 玩出来的代码
你好,这是我依照您的代码,所写的程序:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

int main(int argc,char **argv)
{
    FILE *pf=fopen(argv[1],"rb+");
    fseek(pf,0,SEEK_END);
    int filesize=ftell(pf);
    fseek(pf,0,SEEK_SET);

    int num=1024*1024;
    char *pbFile=new char[num+1];
    bool bFlag=false;
    int target[26]={0};
    if(pbFile==NULL)
    {
        printf("new error");
        return -1;
    }
    while(filesize>0)
    {
        if(filesize<num)
            num=filesize;
        fread(pbFile,num,1,pf);
        for(int i=0;i<num;i++)
        {
            while((i<num && pbFile[i]=='>') || bFlag)
            {
                bFlag=true;
                while(i<num && pbFile[i]!='\n')i++;
                if(i<num)
                {
                    bFlag=false;
                    i++;
                }
                else if(i==num)
                    break;
            }
            while(i<num && pbFile[i]!='\r' && pbFile[i]!='\n')
               target[pbFile[i++]-65]++;
        }
        filesize-=num;
    }
    delete []pbFile;
    fclose(pf);

    FILE *p=fopen(argv[2],"r+");
    fprintf(p,"%d",target[0]+target['G'-'A']+target['C'-'A']+target['T'-'A']);
    fclose(p);
    cout<<target[0]+target['G'-'A']+target['C'-'A']+target['T'-'A']<<endl;
    return 0;
}

不知为何,当我g++此程序时,有一下的错误信息:
程序代码:
read_count.cpp: In function `int main(int, char**)':
read_count.cpp:51: error: `cout' was not declared in this scope
read_count.cpp:51: error: `endl' was not declared in this scope

您知道,该如何解决这问题吗?
以下是我电脑的一些资料:
ia64 GNU/Linux
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)

谢谢您的任何意见 :)
2011-07-03 18:17
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 32楼 specilize
谢谢你的意见,specilize :)
我不是很熟悉c和c++ :(
有点混淆下...
感觉上,perl和c的写法很像...

你说对了...
我犯了一个很基本的错误 :(
忘了加上:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;

唉,真的很大意下...
这是cplusplusprimer书里,有强调要注意的问题 :(
谢谢你的提醒噢...
2011-07-04 16:09
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 33楼 玩出来的代码
谢谢你噢..
我现在试着,让您之前写的程序,可以接受及分享更大的输入档案 :)
2011-07-04 18:19
cpp_初学者
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 34楼 pangding
版主,您说对了...
我较熟悉awk,sed,perl.
c和c++,我还是第一次接触 :(
现在还在慢慢的啃着cplusplusprimer2.
c++,还请您多指教 :)
2011-07-04 18:21
快速回复:利用c++分析生物信息学数据疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033441 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved