[ Foro de C# ]

Programa de matrices

21-Aug-2014 07:41
Invitado (Peter)
5 Respuestas

Hola buenas noches, en verdad estoy bastante novato no le entiendo a muchas cosas sobre los identificadores y la sintaxis eh leído varios tutos pero no se ni como definir una matriz de 5x5, soy fan de las compus pero la verdad necesito explicación personalizada dado a que estudio en linea y muchísimas cosas no las conozco, por mas que trato dont understand, ayúdenme porfa, yo solo sinceramente no creo resolver el problema, entiendo que la idea es aprender pero necesito ayuda personalizada y a tal grado que seria casi casi con manzanas para poder entender a fondo como se declaran las variables y como definir la sintaxis, soy de los que necesita explicación paso a paso, sorry ese es el punto, con gusto me comprometo ha aprender de alguien que desee ayudarme.

Aquí les dejo la info sobre el programa a resolver:
Defina una matriz de longitud 5x5, cuyo tipo de dato permita la asignación del carácter asterisco (*).
El programa debe solicitar al usuario que capture las coordenadas en donde desea insertar un asterisco, por ejemplo: renglón 1, columna 2.
El programa asignará, en las coordenadas capturadas por el usuario, un símbolo de asterisco.
Debe incluirse una pregunta dirigida al usuario para determinar si desea continuar con la captura de las coordenadas, en caso de no seguir con ello el programa detendrá este proceso.
Al finalizar la captura, el programa deberá imprimir la matriz, esté completa o no, en el siguiente formato:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *


Saludos cordiales a todos, que estén bien y dios los bendiga.


21-Aug-2014 13:06
Nacho Cabanes (+31)

Comienza por leer esto, y así podrás preguntar dudas más concretas sobre detalles puntuales, en vez de esperar que alguien haga todo tu programa:

http://www.nachocabanes.com/csharp/curso/csharp04b.php


24-Aug-2014 01:10
Invitado (Peter)

Hola Les presento el avance, pidiendoles el gran favor de que me proporcionen sugerencias para mejorarlo, ya lo eche andar pero algo me esta fallando, suplico ayuda:

 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] tabla;
            tabla = new int[5, 5]
            {
               {1,2,3,4,5},
               {6,7,8,9,10,},
               {11,12,13,14,15},
               {16,17,18,19,20},
               {21,22,23,24,25}
            };
 
            {
                LlenarMatriz (tabla);
                Console.ReadKey();
            };
 
            Console.WriteLine("Capture las coordenadas donde se insertará un asterisco");
            Console.ReadKey();
        }
 
        public static void LlenarMatriz(int[,] ptabla)
            {
                int fil=0,col=0,sum=0;
                col=20;
                for(int c=0;c<5;c++)
            {
                        fil=10;
                        for(int f=0;f<5;f++)
                        {
                              Console.SetCursorPosition(col,fil);
                              ptabla[c,f]=Convert.ToInt16(Console.ReadLine());
                              fil=fil+1;
                              sum=sum+ptabla[c,f];
                        }
                        col=col+5;
            }
            Console.SetCursorPosition(20,15);
            Console.WriteLine("Acumulado Matriz={0}",sum);
            }//Cierra Método
 




       


24-Aug-2014 11:05
Nacho Cabanes (+31)

¿Qué problemas tienes? Yo veo algunas cosas que no me gustan, pero no sé si son parte de tus problemas o simplemente los errores naturales de cuando uno empieza y que a veces no interfieren con el resultado final:

- Das valores iniciales a una matriz, pero luego los vas a destruir.

- No entiendo por qué usas una matriz de enteros si lo que vas a guardar son asteriscos.

- El bloque "LlenarMatriz (tabla);  Console.ReadKey();" va entre llaves pero no las necesita.

- Después de "Console.WriteLine("Capture las coordenadas donde se insertará un asterisco");" haces una pausa y terminar el programa sin capturar nada... ya has pedido los datos antes.

- LlenarMatriz modifica una variable que se recibe como parámetro. En la mayoría de casos, eso supone que los cambios se pierdan al salir, a no ser que uses la palabra "ref" para indicar que quieres "pasar los datos por referencia" (para que los cambios se conserven).

- LlenarMatriz pide datos con ReadLine, pero no hay ningún Write que avise al usuario de qué datos debe introducir.

- LlenarMatriz pide los 25 datos, en vez de pedir al usuario qué posición quiere llenar con un asterisco, que es lo que a mí me parece entender del enunciado.

- LlenarMatriz está mal tabulado, y al final del programa falta cerrar las llaves del programa y del namespace, así que no compila tal cual está.


24-Aug-2014 22:20
Invitado (Peter)

Hola nacho cabanes o a quien corresponda presento nuevo desarrollo del codigo, haber si es que este mejor diseñado, tengo algun error pero no se como resolverlo me puede alguien eshar la mano conrespecto a ello, saludos cordiales.

CODIGO

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        public static void main(char[] args);
 
        char[,] matrix = new char[5, 5];
 
        public void insertar()
        {
            for (int i = 0; i < 1; i++)
            {
                for (int j = 0; j < 1; j++)
                {
                    Console.Write("En que fila desea agregar el caracter");
                    string linea;
                    linea = Console.ReadLine();
                    int fila = int.Parse(linea);
 
                    Console.Write("En que columna desea agregar el caracter");
                    linea = Console.ReadLine();
                    int columna = int.Parse(linea);
 
                    matrix[fila, columna] = '*';
 
                }
            }
        }
    }
}
 




25-Aug-2014 16:11
Nacho Cabanes (+31)

La función "insertar" sigue sin hacer lo que te piden: con ese "doble for" vas a pedir 25 datos, en vez de repetir un número indeterminado de veces. Deberías usar un "do-while" que pida cada dato y pregunte si desea introducir más.

"Main", que antes tenía alguna incorrección pequeña, ahora pasa a estar vacío (termina en punto y coma en vez de tener llaves y contenido), tiene el nombre en minúsculas (lo que es incorrecto), tiene como parámetro un array de chars en vez de un array de strings...

Precisamente porque Main tiene todos esos errores, el compilador te decía que el programa no tiene "cuerpo", como has comentado en otro hilo (duplicado, que he borrado para que no haya mucha basura en los foros).

De hecho, para un problema tan sencillo no es necesario usar funciones, te basta con que Main sea correcto.

Y si necesitas explicaciones paso a paso desde cero, puedes probar a leer mi curso, que es gratuito y bastante detallado. La versión PDF está más actualizada que la versión web. Ambas las puedes encontrar aquí:

http://www.nachocabanes.com/csharp/







(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)