| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1805 人关注过本帖
标题:利用c++分析生物信息学数据疑问
只看楼主 加入收藏
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
specilize
Rank: 4
等 级:业余侠客
帖 子:126
专家分:247
注 册:2011-2-20
收藏
得分:2 
一直关注着这个帖子,楼主对c++不是十分熟悉,cout和endl都是定义在命名空间std中的,所以要使用cout和endl可以这样
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;
或者是
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
uisng namespace std;
不过后者会污染全局作用域,一般不提倡使用
等楼主熟悉了,发现其实这是很简单而基本的问题
2011-07-03 18:47
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:1 
那就用纯C吧,将char *p=new char[num] 改为char *p=malloc(num); delete []p,改为free(p);
cout改为printf.
头文件stdio.h就OK、这实在是不能称为C++程序。也不是一个完整的程序。

离恨恰如春草,更行更远还生。
2011-07-03 20:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
我想楼主应该是连 C 语言也不会。c++ 不能心急,慢慢学呗。
会其它一些编程语言的话,再学一个一般也不是很费劲。
2011-07-03 23:02
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.026650 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved