Das Ziel hier ist es, 1 Zahl von stdin und dann eine Reihe von Zahlen zu lesen und dann zu überprüfen, ob die beiden eine Bijektion sind. Wenn ich es richtig verstanden habe, bedeutet das, dass die erste Zahl in der Menge der Zahlen sein muss und dass es keine doppelten Zahlen in der Menge geben darf.Lesen von stdin und vergleichen Zahlen in C
Probeneingang
3 1 2 3
Beispielausgabe
YES
Probeneingang
5 2 3 4 5 2
Beispielausgabe
NO
Mein Eingang
3
1 2 3
Meine Ausgabe
NO
Es scheint, dass mein Fehler fr kommt om mein Array, das nach Duplikaten sucht. Es wird immer checkDups
bis 1. Dieses Stück Code einstellen:
for(x=0; x < 20; x++) {
if(n == numbers[x]) checkNums = 1;
for(y=0; y < 20; y++) {
if(x != y && numbers[x] == numbers[y]) {
checkDups = 1;
}
}
}
vollständigen Code
int n;
int numbers[21];
int i = 0;
int x = 0;
int y = 0;
int checkDups = 0;
int checkNums = 0;
scanf("%d", &n);
while(i < 20 && scanf("%d", &numbers[i]) == 1) i++;
for(x=0; x < 20; x++) {
if(n == numbers[x]) checkNums = 1;
for(y=0; y < 20; y++) {
if(x != y && numbers[x] == numbers[y]) {
checkDups = 1;
}
}
}
if(checkNums == 1 && checkDups == 0) printf("YES");
else printf("NO");
Schreiben Sie nicht Code, der schwer zu lesen ist, 'for (i = 0; ((i 20 <) && (scanf ("% d", & Zahlen [i])); ++ i) 'ist viel besser lesbar. Und eine Zeile' if'-Anweisungen fügen dem Code nichts hinzu, sind aber schwierig zu lesen.Verwenden Sie auch konsistente Leerstellen. –
@iharob danke. Wird überarbeitet. Hast du andere Fehler entdeckt? – Adjit
Das sind keine Fehler, aber gut lesbar und schönen Code ist ein guter Anfang, um irgendwelche zu finden. –