Hi, I am new to c++ (and programming in general) and have a problem with a small project that I am doing to aid my research. I run multiple Polymerase Chain Reactions to amplify specific sections of DNA from pathogenic bacteria. Anyway, to take some of the pain out of setting these up, I read up a bit and wrote a small c++ programme to calculate the volumes I need for single and multiple PCR reactions. The programme works fine but I would like to add the ability to save the output from my programme to a file. Specifically I would like the programme to invoke the user to name an output file and then for the programme to write to that file and to close the file. I have tried using examples of file io from this site and others but i do not have enough experience or knowledge to implement them properly. I have included the code below. Would anyone be able to point me in the direction of a tutorial that could help me with this, or suggest some additions to my code? The programme was written using emacs on a Mac running mac os 10.2.5 and compiled using g++.
Thanks in advance
will
Code:// Mastermix Version 0.4 // April 2003 // William Gordon MacKay // E-mail - [email protected] #include <iostream.h> using namespace std; int main () { cout << endl << endl; cout << "MASTERMIX (version 0.4 [23.04.2003])" << endl << endl; cout << "WG MacKay ([email protected])" << endl << endl; cout << "Please enter the volumes for one PCR (in microlitres) below," << endl << endl; // Defines the PCR reagent variables and prompt the user to asign them values // These PCR reagent variables are then asigned names and printed to the terminal int ReturnCode = 0; float pcr = 1; cout << "Total vol: "; cin >> pcr; if (!cin.fail()) // numerical value entered { float pcrB = 1; cout << "Buffer: "; cin >> pcrB; if (!cin.fail()) // numerical value entered { float pcrM = 1; cout << "MgCl2: "; cin >> pcrM; if (!cin.fail()) // numerical value entered { float pcrD = 1; cout << "dNTPs: "; cin >> pcrD; if (!cin.fail()) // numerical value entered { float pcrF = 1; cout << "Forward: "; cin >> pcrF; if (!cin.fail()) // numerical value entered { float pcrR = 1; cout << "Reverse: "; cin >> pcrR; if (!cin.fail()) // numerical value entered { float pcrU = 1; cout << "Undefined: "; cin >> pcrU; if (!cin.fail()) // numerical value entered { float pcrT = 1; cout << "Taq: "; cin >> pcrT; if (!cin.fail()) // numerical value entered { float pcrA = 1; cout << "Target: "; cin >> pcrA; if (!cin.fail()) // numerical value entered { // The variable water is a special case and is calculated as the "Total volume" - all other volumes float Water = (pcr-(pcrB+pcrM+pcrD+pcrF+pcrR+pcrT+pcrU+pcrA)); cout << "Water: " << Water << endl << endl; // Defines the "number of reactions" variable and prompt the use to asign it a value. float Nr = 1; cout << "Enter number of PCR reactions (+1 to account for pipetting error): "; cin >> Nr; cout << endl; // New variables are defined that are then multiplied by the "number of reactions" // variable and the corresponding PCR variable. // This produces the PCR reagent variable values for a "PCR mastermix". float Tpcr = Nr*pcr; float TpcrB = Nr*pcrB; float TpcrM = Nr*pcrM; float TpcrD = Nr*pcrD; float TpcrF = Nr*pcrF; float TpcrR = Nr*pcrR; float TpcrT = Nr*pcrT; float TpcrA = Nr*pcrA; float TWater = Nr*Water; // The orginal PCR reagent variables and the new variables (multiplied by the "number of reactions" variable. // This produces a list of PCR reagents and their corresponding volumes (in microlitres) // for a single PCR reaction and a PCR reaction mastermix cout << endl; cout << "Calculating mastermix..." << endl << endl; cout << "PCR x" << Nr << endl << endl; cout << "Water: " << TWater << endl; cout << "10X: " << TpcrB << endl; cout << "MgCl2: " << TpcrM << endl; cout << "dNTPS: " << TpcrD << endl; cout << "Forward: " << TpcrF << endl; cout << "Reverse: " << TpcrR << endl; cout << "Taq: " << TpcrT << endl; cout << "Total Vol: " << Tpcr << endl; cout << endl << endl; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; } else { cerr << "ERROR - invalid input" << endl; cin.clear(); // Clear bad input char BadInput[5]; // Clear up to 5 characters cin >> BadInput; ReturnCode = 1; }; cout << "Goodluck" << endl << endl; return 0; }