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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa con funciones en funcion de una opcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa con funciones en funcion de una opcion  (Leído 4,487 veces)
muymuyperdido

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Programa con funciones en funcion de una opcion
« en: 24 Noviembre 2012, 20:29 pm »

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 Desconectado

Mensajes: 375


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #1 en: 24 Noviembre 2012, 20:41 pm »

¿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 Desconectado

Mensajes: 45


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #2 en: 24 Noviembre 2012, 20:47 pm »

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 Desconectado

Mensajes: 375


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #3 en: 24 Noviembre 2012, 21:08 pm »

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:

Código
  1. int media (int v [FIL][COL]){
  2.      int suma,i,j,media;
  3.      for (i=0; i<FIL;i++){
  4.                    for (j=0;j<COL;j++){
  5.                        suma=suma+v[j];}}
  6.      media=suma/(FIL*COL);
  7.      return media;
  8.      }

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 Desconectado

Mensajes: 45


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #4 en: 24 Noviembre 2012, 21:18 pm »

¡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 Desconectado

Mensajes: 375


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #5 en: 24 Noviembre 2012, 21:22 pm »

Código
  1. scanf("%d",&v[j]);

Eso no está del todo bien. Para leer el valor v[j] por pantalla deberías hacer:

Código
  1. scanf("%d",v[i][j]);

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 Desconectado

Mensajes: 45


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #6 en: 24 Noviembre 2012, 21:33 pm »

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 Desconectado

Mensajes: 375


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #7 en: 24 Noviembre 2012, 21:41 pm »

Tu tienes esto:

Código
  1. suma=suma+v[j];

En realidad, ¿no deberías hacer lo siguente?

Código
  1. suma = suma + v[i][j];
En línea

muymuyperdido

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #8 en: 24 Noviembre 2012, 21:45 pm »

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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Programa con funciones en funcion de una opcion
« Respuesta #9 en: 24 Noviembre 2012, 22:25 pm »

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:
Código
  1. 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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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