Intervalo de array de impressão. Sobrecarregue o

template de função printArray da Figura 22.1 de modo

que ele use dois outros argumentos inteiros, a saber, int

lowSubscript e int highSubscript. Uma chamada

a essa função imprimirá apenas a parte designada do

array. Valide lowSubscript e highSubscript; se um

deles estiver fora do intervalo ou se highSubscript for

menor ou igual a lowSubscript, a função sobrecarregada

printArray deverá retornar 0; caso contrário,

printArray deverá retornar o número de elementos

impressos. Depois, modifique main para exercitar as

duas versões de printArray sobre os arrays a, b e c

(linhas 22-24 da Figura 22.1). Não se esqueça de testar

todas as capacidades das duas versões de printArray.

Passo 1

Vamos sobrecarregar a função template printArray(). A função de modelo de sobrecarga vai gerar a matriz no intervalo solicitado.

Cabeçalho da função:

template typename T>

int printArray(const T* const array, int count,

int lowSubscript, int highSubscript)

{

...

}

Passo 2

Primeiramente, valide os subscritos passados:

template typename T>

int printArray(const T* const array, int count,

int lowSubscript, int highSubscript)

{

if (lowSubscript lowSubscript >= count

|| highSubscript highSubscript >= count

|| lowSubscript > highSubscript)

return 0;

...

}

Em seguida, itere pelo intervalo indicado, imprimindo os elementos:

template typename T>

int printArray(const T* const array, int count,

int lowSubscript, int highSubscript)

{

...

for (int i = lowSubscript; i highSubscript; i++)

cout array[i]

cout endl;

...

}

Passo 3

Por fim, retorne o número dos números de saída:

template typename T>

int printArray(const T* const array, int count,

int lowSubscript, int highSubscript)

{

...

return highSubscript - lowSubscript + 1;

}

Demonstração

int main()

{

const int aCount = 5;

const int bCount = 7;

const int cCount = 6;

int a[aCount] = { 1, 2, 3, 4, 5 };

double b[bCount] = {

1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7

};

char c[cCount] = "HELLO";

cout endl;

cout Array a contains:" endl;

printArray(a, aCount);

cout Array b contains:" endl;

printArray(b, bCount);

cout Array c contains:" endl;

printArray(c, cCount);

cout Overloaded----" endl;

cout Array a contains:" endl;

printArray(a, aCount, 2, 4);

cout Array b contains:" endl;

printArray(b, bCount, 3, 4);

cout Array c contains:" endl;

printArray(c, cCount, 1, 4);

}

Resposta

Ver o desenvolvimento.