mod 연산자를 사용하여 루프를 반복하는 방법을 이해하려고합니다. defgh
이 끝날 때까지이를 반복 당신이 두 개의 문자열, "abc"
및 "defgh"
, 어떻게 %
abc
을 통해 루프를 사용할 수있는 경우for 루프에서 modulus 사용하기
는 도달? 즉, abc
과 defgh
길이의 mod 관계는 무엇입니까?
저는이 개념을 정말로 이해하지 못합니다.
mod 연산자를 사용하여 루프를 반복하는 방법을 이해하려고합니다. defgh
이 끝날 때까지이를 반복 당신이 두 개의 문자열, "abc"
및 "defgh"
, 어떻게 %
abc
을 통해 루프를 사용할 수있는 경우for 루프에서 modulus 사용하기
는 도달? 즉, abc
과 defgh
길이의 mod 관계는 무엇입니까?
저는이 개념을 정말로 이해하지 못합니다.
심플.
std::string abc("abc");
std::string defgh("defgh");
for (size_t i = 0; i < defgh.length(); ++i)
{
printf("%c", abc[i % abc.length()]);
}
그것은 몰래 오른쪽으로 왼쪽 분할하고, 정수 나머지를 다시 뱉어의 계수 연산자는 무엇을하고 있는지 생각해보십시오.
예 :
우리의 경우0 % 3 == 0
1 % 3 == 1
2 % 3 == 2
3 % 3 == 0
4 % 3 == 1
, 좌측에는 "는 defgh"의 i 번째 위치, 우측은 "ABC"의 길이를 나타내고, 상기 루프 인덱스 내측 결과 "알파벳".
그는 C가 아니라 C + +. –
어쨌든 개념이 변경되는 것 같이; 그는 C로 변환하는 방법을 알아낼 수도 있습니다 ... – dcousens
일반적으로 mod
은 고정 된 범위 내에서 값을 생성하는 데 사용됩니다. 이 경우 "abc"
이외의 위치에 액세스하지 않도록 0에서 strlen("abc")-1
사이의 값을 원하게됩니다.
x % N
은 항상 0
과 N-1
사이의 값을 반환한다는 점을 명심해야합니다. 이 특별한 경우에 우리는 또한 x
을 1로 늘리면 1이 증가한다는 사실을 이용합니다. x % N
도 1 씩 증가합니다.
여기에서 사용하는 모듈러스의 또 다른 중요한 특성은 "롤오버"한다는 사실입니다. x
을 1만큼 증가 시키면 x % N
이 1 씩 증가합니다. N-1
에 도달하면 다음 값은 0
이됩니다.
@ 다니엘의 코드를보십시오. 그것은 C++이지만 개념은 언어에 구애받지 않습니다.
이 숙제입니까? –
정확히 무엇을하려합니까? –
예제를 보여줄 수 있습니까? – Simon