Autor
|
Tema: Programa con funciones en funcion de una opcion (Leído 4,783 veces)
|
muymuyperdido
Desconectado
Mensajes: 45
|
Estoy en inicios de C, trabajando con funciones e intento un programa que yo introduzco una matriz bidimensional y una opcion en forma de caracter, y segun este sea el programa hace una funcion u otra, lo he planteado asi pero no compila y no veo el error
#include <stdio.h> #define FIL 2 #define COL 3 void sumaescalar (int [FIL][COL]); void multescalar (int [FIL][COL]); int media (int [FIL][COL]); int main (void){ char o; int v[FIL][COL],i,j; for (i=0; i<FIL;i++){ for (j=0;j<COL;j++){ printf("Introduce el elemento [%d,%d]", i,j); scanf("%d",&v[j]);}} printf("Introduce la opción, s sumar, m multiplicar y a media"); scanf("%c",&o); switch(o){ case 's': sumaescalar(v); break; case 'm': multescalar (v); break; case 'a': printf ("La media es media=media(v)"); break; default :printf ("Opcion no valida");} } void sumaescalar (int [FIL][COL]){ int suma[FIL][COL],v[FIL][COL], n,i,j; printf("Introduce el escalar a sumar"); scanf("%d",&n); for (i=0; i<FIL;i++){ for (j=0;j<COL;j++){ suma[j]=v[j]+n;}}} void multescalar (int [FIL][COL]){ int m[FIL][COL],v[FIL][COL], n,i,j; printf("Introduce el escalar a multiplicar"); scanf("%d",&n); for (i=0; i<FIL;i++){ for (j=0;j<COL;j++){ m[j]=v[j]*n;}}} int media (int [FIL][COL]){ int suma,v[FIL][COL],i,j,media; for (i=0; i<FIL;i++){ for (j=0;j<COL;j++){ suma=suma+v[j];}} media=suma/(FIL*COL); return media; }
|
|
« Última modificación: 24 Noviembre 2012, 20:46 pm por muymuyperdido »
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
¿Podrías poner el mensaje del compilador?
Por lo rápido que lo vi, te falta declarar las variables "i" y "j" que usas en los for.
Otra cosa, ¿Podrías usar las etiquetas GeSHi para postear código? Así es más legible.
|
|
|
En línea
|
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
He modificado el mensaje original con algunos cambios y me quita varios errores. No se como poner lo del Gehsi, lo siento, no se como funciona esto muy bien aun. El error me da en cada funcion "parameter name omitted" Gracias por la ayuda
|
|
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Ahh, es que estás declarando un vector en CADA UNA de las funciones como variable local! No le pusiste nombre al parámetro en cada función, fijate que tenés "int [FIL][COL] como parámetro y jamás le pusiste un nombre el cual usar dentro de la función. En realidad la función quedaría: int media (int v [FIL][COL]){ int suma,i,j,media; for (i=0; i<FIL;i++){ for (j=0;j<COL;j++){ suma=suma+v[j];}} media=suma/(FIL*COL); return media; }
Es decir, incluir el nombre que usas en la función para ese vector (en tu caso "v" en la declaración de la función y en su definición y borrar la variable local "v[FIL][COL]". Te recomiendo leer un buen libro de programación. El Lenguaje de Programación C de Kernighan y Ritchie es excelente.
|
|
|
En línea
|
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
¡Gracias! Ahora me compila, pero, Leo el vector por teclado Imprime el mensaje de elegir la opcion y cuando la escribo se me cierra el programa. (Al compilar no da errores, asi que si que no tengo ni idea)
|
|
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Eso no está del todo bien. Para leer el valor v [j] por pantalla deberías hacer:
PD: BTW, para usar las etiquetas GeSHi, lo que debes hacer es, al momento de estar en la pantalla de "publicar respuesta", tenés que seleccionar el código correspondiente, y seleccionar del formulario de arriba a la derecha de este cuadro de texto, donde dice GeSHi, el lenguaje correspondiente. A la derecha de todas las opciones de formato y arriba de "Cambiar Color"
|
|
|
En línea
|
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
Ya he arreglado ese problema, la suma y la multiplicacion funcionan, pero la media me da un valor que supongo basura pero no entiendo porque.
|
|
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Tu tienes esto: suma=suma+v[j];
En realidad, ¿no deberías hacer lo siguente? suma = suma + v[i][j];
|
|
|
En línea
|
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
Cambié y sigue sin salirme, me sale un numero enorme que no es ni de lejos el resultado real :| pero gracias de todos modos!!
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Cambié y sigue sin salirme, me sale un numero enorme que no es ni de lejos el resultado real : ¿Has probado a inicializar suma?, es decir: int suma=0;
Si no lo haces la variable suma toma inicialmente un valor basura.Saluditos!. ... y mira los mensajes que te llegan. P.D: Cuando vayas a poner un código, previamente te vas a donde pone GesHi y elijes C++, y en medio de las etiquetas que aparecen pegas tu código. Saluditos!.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funciones de un programa
Programación Visual Basic
|
_teiki
|
1
|
1,208
|
25 Mayo 2006, 04:10 am
por _Sergi_
|
|
|
Ayuda con funcion de libreria de funciones u.u
Scripting
|
FranciskoAsdf
|
0
|
2,406
|
9 Septiembre 2008, 04:15 am
por FranciskoAsdf
|
|
|
como poner la opcion de ayuda a mi programa en vb 2008 ?¿
.NET (C#, VB.NET, ASP)
|
linux1
|
6
|
8,702
|
23 Julio 2010, 22:00 pm
por 43H4FH44H45H4CH49H56H45H
|
|
|
S.O.S a todos los programadores de C sharp programa que gener un menu opcion
.NET (C#, VB.NET, ASP)
|
david_quiroz19
|
2
|
3,463
|
13 Noviembre 2011, 22:13 pm
por WHK
|
|
|
Problema con funciones en c++. No se como declarar la siguiente funcion
Programación C/C++
|
JCMARTZ
|
1
|
1,742
|
7 Noviembre 2014, 00:36 am
por someRandomCode
|
|