Rodrigo Imai Postado Maio 3, 2011 Denunciar Share Postado Maio 3, 2011 (editado) Pessoal, desculpa a minha ignorancia mas, não estou conseguindo utilizar ponteiro nesse programa, alguém poderia me uma ajuda?Elaborar um programa que leia 12 elementos inteiros de um vetor A. A partir de Aconstruir um vetor B também de 12 elementos da seguinte forma: os elementosímpares de A são multiplicados por 3 enquanto os elementos pares não sãoalterados. Apresente os elementos de B. Todo o acesso aos elementos de vetoresdeve ser feito por meio de ponteiros.#include <stdlib.h> #include <stdio.h> int main(){ int A[12], B[12], c; for(c=1;c<=12;c++){ printf("Digite um numero para A[%d]\n", c); scanf("%d", &A[c]); if(A[c]%2!=0) A[c]=A[c]*3; B[c]=A[c]; } for(c=1;c<=12;c++){ printf("B[%d]=%d\n", c, B[c]);} system("PAUSE"); return 0; }Como utilizar ponteiro nesse programa?Desde já agradeço pela atenção! Editado Maio 3, 2011 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Maio 3, 2011 Denunciar Share Postado Maio 3, 2011 Não entendi o enunciado do exercício, qual a necessidade de ponteiros?Bom, uma forma fácil de transformar para o "formato ponteiro", seria trocar A por *(A + i).O que A[x] significa? Significa que o programa pega o endereço da variável A (como é um array, é o endereço do primeiro elemento), adiciona x ao endereço levando em consideração a aritmética de ponteiros e depois o desreferencia, pegando o valor contido no novo endereço. Passando isso para a forma "normal", ficaria assim:*(A + x)A -> endereço do primeiro elemento do array. se não fosse um array, seria necessário utilizar &A+ x -> soma x ao endereço do A* -> operador desreferência, pega o valor localizado no endereçoIsto o A[X] faz automaticamente para você.Então, você pode trocar tudo que está na forma A[x] para *(A + x). Com uma exceção, porém: se você quiser apenas o endereço, não é mais necessário utilizar &, como é utilizado no scanf. No seu scanf, você deveria trocar &A[c] para apenas A + c.Não irei te dar o código, pois você deve ir fazendo e entendendo, caso tenha mais dúvidas, erros de compilação etc. continue postando neste tópico.Outra coisa (agora referente ao seu código), acho que o enunciado, ao dizer que quer que você faça um novo array B com aqueles parâmetros, significa que você não deve alterar o A como está fazendo e depois associar, mas sim alterar o B. Se A[x] for impar, você está fazendo A[x] *= 3 e depois B[x] = A[x], enquanto o que deveria realmente estar fazendo é: B[x] = A[x] * 3.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Imai Postado Maio 3, 2011 Autor Denunciar Share Postado Maio 3, 2011 (editado) Olá Durub, muito obrigado pela a sua ajuda! Fiquei muito feliz por você ter respondido ao meu tópico! Consegui fazer o programa graças a sua ajuda! o código do programa ficou assim:#include <stdlib.h> #include <stdio.h> int main(){ int A[12], B[12], c; int *p, *q; p=&A[0]; q=&B[0]; for(c=1;c<=12;c++){ printf("Digite um numero para A[%d]\n", c); scanf("%d", &A[c]); if(*(p+c)%2!=0) *(p+c)=*(p+c)*3; *(q+c)=*(p+c); } for(c=1;c<=12;c++){ printf("B[%d]=%d\n", c, B[c]);} system("PAUSE"); return 0; }Muito obrigado pela Ajuda, Um grande abraço! Editado Maio 3, 2011 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Maio 3, 2011 Denunciar Share Postado Maio 3, 2011 Saudações,Só lembrando que vetores tem início na posição zero, portanto será necessário corrigir os "loops" do seu programa.Abraços,William Rodrigues. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rodrigo Imai
Pessoal, desculpa a minha ignorancia mas, não estou conseguindo utilizar ponteiro nesse programa, alguém poderia me uma ajuda?
Elaborar um programa que leia 12 elementos inteiros de um vetor A. A partir de A
construir um vetor B também de 12 elementos da seguinte forma: os elementos
ímpares de A são multiplicados por 3 enquanto os elementos pares não são
alterados. Apresente os elementos de B. Todo o acesso aos elementos de vetores
deve ser feito por meio de ponteiros.
Como utilizar ponteiro nesse programa?
Desde já agradeço pela atenção!
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.