Das Programm soll eine Ziffer jeweils einzeln empfangen und diese Ziffer als Index für das Array verwenden, um zu prüfen, ob es wahr ist. Wenn dies der Fall ist, brechen Sie die Schleife ab, und wenn nicht, setzen Sie sie auf "True" und scannen Sie die anderen Ziffern weiter, bis sie die letzte Ziffer erreichen. Es soll nur sagen, ob zu diesem Zeitpunkt eine Ziffer wiederholt wurde oder nicht.Lesen Sie die Ziffern für eine Nummer einzeln und prüfen Sie, ob es sich um Duplikate handelt.
Ich habe diesen Code bisher, aber ich kann es nicht funktionieren. Kann mir jemand helfen? Ich habe bei der Fehlersuche selbst festgestellt, dass ich den Wert der Variablen nach der Ausführung getestet habe, dass manchmal die Ziffern nicht einmal gelesen wurden, nur die erste eingegebene Ziffer wird gelesen.
Hier ist der Code:
#include <stdio.h>
#define true 1
#define false 0
typedef int bool;
int main(void)
{
// Variables to contain the seen digits
bool seendig[10] = { false };
long entered;
int container;
printf("This Program Is Designed To Determine If Any Digits Has Been Repeated!\n Please Enter a Number: ");
scanf("%1d", &entered);
while (entered > 0)
{
container = entered;
if (seendig[container])
break;
seendig[container] = true;
entered /= 10;
}
if (entered > 0)
printf("\nThe Digit Was Repeated\n\n");
else
printf("The Digit Was Not Repeated\n\n");
system("pause");
return 0;
}
'scanf_s ("% 1d", & eingegeben)' soll die ganze Zahl oder eine Ziffer lesen? –
'lange eingegeben;' -> 'int eingegeben;' und das hat viele Probleme. – BLUEPIXY
Beginnen Sie nicht mit 'typedef' eigenen 'bool'. Verwenden Sie den booleschen C-Standardtyp und '#include'. Sidenote (nicht verwandt): 'bool seendig [10] = {false};' funktioniert einfach, hat aber nicht die Semantik, alle Felder auf 'falsch' zu setzen. –
Olaf