| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:求帮忙解决统计数据问题,谢谢!
只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:30 回复次数:17 
求帮忙解决统计数据问题,谢谢!
#include"stdio.h"
#include"stdlib.h"
#define M  4601       //无简并的4601个基因         
FILE *str1,*date2;     
struct motif
{      //存放无简并基因的外显子区间
int m;
int num;            
static char name[5000000];   //求出每一行字符串的字符个数放入name中
}lead[M];
int main()
{
 int i;
 date2=fopen("E:\\寻找内含子序列\\cds序列.txt","rt");   
 str1=fopen("E:\\寻找内含子序列\\cds最终序列.txt","wt");
  for(i=0;i<M;i++)
    fscanf(date2,"%s",&lead[i].name);
  for(i=0;i<M;i++)
  {
    lead[i].num=strlen(lead[i].name);
    fprintf(str1,"%d\n",lead[i].num);
  }
 fclose(str1);
 fclose(date2);
}
程序总是运行不了,为什么呀,是5000000太大了吗?该怎么解决呀?
谢谢!!!
搜索更多相关主题的帖子: 外显子 内含子 统计 include 字符串 
2013-06-28 16:40
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
static char name 属于结构体模版的把,不是对象的。如果确认和对象无关,lead[i].num=strlen(lead[i].name); 实质上只是访问了同一个name

name为什么需要那么大?
如果是静态数据,5000000个char 不大,就5M左右而已。


你编译能通过?类(和结构体)静态变量的使用之前要初始化的
帮你改成这样把
typedef struct _motif
{      //存放无简并基因的外显子区间
    int m;
    int num;            
    static char name[5000000];   //求出每一行字符串的字符个数放入name中
}motif;

motif lead[M];

char motif::name[5000000] = { 0 }; 要初始化的

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-28 17:05
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
大侠,好像不行呀,改了之后出现下面的提示
error LNK2001: unresolved external symbol "public: static char * motif::xulie" (?xulie@motif@@2PADA)
这是怎么回事呀?
谢谢!!!
2013-06-30 14:59
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
求解!!!
2013-06-30 18:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:30 
不明白你想干什么,“运行不了”又不知道是什么意思。“运行不了”四字在本坛是神语。

授人以渔,不授人以鱼。
2013-06-30 18:18
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 5楼 TonyDeng
#include"stdio.h"
#include"stdlib.h"
#define M 1348       //cds区间数不为0且为负链的基因数         
FILE *str1,*date1;     
struct motif
{      
int num;              
char gene[20];   
char xulie[9500000];      //选择9500000是因为1438行序列中最长的一行为9000000多
}lead[M]                    
int main()
{
 int i,j,m;
 char zifu;
 date1=fopen("E:\\寻找内含子序列\\内含子负序列.txt","rt");
 str1=fopen("E:\\寻找内含子序列\\内含子最终负序列.txt","wt");
  for(i=0;i<M;i++)
  fscanf(date1,"%s\t%d\t%s",&lead[i].gene,&lead[i].num,&lead[i].xulie);   //读取基因、cds序列长度、cds序列   
  for(i=0;i<M;i++)
    for(j=0;j<lead[i].num/2;j++)
    {
       m=lead[i].num;   //m指序列长度
       zifu=lead[i].xulie[j];
       lead[i].xulie[j]=lead[i].xulie[m-1-j];
       lead[i].xulie[m-1-j]=zifu;     //第一个与最后一个、第二个与倒数第二个等替换   
    }
  for(i=0;i<M;i++)
    for(j=0;j<lead[i].num;j++)
    {
      if(lead[i].xulie[j]=='A')
      {
       lead[i].xulie[j]='T';
       continue;     //加continue表明完成操作后继续循环,不执行下面的;要加{}否则不管第一个if是否成立执行continue继续循环
      }
      if(lead[i].xulie[j]=='T')
      {
       lead[i].xulie[j]='A';
       continue;
      }
      if(lead[i].xulie[j]=='C')
      {
       lead[i].xulie[j]='G';
       continue;
      }
      if(lead[i].xulie[j]=='G')
      lead[i].xulie[j]='C';
    }
  for(i=0;i<M;i++)
  {
    fprintf(str1,"%s\t%d\t",lead[i].gene,lead[i].num);
    for(j=0;j<lead[i].num;j++)
    fprintf(str1,"%c",lead[i].xulie[j]);
    fprintf(str1,"\n");
  }
 fclose(str1);
 fclose(date1);
}

这个程序,当最长序列为900多万时运行不了,求解
2013-06-30 19:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用文字解释一下你的程序要实现什么目的,并把数据放上来看看。

授人以渔,不授人以鱼。
2013-06-30 19:22
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 7楼 TonyDeng
1348行字符串,最长的一行又900多万的字符,现在我要将每一行字符前后翻转,即第一个字符成为最后一个,第二个成为倒数第二个等等,同时还要实现每个字符A与T之间的互换,C与G之间的互换,之后按原来的行数输出字符串。
但现在有些行字符个数有900多万个,(字符只有A、T、C、G构成)处理起来很困难,求助!!
我是生物物理专业的,处理的是一些生物数据,望各位大侠帮忙,谢谢!!!!
2013-07-02 10:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
把数据文件用附件放上来呀

授人以渔,不授人以鱼。
2013-07-02 12:45
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
[local]1[/local]
不好意思,麻烦您了!!!
2013-07-02 13:38
快速回复:求帮忙解决统计数据问题,谢谢!
数据加载中...
 
   



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

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