Jump to content

valores de ponteiros


suzy
 Share

Recommended Posts

viva!

tou com duvidas em como se obtêm o valor 1 e o valor 0 ?. porque e que me da isso?

#include<stdio.h>
#define L 4
#define C 2


main()
{
int i, a[L][C]={1,1,2,2,3,3,4,4};
int *p = a[3] + 1;
int *q= a[1];
printf(" %d",*p); // da 4
printf(" %d",*q);// 2

while(p>=q){
      if(*p % *q == 0)
     *p=0;
     else
    *p=*q;
     p--;
}
printf(" %d",*p);// da 1 nao sei porque????????????
printf(" %d",*q);// da 0 nao sei porque??????????

}

obrigada

Link to comment
Share on other sites

Se não me enganei, vais chegar ao fim com o array:

1 1 0 0 2 2 0 0

E com p a apontar para a posição a segunda posição, e o q a apontar para a terceira.

Isto porque o p vai percorrer as posições do array desde a última até à segunda, e nas posições onde estava 3 põe o valor apontado por q (2), e nas posições onde estava 2 ou 4, passa-as para 0. O ciclo vai parar quando o p aponta para uma posição (de memória) inferior ao q (como o q aponta para a terceira posição, o p pára quando apontar para a 2ª).

Dava jeito indicares qual é o objectivo da aplicação, para saber o que é que poderá estar mal.

Link to comment
Share on other sites

Vou tentar mostrar 2 pormenores interessantes no teu código que podem fazer com que não percebas o resultado final....

while(p>=q){

O que estás a comparar aqui são os endereços, e não os valores existentes naqueles endereços,ou seja  p é diferente de *p.

Um outro pormenor interessante é :

if(*p % *q == 0)
    *p=0;
else
    *p=*q;
p--;

O else não possui chavetas,  tanto no if como no else irá sempre decrementar p.

Espero que isto te ajude... 

Um blog :Sem Cafeína

Link to comment
Share on other sites

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
 Share

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