Autor
|
Tema: consulta pasar una matriz a una funcion (Leído 4,314 veces)
|
feedf
Desconectado
Mensajes: 46
|
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
Mensajes: 1.211
|
Se pasan tal cual: void Funcion(int matriz[3][3]) { // Blablablabla... } //... int main() { int Matriz[3][3]; Funcion(Matriz); return 0; }
|
|
|
En línea
|
|
|
|
feedf
Desconectado
Mensajes: 46
|
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
Mensajes: 1.211
|
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).
|
|
« Última modificación: 29 Junio 2013, 21:21 pm por amchacon »
|
En línea
|
|
|
|
feedf
Desconectado
Mensajes: 46
|
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
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
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 whiley 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
|
|
|
|
feedf
Desconectado
Mensajes: 46
|
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]); } }
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
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
|
|
|
|
feedf
Desconectado
Mensajes: 46
|
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 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]); } }
|
|
« Última modificación: 30 Junio 2013, 00:56 am por feedf »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pasar matriz char a una función como referencia
Programación C/C++
|
KISKE
|
2
|
7,732
|
18 Junio 2013, 13:07 pm
por KISKE
|
|
|
Enviar una matriz desde una funcion a la matriz del main
Programación C/C++
|
erest0r
|
3
|
3,976
|
22 Junio 2013, 09:05 am
por leosansan
|
|
|
Pasar solo una columna de una matriz como argumento de una funcion
Programación C/C++
|
Javier_Fig
|
4
|
3,214
|
22 Septiembre 2015, 18:24 pm
por A.I.
|
|
|
como pasar una matriz a una funcion
Programación C/C++
|
hector hernadez
|
2
|
5,910
|
15 Octubre 2017, 22:02 pm
por engel lex
|
|
|
Problema pasar matriz por referencia a una función en C
Programación C/C++
|
juligarc10
|
3
|
4,132
|
27 Septiembre 2020, 23:25 pm
por K-YreX
|
|