Jump to content

Recommended Posts

Posted

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ê?

Posted

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

Proud LEIC-A@IST student!

Posted

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...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.