Ich bin neu in diesem Forum und suche Hilfe, wäre für jede Hilfe sehr dankbar! Ich stecke bei dieser Aufgabe für meine Programmiergrundlagen 1-Klasse fest und bin an diesem Punkt verzweifelt, da ich seit Stunden feststecke. Danke.
Hier ist die Eingabeaufforderung: Viele Websites fragen nach Telefonnummern. Das Problem ist, dass es so viele verschiedene Möglichkeiten gibt, eine Telefonnummer darzustellen. Beispiele sind 817-555-1234, 817 555 1234 (c) und (817) 555-1234 x23. Schreiben Sie ein C++-Programm, das eine Zeichenfolge mit einer Telefonnummer in einem beliebigen Format eingibt und im Standardformat ausgibt. Für diese Aufgabe ist das Standardformat (817)555-1234. Ihr C++-Programm soll: 1. einen String mit der Zahl eingeben 2. nur die Ziffern des Eingabestrings in einen anderen String kopieren 3. eine Fehlermeldung ausgeben, wenn der Eingabestring nicht genau 10 Ziffern enthält 4. die Telefonnummer standardmäßig ausgeben Format
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <cctype>
using namespace std;
const int NUM_LENGTH = 10;
string ReadAndValidateUserNumber(string userNumber);
int main()
{
string userNumber;
ReadAndValidateUserNumber(userNumber);
system("PAUSE");
return 0;
}
string ReadAndValidateUserNumber(string userNumber)
{
bool check = false;
while (!check)
{
check = true;
cout << "Please enter a Number: ";
cin >> userNumber;
if (userNumber.length()!= NUM_LENGTH)
cout << "The phone number may contain 10 digits only. \n";
else
{
userNumber.insert(0, "(");
userNumber.insert(4, ")");
userNumber.insert(8, "-");
for (int i = 0; i < userNumber.length(); i++)
{
if (isdigit(userNumber[i]))
{
userNumber = NUM_LENGTH;
}
}
}
if (!check)
{
cout << "Invalid Entry! Please try again." << endl;
}
}
return userNumber;
}
Lösung des Problems
Du scheinst einen Logikfehler zu haben.
bool check = false;
while (!check)
{
check = true;
....
if (!check)
{
cout << "Invalid Entry! Please try again." << endl;
}
}
Sie werden feststellen, dass check nie wieder falsch wird. Daher wird die unterste if-Anweisung niemals ausgeführt und die Schleife wird niemals mehr als einmal durchlaufen, da check immer wahr ist. Sie wollen wahrscheinlich machen
check = true
abhängig von der Eingabe des korrekten Formats.
Keine Kommentare:
Kommentar veröffentlichen