Which is the most suitable source code? I need a programmer with a large experience on C++ to answer this question.
Code:#include <string> #include <iostream> #include <limits> int main() { using namespace std; const int THISYEAR = 2007; string yourName; int birthYear,bad_input; cout << "What's your name ? " << flush; getline(cin, yourName); do { bad_input=0; cout <<"\nWhat year were you born :" << flush ; cin >> birthYear; if(!cin.good()) { bad_input=1; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),'\n'); cout << "This is not valid value" << endl; } }while(bad_input); cout << "Your name is " << yourName << " and you are approximately " << (THISYEAR-birthYear) << " years old. " << endl; return 0; }
2nd:
Code:#include <string> #include <iostream> #include <limits> int main() { using namespace std; const int THISYEAR = 2007; string yourName; int birthYear; cout << "What's your name ? " << flush; getline(cin, yourName); cout <<"What year were you born? " << flush; while(!(cin>>birthYear)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),'\n'); cout << "No valid value. "; cout <<"What year were you born? " << flush; } cout << "Your name is " << yourName << " and you are approximately " << (THISYEAR-birthYear) << " years old. " << endl; return 0; }
3rd
5thCode:#include <string> #include <iostream> #include <cstdlib> int main() { using namespace std; const int THISYEAR = 2007; string yourName; int birthYear; char temp[100]; cout << "What's your name ? " << flush; getline(cin, yourName); do { cout <<"What year were you born? " << flush; cin.getline(temp,100); birthYear=atoi(temp); if (birthYear==0) { cout << "Invalid valude..." << flush; } } while(birthYear==0); cout << "Your name is " << yourName << " and you are approximately " << (THISYEAR-birthYear) << " years old. " << endl; return 0; }
6thCode:#include <string> #include <iostream> #include <sstream> // for istringstream convert() using namespace std; int main() { const int THISYEAR = 2007; string yourName; int birthYear; string birth; //για το έτος γέννησης cout << "What's your name ? " << flush; getline(cin,yourName); for(;1;) { cout << "What year were you born? "; getline(cin,birth); // μετατροπή string -----> int istringstream convert(birth); // τοποθέτηση στην int birthYear convert >> birthYear; // αν δεν πετύχει σημαίνει ότι δεν είναι αριθμός if(!convert { cout << " This is not valid.Try again...." << endl; continue; } else { break; } } cout << "Your name is " << yourName << " and you are approximately " << (THISYEAR-birthYear) << " years old. " << endl; return 0; }
Thanx for your timeCode:#include <string> #include <iostream> #include <cstdlib> //Για να κάνεις calls σε commands από το prompt π.χ. την PAUSE, επίσης έχει την atoi #pragma argsused //Ελέγχει εαν το string περιέχει αριθμό // εαν ναι επιστρέφει true // αλλιώς επιστρέφει false bool CheckStr(const std::string& s) { for (int i = 0; i < s.length(); i++) { if (!std::isdigit(s[i])) return false; } return true; } //Παίρνει το όνομα void GetName(std::string& yourName) { using namespace std; cout << "What's your name ? " << flush; getline(cin, yourName); } //Παίρνει την ημ. γέννησης void GetBirthdate(std::string& birthYear) { using namespace std; cout << "What year were you born? "; getline(cin, birthYear); } int main(int argc, char* argv[]) { using namespace std; const int THISYEAR = 2007; string yourName; string birthYear; int intYear; bool exit = false; //Μέχρι να δώσει σωστή ημ. ο χρήστης το πρόγραμμα κάνει loop while (!exit) { GetName(yourName); //Παίρνει το όνομα GetBirthdate(birthYear); //Παίρνει την ημ. γέννησης if ( CheckStr(birthYear) ) { //Εάν η ημερομηνία είναι σωστή intYear = atoi(birthYear.c_str() ); //Μετατρέπει το string σε integer cout << "Your name is " << yourName << " and you are approximately " << (THISYEAR-intYear) << " years old. " << endl; exit = true; } else { cerr << "This is not valid." << " Try again..." << endl; } } system("PAUSE"); return 0; }



LinkBack URL
About LinkBacks



CornedBee