Madeira10 Posted March 13, 2013 at 01:16 AM Report #498981 Posted March 13, 2013 at 01:16 AM (edited) boas, tenho uma lista na main que tem certos elementos do argv e queria que outra funcao alterasse elementos com valor igual a x mas nao estou a conseguir utilizar bem os ponteiros.. o que fiz foi : void substitui(int x , int (*lista)[]){ int i; for(i = 0; i < lista.size(); i++){ if(lista == x) lista = novo; } } int main(int argc, char *argv[]){ int lista[argc]; for(i; i < argc; i++){ if(strcmp(argv , "a")){ lista = atoi(argv[i+1]); substitui( valor1, &lista); } } Edited March 13, 2013 at 09:02 AM by brunoais geshi
carvalho2707 Posted March 13, 2013 at 01:18 AM Report #498982 Posted March 13, 2013 at 01:18 AM a func nao deve receber **lista?
HappyHippyHippo Posted March 13, 2013 at 01:28 AM Report #498983 Posted March 13, 2013 at 01:28 AM eu nem sei por onde pegar ... a primeira coisa a fazer é : 1 - olha para a imensa lista de erros do compilador e lê para a primeira. 2 - corrige e volta a compilar. 3 - volta ao ponto 1 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Madeira10 Posted March 13, 2013 at 01:33 AM Author Report #498984 Posted March 13, 2013 at 01:33 AM eu nao pus o codigo todo, daí ser natural parecer que tenho uma data de erros, mas a unica coisa que quero perceber é como faço para utilizar a lista definida dentro do main no metodo substitui... alterando essa mesma lista...
Marzkor Posted March 13, 2013 at 01:37 AM Report #498985 Posted March 13, 2013 at 01:37 AM (edited) Realmente como Happy disse isto está complicado void substitui(int x , int *lista, int tam){ int novo,i; for(i = 0; i < tam ; i++){ if (lista[i] == x) lista[i] = novo; } o novo esta a fazer o que ? Edited March 13, 2013 at 02:09 AM by Marzkor
HappyHippyHippo Posted March 13, 2013 at 01:38 AM Report #498986 Posted March 13, 2013 at 01:38 AM (edited) void foo(int lista[]) { } void bar() { int lista[20]; foo(lista); } nota que dentro de "foo" não tens maneira de saber o tamanho da lista, normalmente o tamanho é adicionado à lista de parâmetros desta Edited March 13, 2013 at 01:39 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Marzkor Posted March 13, 2013 at 02:03 AM Report #498989 Posted March 13, 2013 at 02:03 AM (edited) Aqui tens um pequeno exemplo, muito estático, acho que já para ter uma ideia como se faz apontadores com arrays(Usei os dois metodos possiveis para indexar os arrays com os apontadores) : #include <stdio.h> void substitui(int x , int * lista, int tam){ int novo,i; //Escreve a Lista Antes de Trocar for (i=0;i<tam;i++){ printf ("%d\n",lista[i]); } //Troca for(i = 0; i <tam ; i++){ if (lista[i] > x) lista[i] = 0; } //Escreve Depois for (i=0;i<tam;i++,lista++){ printf ("%d\n",*lista); } } int main(int argc, char *argv[]){ int i; int lista[10]={0,1,2,3,4,5,6,7,8,9}; //numeros maiores que 5 passa a 0 substitui (5,lista,10); //Espera scanf ("%d"); } Edited March 13, 2013 at 02:09 AM by Marzkor
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now