Jump to content

Recommended Posts

Posted (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 by brunoais
geshi
Posted

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

Posted (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 by Marzkor
Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (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 by Marzkor

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.