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.