como pasar una matriz a una funcion

Iniciado por hector hernadez, 15 Octubre 2017, 15:14 PM

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

hector hernadez

buenos dias amigos, espero me puedan ayudar con esto,

estoy realizando un programa donde el usuario ingresa el tamaño de columnas y filas de una matriz, luego el usuario carga dicha matriz con números del 1 al 10,  lo que devuelve el programa es una matriz nueva donde si los valores de la matriz que ingreso el usuario son menores o iguales a 5 la matriz nueva convertirá esos valores a 0 de lo contrario los convertirá a 1. para ese calculo hice una función. pero cuando me llevo a las matrices como parámetros me da error. no se si me hice entender pero aquí les pongo el enunciado y el código que levo hasta ahora

/* 10. Dado un arreglo de nxn cuyos elementos son enteros positivos del 1 al 10,
ordénese un nuevo arreglo llamado nuevo, cuyos elementos sean:
 0 si  m(i, j) <= 5 y 1 si  m(i,j) > 5. */
#include<stdio.h>

 void modif_vec(int C,int F,int vec[][C], int nuevo[][C])

 {
   int x,z;

   for (x=0;x<F;x++)
       for (z=0;z<C;z++)
   {
       if (vec[x][z]<=5)
           nuevo[x][z]=0;
       else
           nuevo[x][z]=1;
   }


 }




int main()
{
   int x,z,F,C;


   printf("ingrese el numero de filas para su arreglo \n" );
   scanf("%i",&F);

   printf("ingrese el numero de columnas para su arreglo \n" );
   scanf("%i",&C);

int vec[F][C],nuevo[F][C];

   /* bloque de instrucciones para cargar la matriz */
   printf("ingrese valores para la matriz \n\n\n");
   for (x=0; x<F; x++)
       for (z=0; z<C; z++)
       {
           printf("ingrese valores para la fila numero %i columna %i\n ",x+1,z+1);
           scanf("%i",&vec[x][z]);

           while (vec[x][z] < 1 || vec[x][z] > 10 )
           {
               printf("solo se permiten valores entre 1 y 10 \n vuelva a ingresar el valor nuevamente \n");
               scanf("%i",&vec[x][z]);
           }
       }


       modif_vec(C,F,vec,nuevo);

       printf("el arreglo nuevo es el siguiente \n\n");

       for(x=0;x<F;x++)
       {


       printf("\n\n");
           for(z=0;z<C;z++)
           printf("%i  ",nuevo[x][z]);

       }

   return 0;
}


 

estos son los errores que manda

||=== Build file: "no target" in "no project" (compiler: unknown) ===|
E:\taller de arreglos\ejer10\ejercicio 10.cpp|7|error: use of parameter outside function body before ']' token|
E:\taller de arreglos\ejer10\ejercicio 10.cpp|7|error: expected ')' before ',' token|
E:\taller de arreglos\ejer10\ejercicio 10.cpp|7|error: expected unqualified-id before 'int'|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



muchas gracias de antemano  ;D ;D


· Los códigos deben ir en etiquetas GeSHi
· No hagas doble post
>aquí las reglas del foro
-Engel Lex

Gallu

A mi me da que lo que tienes son errores de sintáxis, fíjate que en la declaración de la función modif_vec los vectores que pasas tienen la letra C, no soy un experto en este lenguaje pero creo que es incorrecto.

Échale un ojo a lo siguiente:

https://www.tutorialspoint.com/cprogramming/c_passing_arrays_to_functions.htm

Saludos
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

engel lex

Citarerror: use of parameter outside function body before ']'

Error: Eso de parametros fuera del cuerpo de la funcion, antes de "]"

es decir, el cuerpo de la función (donde los parámetros son validos) empieza en "{" y tu estás intentando usa C que es un parámetro, antes de el "{"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.