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 !
Se pasan tal cual:
void Funcion(int matriz[3][3])
{
// Blablablabla...
}
//...
int main()
{
int Matriz[3][3];
Funcion(Matriz);
return 0;
}
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:
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:
#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).
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
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.
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]);
}
}
Si lo pides dos veces se queda con la última, eso es lógico.
¿Para que necesitas el scanf de antes del bucle?
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]);
}
}