consulta pasar una matriz a una funcion

Iniciado por feedf, 29 Junio 2013, 18:29 PM

0 Miembros y 1 Visitante están viendo este tema.

feedf

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 !

amchacon

Se pasan tal cual:

Código (cpp) [Seleccionar]
void Funcion(int matriz[3][3])
{
  // Blablablabla...
}

//...

int main()
{
   int Matriz[3][3];
   
   Funcion(Matriz);

   return 0;
}
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

#2
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:

amchacon

#3
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 (cpp) [Seleccionar]
#include <iostream>

void RellenarVector(int Devolver[10])
{
   for (int i = 0; i < 10; i++)
   {
       cout<<"Introduce el valor para la posicion "<<i<<": ";
       cin>>Devolver[i];
   }

}

int main()
{
   int Vector[10];
   RellenarVector(Vector);

   // Mostrar vector

   for (int i = 0; i < 10; i++)
       cout<<Vector[i]<<endl;

   return 0;
}


Por cierto, menudo cacao tienes con el C y el C++ (printf y scanf son de C, en C++ se usa cout y cin).
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

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

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

amchacon

Cita de: feedf 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

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

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



#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]);
}
}

amchacon

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

¿Para que necesitas el scanf de antes del bucle?
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

#8
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


#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]);
}
}