• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tomás Mendes

Aritmética (d)e ponteiros

7 mensagens neste tópico

Boa tarde,

Apreceu-me esta escolha múltipla e eu não consigo chegar à resposta que eles dizem.

A seguinte função recebe um vector a com L elementos, em que cada elemento é um vector de inteiros com dimensão C, e coloca no vector b a soma de valores de cada um dos vectores inteiros (i.e., b[0] tem a soma do vector guardado na posição 0 de a, b[1] tem a soma do vector guardado na posição 1 de a, etc.)

void soma_col(int *a[], int *b, int L, int C)
{
  int i,j;
  for (i = 0; i < L; ++i) b[i] = 0;
  for (i = 0; i < L; ++i)
    for(j = 0; j < C; ++j)
      ***********************
}

Qual das seguintes linhas de código deverá substituir a linha marcada com ** para que a função execute correctamente?

a. b[j];

b. b[j] += a[j][i ];

c. b[i ] += *(*(a+j)+i);

d. b[j] += *(*(a+j)+i);

e. b[j] += *(a+j+i);

Resposta certa é a c.

Alguém me consegue explicar porquê?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais, tu queres é meter esse valor na posição i do vector, uma vez que estás a visualizar a informação referente ao vector na posição i do vector principal.

Quanto ao resto, també acho que faria mais sentido fazer algo do estilo *(*(a+i)+j) e não como lá está...

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou a minha interpretação do enunciado está errada, ou também acho que devia ser *(*(a+i)+j) (que seria equivalente a a).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois... exactamente o que eu pensei.

PS: karva, ou estou enganado ou já vi o teu nick em outro lado qualquer e também vais fazer este teste amanhã...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não estás enganado de todo, também sou caloiro de LEIC, e também vou fazer o teste amanhã. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou a minha interpretação do enunciado está errada, ou também acho que devia ser *(*(a+i)+j) (que seria equivalente a a).

Bem me queria parecer, estava a achar estranho aquilo até porque já tinha feito o esquema e não estava a bater certo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Yep, já confirmei isso, é mesmo gaffe, devia ser *(*(a+i)+j).

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora