문자열이 하나의 문자 만 다른 경우 이 함수를 코딩합니다.이 맞으면 +1을 반환하고 그 이상인 경우 -10을 반환합니다. 1 문자.델파이의 결과 값 논리?
내가 '100'
및 '101'
또는으로 할 때 그냥 '010'
및 '110'
또는 '100'
및 '110'
작동 0과 1을 각각 반환, 좋은 ...주고 예를 들어
그러나 '110'
및 '111'
내가 얻을 결과가 -1 일 때 2! 필자는 데스크탑 테스트를 수행했으며 실수를 볼 수 없습니다.
function combine (m1, m2 : string) : integer;
var
dash : integer;
distinct : integer;
i : integer;
begin
distinct := 0;
dash := -1;
for i := 0 to Length(m1)-1 do
begin
if m1[i] <> m2[i] then
begin
distinct := distinct+1;
dash := i;
if distinct > 1 then
begin
result:= -10;
exit;
end;
end;
end;
result := dash;
end;
난 항상지고있어 동일한 길이 문자열, 내가 잘못 뭐하는 거지 ?
Pfff, 정말 감사합니다. 많은 사람들이 제 질문에 대해 불평 할 것입니다. 그러나 나는 결코 그렇게하지 않은 언어로 코딩하는 것을 서둘러야합니다. 질문이 하나 더 있습니다. 문자열의 0 인덱스에 액세스 할 때 어떤 일이 발생했는지, 왜 예외가 발생하지 않았을까요? – diegoaguilar
나는 그 사람들에 동의한다. 서두르지 마. 시간을내어 도구를 올바르게 배우십시오. –
인덱스 0은 문자열 메타 데이터를 나타냅니다. 그것은 문자열의 참조 횟수, 길이, 코드 페이지 등을 포함하는 블록입니다. 물론 구현 세부 사항이며 인덱스 0에 액세스하면 정의되지 않은 동작이 발생합니다 (해당 용어의 C/C++ 해석을 사용하고 있습니다). 컴파일러 옵션에서 범위 검사를 활성화해야합니다. –