J'ai besoin d'aide dans ce problème Turbo Pascal:travail à domicile Turbo-pascals
Deux entiers sont dits frères si chaque chiffre de N1 apparaît au moins une fois N2 et vice versa. Exemples: si N1 = 1164 et N2 = 614 le programme affichera N1 et N2 sont frères, si N1 = 504 et N2 = 455 le programme affichera N1 et N2 ne sont pas frères
Ma question est: Comment vérifier si les 2 entiers sont frères ou pas? Ceci est mon travail:
function brother(n1, n2: integer): boolean;
var
test: boolean;
ch1, ch2: string;
begin
chr(n1, ch1);
chr(n2, ch2);
i := 0;
repeat
j := 0;
i := i + 1;
test := false;
repeat
j := j + 1;
if ch1[i] = ch2[j] then
test := true;
until (test = true) or (j = length(ch2));
until (test = false) or (i = length(ch1));
brother := test;
end;
quand je lance cela, il imprime toujours (« entiers sont frères »), même quand je mets 504 et 455, je veux savoir où l'erreur est.
Voici un peu de pseudo code pour vous! ... Je pense qu'une partie de votre problème provient de votre fonction étant un peu confus ... essayez ceci: faites une boucle (boucle à travers chaque caractère de str1) qui utilise une fonction lui-même est passé un char à la fois (1 char à la fois de str1), et voit si le char existe dans une chaîne donnée (str2), incrémente un compteur 'oui' ou si c'est un 'non' à tout moment puis arrête tous les tests. Une fois que vous avez atteint la fin de la chaîne donnée (str2) et avez un nombre de yes = la longueur de la chaîne donnée = string est brother. –
Votre code semble erroné. 'chr' est une pseudo-fonction qui convertit un' integer' en un seul 'char'. Je suppose que dans votre code réel, vous avez quelque chose comme 'str (n1, ch1);'. Vous aviez aussi '(n1, n2: entiers)' comme votre liste de paramètres (j'ai corrigé cela), et ce n'est pas du code compilable non plus. –