저는 과제를 수행하고 있습니다. 교수는 제공된 코드가 아닌 다른 코드를 삽입하기를 원하지 않습니다.이 의사 코드를 잘못 해석 했습니까?
내가하는 일에 대한 간략한 설명. 나는 정수의 동적 배열을 만들고 있는데, 순서대로 (가장 낮은 것부터 가장 큰 것까지) 순서대로 삽입해야한다. 여기
그가 제공하는 의사 코드이다 :배열 [I]를 NEWVALUE 대한 잘못된 스포트for (i = valueNum - 1; array[i] is the wrong spot for newValue; --i) array[i] = array[i-1]
:
그는 또한이 정보를 포함(i > 0) AND (value at array[i-1] is greater than newValue)
은
자신을 설득해야합니다. 상기 의사 코드는 저장 될 새로운 값이 # 1 값인 경우, 저장 될 새로운 값이 가장 높은 기존 값보다 큰 경우 또는 동일한 경우에 적용 가능하다 (즉, 또한 커버한다). 저장 될 새로운 값이 가장 낮은 기존 값보다 작거나 같은 경우.
그럼, 꽤 간단합니다.
void IntArray::insert(int nInt)
{
/* check if resize is needed */
if(mySize == capacity)
{
int newCapacity = capacity * 1.5;
if(newCapacity == capacity)
newCapacity = capacity + 1;
capacity = newCapacity;
}
/* here is where my mistake was */
int i;
mySize++;
for(i = mySize -1; i > 0 && data[i-1] > nInt; --i)
{
data[i] = data[i - 1];
}
data[i] = nInt;
}
제대로 의사 코드를 다음과 같이 보이지만, mySize
는 0 또는 1 누군가가 올바른 방향으로 날 지점 수 경우 이제까지 일 것이다 그것은 아닌 것 같아 : 나는 그것을 시도했다? 다양한 의견에
0 또는 1에서 mySize로 실행 해 보았습니까? 무슨 일이야? –
스토리지를 변경하지 않고 '용량'만 변경하면 도움이되지 않습니다. 할당 할 필요가 없습니까? 또한 실제로 새 값을 저장하지 않습니다. –
@DamienBlack 조건문을 만족하지 않기 때문에 단순히 루프에 들어 가지 않습니다. – Bobbin4Apples