elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: BLACK FRIDAY en CiudadWireless!! Útimas unidades de ReadyNAS de Netgear


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderadores: Littlehorse, Eleкtro)
| | |-+  Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..  (Leído 3,516 veces)
nitr0us

Desconectado Desconectado

Mensajes: 206


#rm -fr /


Ver Perfil WWW
Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« en: 29 Enero 2004, 07:38 »

Buenas, tengo el programa el cual le meto parámetros desde la shell:

./programa -d 1234

como ven en los parámetros tenemos a -d como argv[1] y a 1234 en argv[2], pero 1234 es una CADENA, no un entero o.k.

Lo que necesito hacer es separar esos numeros, para poder, digamos, necesito que se multipliquen entre si... entonces al hacer
./programa -d 1234    al dar enter aparezca  24.. o sea, se multiplican entre si.

El problema esta en como paso un array de caracteres a uno de enteros, por que al pasarlo por la funcion atoi():

x=atoi(argv[2]) /*x valerá 1234 (mil doscientos treinta y cuatro) y lo que quiero es que sea....
x[1]=1
x[2]=2
x[3]=3...
y ya teniendo esto, poder hacer mis operaciones....

me han dicho que debo declarar a argv como integer en la funcion main() asi:

int main(int argc, int **argv) .. pero como recuerdan, ay un parámetro también que es string.... el argv[1] que es    "-d".. y puies, esto no sería compatible con un integer.

Alguna sugerencia o funcion??

salu2


En línea

zheo


Desconectado Desconectado

Mensajes: 707



Ver Perfil
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #1 en: 29 Enero 2004, 08:33 »

argv NO puedes declararlo como entero. Lo que tienes que hacer es pasar el string que contiene los números a un número entero, con una función por ejemplo atoi(), y luego hacer cálculos con el número.

Un saludo.


En línea

Sólo hay 10 tipos de personas: las que saben binario y las que no.

¿Quieres programar un videojuego? Si quieres unirte pulsa aqui
shoulck

Desconectado Desconectado

Mensajes: 120


www.elcracker.com


Ver Perfil WWW
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #2 en: 29 Enero 2004, 18:39 »

ola:

int aux[4];
char *punt;

punt = argv[1];

for (int i =0; i<4; i++)
{
     aux=atoi(*punt);
     punt++;

}

algo asi, asi tentras cada uno de los numeros en el array de enteros aux  ;D

ShoulcK
En línea

zheo


Desconectado Desconectado

Mensajes: 707



Ver Perfil
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #3 en: 30 Enero 2004, 08:13 »

atoi recibe un char* como parámetro, no un char, es decir que el buble sobra:
Código:
int aux[4];
char *punt;

punt = argv[1];

    aux=atoi(*punt);

y de todas maneras el buble se puede escribir así, que es más legible IMO:
Código:
int aux[4];
char *punt;

punt = argv[1];

for (int i =0; i<4; i++, punt++)
    aux[i]=atoi(*punt);


}

Un saludo.
« Última modificación: 17 Febrero 2004, 08:26 por zheo » En línea

Sólo hay 10 tipos de personas: las que saben binario y las que no.

¿Quieres programar un videojuego? Si quieres unirte pulsa aqui
nitr0us

Desconectado Desconectado

Mensajes: 206


#rm -fr /


Ver Perfil WWW
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #4 en: 17 Febrero 2004, 07:16 »

Ups !

ya lo he probado todo y sigo sin ningún resultado :(

Al compilar usando los codes q me dieron me marca:
"NO SE PUEDE PASAR DE CHAR A CONST" :S exáctamente en esta línea:

Código:
aux[i]=atoi(*punt);

Pero bueno, no se si por ahi tienen alguna idea, por más que le intento no puedo, ya busqué y no encuentro nada sobre esto.

Tal vez se pueda hacer más fácil como dijo zheo, pasar argv a la función atoi(), y una vez teniendo este entero, pues ya pasar este entero a un ARRAY de enteros, por que he intentado declarando :

int x[10];  y luego meterle argv[1] con atoi():
x=atoi(argv[1]); y ME MARCA ERROR !
Entonces, creo que primero debo pasarlo a un entero normal, int x, con atoi() y luego ese enter pasarlo ya a un array de enteros int x[];

Salu2... epsero puedan ayudarme brothers
En línea

zheo


Desconectado Desconectado

Mensajes: 707



Ver Perfil
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #5 en: 17 Febrero 2004, 08:40 »

y digo yo, ¿para qué quieres meter un número en un array de enteros?
Si tienes el número 4567 metido en una cadena, cada cifra ocupa una posición en la cadena. Sin embargo, el mismo número puede ser almacenado en una única variable entera, no se para qué necesitas el array de enteros...

Haz lo que tú mismo has dicho, pasa la cadena a UNA variable entera con atoi
En línea

Sólo hay 10 tipos de personas: las que saben binario y las que no.

¿Quieres programar un videojuego? Si quieres unirte pulsa aqui
nitr0us

Desconectado Desconectado

Mensajes: 206


#rm -fr /


Ver Perfil WWW
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #6 en: 18 Febrero 2004, 06:29 »

Por ejemplo quiero q  al pasar los argumentos:

./programa -d 456

estos, el 4 se multiplike por el 5 y por el 6..... o sea que debe dar el resultado: 120

El problema está enq ue no puedo hacer uso de argv[2][1] me manda un error

o sea...
argv[2][0]=4
argv[2][1]=5
argv[2][2]=6

Dice q hay un error... y pues, al pasarlo con atoi a un integer no puedo hacer esto, y aunke declare ese integer como         int  x[] me manda un error de compatibilidad.

no se que puedo hacer :(........ ya buské por todos lados

salu2
En línea

zheo


Desconectado Desconectado

Mensajes: 707



Ver Perfil
Re:Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
« Respuesta #7 en: 18 Febrero 2004, 17:23 »

Amos a ver:
argv contiene una cadena con cada uno de los argumento que le metes al ejecutable (incluyendo el nombre del propio ejecutable) Cada argumento viene separado por un espacio en blanco con lo cual, en tu ejemplo hay dos argumentos: el nombre del ejecutable (en argv[0]) y el número (en argv[1]) .
Para hacer lo que tú quieres hacer tienes que pasar el número de la cadena a un entero:

Código:
int x = atoi(argv[1]);

y luego ir separando cifra por cifra y hallando el multiplicando de sus cifras:
Código:
int mult = 1;

do {
    mult *= x % 10;

}while ( (x / 10) != 0);

Un saludo

En línea

Sólo hay 10 tipos de personas: las que saben binario y las que no.

¿Quieres programar un videojuego? Si quieres unirte pulsa aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Convertir Array de php a Array de javascript
PHP
WHK 0 1,857 Último mensaje 23 Enero 2012, 18:05
por WHK
¿Como se recogian datos en un array?
.NET
lessionone 2 965 Último mensaje 15 Abril 2012, 12:08
por lessionone
PROBLEMA ENTRE ARRAY MULTIDIMENSIONAL Y FUNCIONES
Programación C/C++
BJM 2 569 Último mensaje 29 Septiembre 2012, 12:47
por leosansan
Problema al mostrar posicion de un array
Programación C/C++
BJM 1 873 Último mensaje 20 Octubre 2012, 05:02
por ecfisa
AYUDA URGENTE TAMANO ARRAY
Foro Libre
pindonga123 1 248 Último mensaje 4 Noviembre 2013, 03:39
por @synthesize
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines