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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  consulta pasar una matriz a una funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: consulta pasar una matriz a una funcion  (Leído 4,314 veces)
feedf

Desconectado Desconectado

Mensajes: 46


Ver Perfil
consulta pasar una matriz a una funcion
« en: 29 Junio 2013, 18:29 pm »

buenos dias gente, tengo una consulta tengo una funcion que carga datos
y tengo q pasar de esa funcion tres matrices distintas a otras tres funcion que son las que van a mostrar/laburar con los datos

me podria decir como hacer para pasar esas tres matrices a las tres funciones?
espero no complicarlos muchos
gracias !


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #1 en: 29 Junio 2013, 18:45 pm »

Se pasan tal cual:

Código
  1. void Funcion(int matriz[3][3])
  2. {
  3.  // Blablablabla...
  4. }
  5.  
  6. //...
  7.  
  8. int main()
  9. {
  10.   int Matriz[3][3];
  11.  
  12.   Funcion(Matriz);
  13.  
  14.   return 0;
  15. }


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
feedf

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #2 en: 29 Junio 2013, 19:53 pm »

Código:
muchas gracias por la respuesta 

tengo otra consulta te muestro mi codigo asi soy mas explicito
 #include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>


int menup(int);
void datos(float, float tot[20]);
void opc1(float tot[20]);

void opc1(float tot[20])
{
int i;
i=0;

for(i=1;i<=3;i++)
{
printf("%f",tot[i]);
}
}







void datos(float tot[20])
{
int i,nc,ng,n;
float cl,ce,vdist[20],imp,subtot;

char vnom[20][30];
i=0;
n=0;

printf("LOTE NUMERO UNO DE DATOS A CARGAR\n\n");
for(i=1;i<=3;i++)
{
do
{
printf("ingrese el numero de centro");
scanf("%d",&nc);
}while((nc<=0)||(nc>=21));

printf("ingrese el nombre");
scanf("%s",&vnom[nc]);

printf("ingrese la distancia");
scanf("%d",&vdist[nc]);
}

system("cls");
printf("LOTE NUMERO DOS DE DATOS A CARGAR\n\n");

do
{
printf("ingrese el numero de centro");
scanf("%d",&nc);
}while((nc<=0)||(nc>=21));


while(nc!=0)
{
do
{
printf("ingrese el numero de gaseosa");
scanf("%d",&ng);
}while((ng<=0)||(ng>=6));

do
{
printf("ingrese la cantidad embotellada");
scanf("%d",&ce);
}while(ce<=0);

do
{
printf("ingrese el costo del liquido");
scanf("%d",&cl);
}while(cl<=0);

do
{
printf("ingrese el numero de centro");
scanf("%d",&nc);
}while(nc>=21);



imp=(ce*0.15)+(ce*0.10); /* D */
subtot=ce*cl+imp;
tot[nc]=subtot;






}




}

int menup(int)
{
     int opc;
    
    
     printf("\nopcion 0\n");
     printf("opcion 1 \n");
     printf("opcion 2\n");
     printf("opcion 3\n");
     printf("opcion 4\n");
    
     printf("ingrese la opcion");
     scanf("%d",&opc);
     return opc;
     }
        


int main()
{
char user[11],pass[11];
int a,b,opc,pr,n,z,j,validadoropc0;
float g,h,tot[20];
validadoropc0=0;


n=0;

while(opc!=10)
{
    
    opc=menup(a);
    switch(opc)
    {
    case 0:
    validadoropc0=validadoropc0+1;

    if(validadoropc0>=2)
     {
     printf("usted no puede volver a cargar los datos");
     break;
     }
    else
    {
    datos(tot);
    }
    break;
    case 1:
    if(validadoropc0==0)
    {
     printf("primero carge datos");
     break;
     }
     else
     {
        opc1(tot);
     }
    
    break;
    
case 2:
    if(validadoropc0==0)
    {
     printf("primero carge datos");
     break;
     }
     else
     {
         printf("funcion opcion 2");
     }
break;
    
case 3:
    if(validadoropc0==0)
    {
     printf("primero carge datos");
     break;
     }
     else
     {
         printf("funcion opcion 3");
     }
break;
    
case 4:
    if(validadoropc0==0)
    {
     printf("primero carge datos");
     break;
     }
     else
     {
         printf("funcion opcion 4");
     }
break;
    }







}

printf("la opcion elejida es %d ",opc);


printf("\n programa\n");
system("pause");



}






lo que tengo que hacer es que la funcion datos que se activa cuando pongo 0 me devuelva el vector tot[20] para poder cargarlo en otra funcion que se llame opc1(esta funcion muestra el vector), y poner esta funcion en el case 1 del switch del main

la verdad que se me hizo un lio terrible si me podrias guiar un poco te lo voy a super agradecer

edit lo arregle masomenos como entendi que se hace pero al cargar todos los datos y poner opcion 1 me muestra los 3 primeros lugares del vector en 0
por que no se carga :( ?
D:
« Última modificación: 29 Junio 2013, 20:36 pm por feedf » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #3 en: 29 Junio 2013, 21:20 pm »

Los autores del lenguaje consideraron que esa práctica era un desperdicio de memoria y no era nada práctica. Por lo que no se pueden devolver vectores de forma directa.

¿Conoces el paso por referencia? Los vectores siempre se pasan por referencia. Prueba este ejemplo:

Código
  1. #include <iostream>
  2.  
  3. void RellenarVector(int Devolver[10])
  4. {
  5.    for (int i = 0; i < 10; i++)
  6.    {
  7.        cout<<"Introduce el valor para la posicion "<<i<<": ";
  8.        cin>>Devolver[i];
  9.    }
  10.  
  11. }
  12.  
  13. int main()
  14. {
  15.    int Vector[10];
  16.    RellenarVector(Vector);
  17.  
  18.    // Mostrar vector
  19.  
  20.    for (int i = 0; i < 10; i++)
  21.        cout<<Vector[i]<<endl;
  22.  
  23.    return 0;
  24. }
  25.  

Por cierto, menudo cacao tienes con el C y el C++ (printf y scanf son de C, en C++ se usa cout y cin).
« Última modificación: 29 Junio 2013, 21:21 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
feedf

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #4 en: 29 Junio 2013, 21:45 pm »

muchas gracias!!! ya casi lo estoy sacando, jaj
me enseñaron con printf y scanf y ya me acostumbre :S xd


te hago una consulta muy tonta pero ya no me da el bocho XD

tengo que cargar un vector dependiendo de NC aca esta el codigo

Código:
printf("ingrese el numero de centro");
scanf("%d",&nc);

while(nc!=0)
{
do
{
printf("ingrese el numero de gaseosa");
scanf("%d",&ng);
}while((ng<=0)||(ng>=6));


blabla

tot[nc]=ng (por ejemplo)


el tema es que el primer NC no me lo toma por que  esta afuera del while
y no me acuerdo como hacer para que por ejemplo el primer dato q ingreses sea 1 y en tot[1] me guarde el ng

mil gracias
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #5 en: 29 Junio 2013, 22:20 pm »

muchas gracias!!! ya casi lo estoy sacando, jaj
me enseñaron con printf y scanf y ya me acostumbre :S xd


te hago una consulta muy tonta pero ya no me da el bocho XD

tengo que cargar un vector dependiendo de NC aca esta el codigo

Código:
printf("ingrese el numero de centro");
scanf("%d",&nc);

while(nc!=0)
{
do
{
printf("ingrese el numero de gaseosa");
scanf("%d",&ng);
}while((ng<=0)||(ng>=6));


blabla

tot[nc]=ng (por ejemplo)


el tema es que el primer NC no me lo toma por que  esta afuera del while
y no me acuerdo como hacer para que por ejemplo el primer dato q ingreses sea 1 y en tot[1] me guarde el ng

mil gracias

?

Eso no tiene ningún sentido, revisalo.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
feedf

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #6 en: 29 Junio 2013, 22:51 pm »

como?,

por ejemplo ingreso el centro 1

entra al while me pide ng pongo 3

ingreso otra vez NC 2
y luego ng 4
nc 0 para cerrar el while

y en el tot[nc]=ng

me toma tot[2]=3

cuando deberia quedar tot[1]=3

nose si me explico?

aca hice un codigo completo con lo que planteo


Código:
#include <stdio.h>

int main()

{
int ng,nc,tot[10]={0},i;

i=0;
printf("ingrese el numero de centro");
scanf("%d",&nc);

while(nc!=0)
{

printf("ingrese el numero de gaseosa");
scanf("%d",&ng);

printf("ingrese el numero de centro");
scanf("%d",&nc);

tot[nc]=ng;
}
for(i=1;i<=5;i++)
{

printf("%d \n",tot[i]);
}
}
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #7 en: 29 Junio 2013, 23:32 pm »

Si lo pides dos veces se queda con la última, eso es lógico.

¿Para que necesitas el scanf de antes del bucle?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
feedf

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: consulta pasar una matriz a una funcion
« Respuesta #8 en: 30 Junio 2013, 00:50 am »

claro , entonces como seria el codigo ese bien planteado?,

el primer scanf lo puse para validar que no sea 0 y entonces entrar al bucle,
pero evidentemente hay algo que estoy haciendo mal :P


ah soy un buludo estaba poneidno al revez

asi funciona bien

Código:
#include <stdio.h>



int main()

{
int ng,nc,tot[10]={0},i;

i=0;
printf("ingrese el numero de centro");
scanf("%d",&nc);

while(nc!=0)
{

printf("ingrese el numero de gaseosa");
scanf("%d",&ng);



tot[nc]=ng;

printf("ingrese el numero de centro");
scanf("%d",&nc);

}
for(i=1;i<=5;i++)
{

printf("%d \n",tot[i]);
}
}
« Última modificación: 30 Junio 2013, 00:56 am por feedf » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines