1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

duvida de quem nao vai as aulas(C) :S

Discussão em 'Programação' iniciada por Roger_martins, 17 de Março de 2008. (Respostas: 4; Visualizações: 751)

  1. boa tarde pessoal, bem como esta no titulo, aqui vai uma questao estupida......


    o exercicio é bem simples, estupidamente simples.....

    bem la vai:

    #include <stdio.h>
    int main()
    {
    int a, b, total, *p = &a, *q = &b, *r = &total;
    /* completar esta secção */
    }

    O objectivo do programa é pedir dois números inteiros ao utilizador e guardá-los nas variáveis a,
    b. A seguir deve somar esses valores e guardar o resultado na variável total. Finalmente deve
    apresentar ao utilizador o valor da adição. Termine a implementação da função main(), sem
    nunca se referir explicitamente (i.e., pelo seu nome) às variáveis a, b ou total.



    eu tenho :



    #include <stdio.h>
    #include <conio.h>

    int main(){

    int a, b, total, *p = &a, *q = &b, *r = &total;

    printf("insira o valor de a");
    scanf_s("%d", &p);

    printf("insira o valor de b");
    scanf_s("%d", &q);

    //*r=*(q+p); (haha lol)

    printf("%d", r);

    getch();

    }


    pronto, ai esta a estupidez, como é que eu somo o valor *p e *q sem recorer as variaveis que eles apontam, :S



    expliquem me sff

    (sei que n da para adicionar ponteiros)



    desde ja obrigado, vou visitar o forum varias vezes.... infelizmente ^^e vou ver se vou mais as aulas, tou assim um bocadinho arrasca, n fui a aula nenhuma de ponteiros e de estruturas e tenho que fazer o trblho para a clinica que alguns de voces ja devem conhecer, (isec \m/).....






    va, salvem-me XD
     
  2. Baderous

    Baderous Banido

    Código:
    #include <stdio.h>
    int main()
    {
    int a, b, total, *p = &a, *q = &b, *r = &total;
    /* completar esta secção */
    printf("Num: ");
    scanf("%d",p);
    printf("Num:");
    scanf("%d",q);
    *r = *p + *q;
    printf("%d\n",*r);
    return 0;
    }
    O scanf tem 2 parâmetros: o formato do valor que vai ler (%d para inteiro) e o endereço da variável onde o valor lido vai ser armazenado. Normalmente, se quisesses utilizar a variável a, farias scanf("%d",&a). Como neste caso não podes recorrer a essa variável tens de arranjar forma de saber qual o seu endereço. A forma que o professor te arranjou foi fornecer-te um apontador (p) que contém o endereço da variável a (*p=&a). E o mesmo se passa para a variável b. E são esses apontadores (p e q) que tens de passar ao scanf na leitura dos 2 valores.
    Para calcular o resultado foi-te dado também um apontador para a variável total. Para colocares o valor do resultado nessa variável, tens de acedê-la através da variável r (que é um apontador para a variável total). Para aceder tens de colocar um asterisco antes do nome. O mesmo se passa para acederes aos valores que já guardaste anteriormente nas variáveis a e b, as quais são precisas para a soma (para acederes aos valores contidos nestas variáveis tens de usar os apontadores que contém o seu endereço, colocando o tal asterisco antes do nome da variável).
     

  3. sim eu sei isso tudo mas:


    *r = *p + *q;

    impossivel fazer, n podes somar pointers....n faz sentido essa linha, e o compilador passa-se logo.....

    tipo essa cena é que me chateia....:s
     
  4. Baderous

    Baderous Banido

    Não estás a somar os endereços das variáveis apontadas pelos apontadores, estás a somar os valores que essas variáveis têm. E o compilador não se passa nada que eu testei.
     

  5. weird, ja tentei assim, e o compilador morreu, vou testar


    brb

    tinhas razao

    obg
     
    Última edição pelo moderador: 19 de Março de 2008

Partilhar esta Página