C++ 在CPP中使用ifstream逐行读取文件,并自定义代码以打印频率和百分比的数量

C++ 在CPP中使用ifstream逐行读取文件,并自定义代码以打印频率和百分比的数量,c++,C++,遗传密码是活细胞用来将遗传物质中编码的信息(核苷酸三联体的DNA或mRNA序列或密码子)翻译成蛋白质的一套规则。所有生物的遗传密码都非常相似,可以用一个包含64个条目的简单表格来表达。 核酸序列中的三个核苷酸密码子指定一个氨基酸。绝大多数基因都是用一种称为遗传密码(参见密码子表)的单一模式编码的。 附加到这个任务中,你会发现一个名为“mouse.dat”的文本文件,其中包含一只老鼠的完整基因组。编写一个程序从文件中读取DNA序列,计算密码子表中每个密码子的频率,并将结果打印为数字和百分比。 (a

遗传密码是活细胞用来将遗传物质中编码的信息(核苷酸三联体的DNA或mRNA序列或密码子)翻译成蛋白质的一套规则。所有生物的遗传密码都非常相似,可以用一个包含64个条目的简单表格来表达。 核酸序列中的三个核苷酸密码子指定一个氨基酸。绝大多数基因都是用一种称为遗传密码(参见密码子表)的单一模式编码的。 附加到这个任务中,你会发现一个名为“mouse.dat”的文本文件,其中包含一只老鼠的完整基因组。编写一个程序从文件中读取DNA序列,计算密码子表中每个密码子的频率,并将结果打印为数字和百分比。 (a)用C++语言编写一个“普通代码”的串行代码。 当我编译上述代码时,我收到下面的错误消息“无法打开文件mouse.dat:没有这样的文件或目录”

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
std::vector codons={“ttt”};//最好总是将任何变量、数组或对象初始化为零、NULL或空字符串。
密码子。推回(“ttc”);/{“ttt”,“ttc”
密码子。推回(“tta”);/{“ttt”,“ttc”,“tta”
密码子。推回(“ttg”);/{“ttt”,“ttc”,“tta”。。。
密码子。推回(“tct”);
密码子。推回(“tcc”);
密码子。推回(“tca”);
密码子。推回(“tcg”);
密码子。推回(“tat”);
密码子。推回(“tac”);
密码子。推回(“taa”);
密码子。推回(“标签”);
密码子。推回(“tgt”);
密码子。推回(“tgc”);
密码子。推回(“tga”);
密码子。推回(“tgg”);
密码子。推回(“ctt”);
密码子。推回(“ctc”);
密码子。推回(“cta”);
密码子。推回(“ctg”);
密码子。推回(“cct”);
密码子。推回(“ccc”);
密码子。推回(“cca”);
密码子。推回(“ccg”);
密码子。推回(“猫”);
密码子。推回(“cac”);
密码子。推回(“caa”);
密码子。推回(“cag”);
密码子。推回(“cgt”);
密码子。推回(“cgc”);
密码子。推回(“cga”);
密码子。推回(“cgg”);
密码子。推回(“att”);
密码子。推回(“atc”);
密码子。推回(“ata”);
密码子。推回(“atg”);
密码子。推回(“act”);
密码子。推回(“acc”);
密码子。推回(“aca”);
密码子。推回(“acg”);
密码子。推回(“aat”);
密码子。推回(“aac”);
密码子。推回(“aaa”);
密码子。推回(“aag”);
密码子。推回(“agt”);
密码子。推回(“agc”);
密码子。推回(“aga”);
密码子。推回(“agg”);
密码子。推回(“gtt”);
密码子。推回(“gtc”);
密码子。推回(“gta”);
密码子。推回(“gtg”);
密码子。推回(“gct”);
密码子。推回(“gcc”);
密码子。推回(“gca”);
密码子。推回(“gcg”);
密码子。推回(“gat”);
密码子。推回(“gac”);
密码子。推回(“gaa”);
密码子。推回(“gag”);
密码子。推回(“ggt”);
密码子。推回(“ggc”);
密码子。推回(“gga”);
密码子。推回(“ggg”);//{“ttt”、“ttc”、“tta”、…、“ggg”}
//codons.size()是64
病媒计数(64,0);
字符串行=”“;//始终初始化。
//int numberOfLines=0;//警告:未使用的变量numberOfLines
char my_character='\0';//始终初始化。
对于(int indx=0;64>indx;indx++)//最好使用“数字比较变量”方式进行比较
{
字符串密码子_req=密码子[indx];
ifstream myfile(“mouse.dat”);
如果(myfile.is_open())
{
int cnt=0,ans=0;
而(!myfile.eof())
{
获取(我的字符);
//如果计数“cnt”的数量变为3,则将其重新初始化为零。
//并增加“ans”计数
如果(3==cnt)
{
ans++;
cnt=0;
}
如果('\n'==我的字符)
{
继续;
}
//这里的比较不是按顺序进行的
//搜索是否存在第一个字符(ttt处的示例t)
//增加碳纳米管
//下次如果它不存在的话
//比较直到我们找到下一个字母t
//如果发现,此时增加cnt。
//因此,ans计数大于字ttt上的预期计数
//不确定您的项目要求。
if(my_character==(char)codon_req[cnt])
{
cnt++;
}
}
myfile.close();
计数[indx]=ans;
}
其他的
{
perror(“无法打开文件mouse.dat”);
出口(1);
}
}
对于(int indx=0;64>indx;indx++)///最好使用“数字比较变量”方式进行比较
{

我不能将文件mouse.dat保存在特定位置,或者不需要
mouse.dat
应该在运行程序的文件夹中。我在windows上使用MS Visual Studio 2019,请从您似乎理解的注释中告诉我程序的位置,您可以
std::vector codons={“ttt”、“ttc”、“tta”,}
并保存大量的键入,所以我很好奇。你为什么要用这种艰难的方式设置
密码子呢?推荐阅读:。如果它现在不能保存任何调试,那么以后就会。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    std::vector<string> codons = { "ttt" }; // Better always initialize any variable or array or objects to zero or NULL or empty string.
    codons.push_back("ttc"); // { "ttt", "ttc"
    codons.push_back("tta"); // { "ttt", "ttc", "tta"
    codons.push_back("ttg"); // { "ttt", "ttc", "tta", ...
    codons.push_back("tct");
    codons.push_back("tcc");
    codons.push_back("tca");
    codons.push_back("tcg");
    codons.push_back("tat");
    codons.push_back("tac");
    codons.push_back("taa");
    codons.push_back("tag");
    codons.push_back("tgt");
    codons.push_back("tgc");
    codons.push_back("tga");
    codons.push_back("tgg");
    codons.push_back("ctt");
    codons.push_back("ctc");
    codons.push_back("cta");
    codons.push_back("ctg");
    codons.push_back("cct");
    codons.push_back("ccc");
    codons.push_back("cca");
    codons.push_back("ccg");
    codons.push_back("cat");
    codons.push_back("cac");
    codons.push_back("caa");
    codons.push_back("cag");
    codons.push_back("cgt");
    codons.push_back("cgc");
    codons.push_back("cga");
    codons.push_back("cgg");
    codons.push_back("att");
    codons.push_back("atc");
    codons.push_back("ata");
    codons.push_back("atg");
    codons.push_back("act");
    codons.push_back("acc");
    codons.push_back("aca");
    codons.push_back("acg");
    codons.push_back("aat");
    codons.push_back("aac");
    codons.push_back("aaa");
    codons.push_back("aag");
    codons.push_back("agt");
    codons.push_back("agc");
    codons.push_back("aga");
    codons.push_back("agg");
    codons.push_back("gtt");
    codons.push_back("gtc");
    codons.push_back("gta");
    codons.push_back("gtg");
    codons.push_back("gct");
    codons.push_back("gcc");
    codons.push_back("gca");
    codons.push_back("gcg");
    codons.push_back("gat");
    codons.push_back("gac");
    codons.push_back("gaa");
    codons.push_back("gag");
    codons.push_back("ggt");
    codons.push_back("ggc");
    codons.push_back("gga");
    codons.push_back("ggg"); // // { "ttt", "ttc", "tta", ..., "ggg"}
    // codons.size() is 64
    vector<int> counts(64, 0);
    string line = ""; // Always initialize.
    // int numberOfLines=0; // warning: unused variable numberOfLines
    char my_character = '\0'; // Always initialize.
    for (int indx = 0; 64 > indx; indx++) // Better compare using "number comparison variable" way
    {
        string codon_req = codons[indx];
        ifstream myfile("mouse.dat");
        if (myfile.is_open())
        {
            int cnt = 0, ans = 0;
            while (!myfile.eof())
            {
                myfile.get(my_character);
                // If number of count "cnt" becomes 3 reinitialize that to zero.
                // and increase "ans" count
                if (3 == cnt)
                {
                    ans++;
                    cnt = 0;
                }
                if ('\n' == my_character)
                {
                    continue;
                }
                // Here comparison is not done sequential
                // Search if first charater (example t at ttt) is present
                // increase cnt
                // Next time if it is not present
                // compare until we find next letter t
                // if found increase cnt at that time.
                // Hence ans count is more greater than expected count on word ttt
                // NOT SURE ON YOUR PROJECT REQUIREMENT.
                if (my_character == (char)codon_req[cnt])
                {
                    cnt++;
                }
            }
            myfile.close();
            counts[indx] = ans;
        }
        else
        {
            perror("Unable to open file mouse.dat");
            exit(1);
        }
    }
    for (int indx = 0; 64 > indx; indx++) //// Better compare using "number comparison variable" way
    {
        cout << "Before counts[indx] " << counts[indx] << "\n";
        codons[indx] = codons[indx] + " " + to_string(counts[indx]);
        cout << "After  counts[indx] " << counts[indx] << "\n";
    }
    ofstream newFile("results.txt");
    if (newFile.fail())
    {
        perror("Opening results.txt file failed");
        exit(2);
    }
    else
    {
        for (int indx = 0; 64 > indx; indx++) /// Better compare using "number comparison variable" way
        {
            newFile << codons[indx] << '\n';
        }
        newFile.close();
    }
    return 0;
}