Dev - C++ - MATRICES parametros por referencia

 
Vista:

MATRICES parametros por referencia

Publicado por Bruno Salazar (2 intervenciones) el 25/02/2010 00:36:40
Miren muchachos, la verdad q me rompi el coco intentando hacer pasar una matriz por referencia...el codigo q tengo es este:
void matriz(int &mat[][], int i,int j)
{
for (int c=0;c<j;c++)
{
for(int c1=0;c1<i;c1++)
{
cout<<"Que valor desea colocar en esta posicion ("<<c1<<","<<c<<")?"<<endl;
cin>>mat[c1][c];
}
}
}
Porfavor un poco de ayuda...q esta mal???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MATRICES parametros por referencia

Publicado por eduardo (26 intervenciones) el 27/02/2010 20:21:17
Hola, creo que andas un poco perdido en con el paso de parámetros.
Cuando una matriz se pasa a una función, ésta SIEMPRE se pasa por REFERENCIA, ya que su nombre es un puntero a su primer elemento o lo que es lo mismo un puntero a la propia matiriz. y no es necesario utilizar el operador de dirección (&) para pasarla por referencia. Ahora el parametro formal, es decir, el parametro que recibe a la matriz debe ir acorde al tipo de matiz que se está pasando.
Si pasas una matriz unidimensional, podrías declararlo como:
- Un puntero
- Un vector delimitado ( matriz unidimensional)
- Un vector no limitado

Si pasas una matriz bidimensional, podrías declararlo como
- Un vector limitado de punteros.
- Una matriz bidimensional limitada (especificar ambos índices)
- Una matriz bidimensional limitada (especificar sólo segundo indice)

Bueno te pongo un ejemplo en C y estúdialo.
Salu2:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h> /* No Ansi C */

#define LIN 100 /* máximo número de lineas de texto */
#define LONG 255 /* máximo número de caracteres por linea de texto */

/* prototipos */
char menu( void );
int readText( char s[][LONG + 1] );
long printText( const char s[][LONG + 1], const int t );

/* la función main() comienza la ejecución del programa */
int main( void )
{
char texto[LIN][LONG + 1] = { "" }; /* iniciar todas las cadenas a nulo */
int t;
char opcion;

/* ciclo de control del programa */
while ( (opcion = menu()) != 'S' ) {
switch ( opcion ) {
case 'N':
t = readText( texto );
break;
case 'M':
printText( texto, t );
break;
default:
printf( "\n Opcion no valida\n\n" );
break;
}
printf( "\n\n\t PULSE UNA TECLA PARA IR AL MENU PRINCIPAL... " );
getch(); /* pausa */
}

return 0; /* indicar terminación exitosa */

} /* fin de main() */

/* IMPLEMENTACIÓN DE FUNCIONES */

/* devuelve la opción elegida por el usuario */
char menu( void )
{
char c;

system( "cls" );
printf( "\n (N) Nuevo texto" );
printf( "\n (M) Mostrar texto" );
printf( "\n (S) Salir\n" );
printf( "\n ?: " );
c = (char)toupper( getch() );
system( "cls" );

return c;
}

/* lee el texto y devuelve el número de lineas ingresadas */
int readText( char s[][LONG + 1] )
{
register int t;

printf( "\n Ingrese su texto (una linea en blanco para terminar):\n\n" );

s[0][0] = '\0'; /* iniciar la primera cadena a nulo */

for ( t = 0; t < LIN; ++t ) {
printf( "%2d: ", t );
gets( &s[t][0] );

/* salir en caso de linea en blanco */
if ( !s[t][0] ) break;
}

return t;
}

/* imprime el texto caracter a caracter, devuelve el número de caracteres impresos */
long printText( const char s[][LONG + 1], const int t )
{
register int i, j;

/* si el primer caracter del texto es nulo */
if ( !s[0][0] ) {
printf( "\n\t No hay texto que mostrar\n" );
return 0;
}

printf( "\n\t Su texto es:\n\t ===========\n\n" );
for ( i = 0; i < t; ++i ) {
printf( "%2d: ", i );
for ( j = 0; s[i][j]; ++j )
printf( "%c", s[i][j] );
printf( "\n" );
}

return i * j;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MATRICES parametros por referencia

Publicado por norma sauceda (1 intervención) el 18/11/2010 18:42:21
te falta declarar c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar