elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
30 Agosto 2008, 14:29  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  incializar un vector con una funciòn.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: incializar un vector con una funciòn.  (Leído 591 veces)
botella

Desconectado Desconectado

Mensajes: 69


Ver Perfil
incializar un vector con una funciòn.
« en: 22 Febrero 2008, 17:50 »

Quiero hacer una funciòn que al ingresarle el nombre de una matriz que en este caso serà un vector, inicialize todas sus pocisiones a 1

for (int i=0; i<dim; i++) vector=0;

esa serìa la lìnea para inicializar,

lo que quiero es que la funciòn me pida la longitud del vector y su nombre algo asì

inivector (matriz, dimension)

teniendo en cuenta que el tamaño de la matriz lo difinirà el usuario durante la ejecuciòn del programa


pude hacer la funciòn pero solo si la matriz està declarada globalmente y para una matriz ùnica, yo quiero que la funciòn sirva para cualquier matriz, y de cualquier tamaño.

graxias
En línea
Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.276


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #1 en: 22 Febrero 2008, 17:52 »

Usa un puntero como parametro del array (matriz).
En línea

be closely tied to
(v.) = estar estrechamente ligado a
Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
botella

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #2 en: 22 Febrero 2008, 18:25 »

gracias, pero realmente no se como hacer lo que decìs, si me pusieras un ejemplo te estarìa eternamente agradecido.
En línea
Karman

Desconectado Desconectado

Mensajes: 216



Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #3 en: 22 Febrero 2008, 19:04 »

mirá... si lo que quieres inicializala vos a mano podés hacer algo como esto:
Código:
int matriz[10];

inivector (matriz, 10);

inivector (int *vec, int dim){
  for (int i=0; i<dim;vec[i]=0,i++);
}
de todas formas, si programas bajo windows ya existen funciones para eso:

ZeroMemory(matriz,sizeof(int)*10);
FillMemory(0,matriz,sizeof(int)*10); <-- habría que ver... no recuerdo el orden de los argumentos

S2
En línea

GroK

Desconectado Desconectado

Mensajes: 573


...I have become comfortably numb...


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #4 en: 22 Febrero 2008, 19:07 »

Que tal este? Esta todo en main pero para que veas:

Código
#include <stdio.h>
 
int main (void)
{
int *vector, tam, i;
printf ("Dimensiones de la matriz: ");
scanf ("%d", &tam);
vector = (int *) malloc (tam * sizeof (int));
for (i = 1; i <= tam; i++)
       {
    vector[i] = 1;
    printf ("%d ", vector[i]);
       }
getchar ();
return 0;
}

Saludos
   
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

Karman

Desconectado Desconectado

Mensajes: 216



Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #5 en: 22 Febrero 2008, 19:12 »

1º el quería una función...
2º en esta línea:

for (i = 1; i <= tam; i++)

no estás definiendo bien el índice del arreglo:
los arreglos empiezan en "0" y terminan en "tam-1"
el código correcto sería:

for (i = 0; i < tam; i++)

S2
En línea

GroK

Desconectado Desconectado

Mensajes: 573


...I have become comfortably numb...


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #6 en: 22 Febrero 2008, 19:25 »

los arreglos empiezan en "0" y terminan en "tam-1"

De acuerdo con eso, pero lo mismo da, porque en mi bucle la condicion se ejecuta desde 1 hasta que "i" sea menor o igual al tamaño, que es lo mismo que decir que empiece en 0 y que llegue hasta tamaño - 1. Ejecutalo y veras.

En cuanto a lo de la funcion, ya le dije que lo puse todo en main, para acabar antes. No creo que sea tan dificil poner casi el mismo codigo en una funcion aparte, no?

Saludos
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.276


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #7 en: 22 Febrero 2008, 19:28 »

ZeroMemory es un macro (FillMemory tambien) a memset que es ANSI C:

ZeroMemory(matriz, sizeof(matriz)); = memset(matriz, 0, sizeof(matriz));

void FillMemory(
  PVOID Destination,
  SIZE_T Length,
  BYTE Fill
);

Tiene razon Karman el primer elemento queda sin inicializar y accedes a un elemento no reservado ... con esto lo podes ver:

printf ("%d - %d\r\n", vector, i);
« Última modificación: 22 Febrero 2008, 19:32 por Eternal Idol » En línea

be closely tied to
(v.) = estar estrechamente ligado a
Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
botella

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #8 en: 22 Febrero 2008, 21:01 »

gracias, los pruebo y aviso

En línea
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #9 en: 22 Febrero 2008, 22:32 »

Buenas. Vamos por partes

De acuerdo con eso, pero lo mismo da porque en mi bucle la condicion se ejecuta desde 1 hasta que "i" sea menor o igual al tamaño, que es lo mismo que decir que empiece en 0 y que llegue hasta tamaño - 1. Ejecutalo y veras.

No da lo mismo ( y deberias re-leer lo que pusiste).

1) Los vectores en C comienzan desde 0 (a diferencia de por ejemplo Pascal donde estos empiezan en el indice 1). Ya esto demuestra que con tu bucle, nunca inicializaras la primera posicion del vector

2) Tratas de escribir fuera del vector. La condicion de tu for (i <= tam) no se hace falsa sino hasta que i sea mayor a tam. Esto implica que 10 se incluye en la iteracion lo que hara que dentro del for exista la siguiente asignacion vector[10] = 1. Y como los vectores comienzan en 0, la ultima posicion valida del vector es tam - 1 (es decir, 9).

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
GroK

Desconectado Desconectado

Mensajes: 573


...I have become comfortably numb...


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #10 en: 23 Febrero 2008, 06:03 »

Esta bien, teneis razon y retiro lo dicho :xD Es la costumbre del pascal...

Saludos

En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

M3LiNdR1

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #11 en: 23 Febrero 2008, 15:10 »

Porq en el main, haceis un return 0?.

Ya se que es una funcion de tipo int, i que siempre tiene que devolver algun valor. Pero cuando yo programo, no le pongo este return 0 en el main.



Gracias.
En línea

Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res...
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #12 en: 23 Febrero 2008, 17:14 »

Buenas

Porq en el main, haceis un return 0?.

Ya se que es una funcion de tipo int, i que siempre tiene que devolver algun valor. Pero cuando yo programo, no le pongo este return 0 en el main.
Mal por ti. Una funcion que tiene un valor de retorno tiene que devolver un valor (para algo esta). Aparte de esto, el return de main se le pasa al SO para que vea como termino el proceso

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
botella

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: incializar un vector con una funciòn.
« Respuesta #13 en: 25 Febrero 2008, 08:33 »

realmente soy muy torpe con esto, no se donde es el problema por que la verdad tendrìa que leer algo sobre vectores:

#include <iostream.h>




int matriz[10];



inivector (int *vec, int dim){
  for (int i=0; i<dim;vec=0,i++);
}


int main ()
{
   
    cout << "Vamos a probar la funciòn que inicializa los vectores" << endl ;
    int dim = 10;
    inivector ( *matriz , dim );
   
    return 0;
}



a continuaciòn los errores del dev

20 C:\Dev-Cpp\fichas\ficha 6 (funciones)\pruebaaas.cpp invalid conversion from `int' to `int*'
20 C:\Dev-Cpp\fichas\ficha 6 (funciones)\pruebaaas.cpp   initializing argument 1 of `int inivector(int*, int)'



tengo que inicializar algo?

còmo hago?

aviso que no tengo idea de vectores, lo ùnico que quiero es hacer una funciòn que inicialice cualquier matriz de cualquier tamaño, esto tampoco tiene nada pràctico pero bue, estoy aprendiendo,

gracias.
« Última modificación: 25 Febrero 2008, 08:42 por botella » En línea
Karman

Desconectado Desconectado

Mensajes: 216



Ver Perfil WWW
Re: incializar un vector con una funciòn.
« Respuesta #14 en: 25 Febrero 2008, 19:57 »

es:

for (int i=0; i<dim;vec[ i ]=0,i++);

S2
En línea

Páginas: [1] 2 Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC