duda con un programa en c#

Iniciado por jugran28, 13 Noviembre 2007, 18:27 PM

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

jugran28

hola por la presente para solitarles su ayuda tengo un programa echo en c#es sobre la suma de areglos bidimencional el problema que tengo es no se como declarar dentro de una clase un areglo bidimensional  esto  por su pùesto dentro de un metodomi declaracion esta echo asi :      public int sumabidi1(int[,] suma = new int[3, 3]) esto me  sale error haber si alguien me ayuda aca pues mi codigo fuente... haber por favor quiero sus opiniones
saludos
// clase suma
namespace suma
{
    class sumabidi

    {
        public int sumabidi1(int[,] suma = new int[3, 3])
    {
        int[,] A = new int[3,3];
        int[,] B = new int[3,3];
                   
         for (int i = 0; i <3; i++)
            {
                for (int j = 0; j <3; j++)
                {
                    suma[i,j] = A[i,j] + B[i,j];
                    Console.WriteLine("Resultado suma ["+i+"]["+j+"] ="+suma[i,j]);
                    Console.ReadLine();
                }
            }
        }
    }
}
// esto es la clase principal
using System;
using System.Collections.Generic;
using System.Text;

namespace suma
{
    class Program
    {
        static void Main(string[] args)
        {
            sumabidi ok = new sumabidi();
            int[,] A = new int[3,3];
            int[,] B = new int[3,3];
           
            int x, y;
            for (int i = 0; i <3; i++)
            {
                for (int j = 0; j <3; j++)
                {
                    Console.WriteLine("ingrese el valor en A[{0}] ",A[i,j]);
                    x = Int32.Parse(Console.ReadLine());
                    A[i,j] = x;
                   }
            }
            for (int i = 0; i <3; i++)
            {
                for (int j = 0; j <3; j++)
                {
                    Console.WriteLine("ingrese el valor en B[{0}] ", B[i,j]);
                    y = Int32.Parse(Console.ReadLine());
                    B[i,j] = y;
                   
                }
            }
           
        }
               
        }
    }

gusman

Hola.

Me parece que tienes unos cuantos conceptos equivocados.

Lo primero es que tu función no devuelve ningún valor, por lo cual al declararla como int estás provocando un error del tipo "no todas las rutas devuelven un valor".

Lo segundo es que cuando vas a pasar la matríz como un parámetro no has de inicializarla en la declaración de la función, se supone que ya ha sido inicializada en el trozo de código que llama a esta.

Y lo tercero es que como no estás usando el valor de las sumas para nada más que mostrarlos, almacenarlos en una matriz es innecesario, con que almacenes el resultado de cada suma en un int es suficiente y ahorras memoria.

Te añado la clase con todo corregido y una segunda función adicional donde se devuelve la matríz de las sumas, esto es útil si te hace falta almacenar el resultado para trabajar con el más adelante.

Código (csharp) [Seleccionar]
namespace suma
{
    public class sumabidi
    {
        public void sumabidi1(int[,] Arr1, int[,] Arr2)
        {

            if ((Arr1.GetLength(0) != Arr2.GetLength(0)) || (Arr1.GetLength(1) != Arr2.GetLength(1)))
                throw new Exception("Las dimensiones de las matrices no coinciden");

            int suma;

            for (int x = 0; x < Arr1.GetLength(0); x++)
            {

                for (int y = 0; y < Arr1.GetLength(1); y++)
                {

                    suma = Arr1[x, y] + Arr2[x, y];
                    Console.WriteLine("Resultado suma [" + x.ToString() + "][" + y.ToString() + "] =" + suma.ToString());
                    Console.ReadLine();
                }
           
            }
       
        }

        public int[,] sumabidi2(int[,] Arr1, int[,] Arr2)
        {

            if ((Arr1.GetLength(0) != Arr2.GetLength(0)) || (Arr1.GetLength(1) != Arr2.GetLength(1)))
                throw new Exception("Las dimensiones de las matrices no coinciden");

            int[,] suma = new int[Arr1.GetLength(0), Arr2.GetLength(0)];

            for (int x = 0; x < Arr1.GetLength(0); x++)
                for (int y = 0; y < Arr1.GetLength(1); y++)
                    suma[x, y] = Arr1[x, y] + Arr2[x, y];

            return suma;

        }
    }
}


Un saludo.
No está muerto todo lo que yace y con extraños evos hasta la misma muerte puede morir.

jugran28

gracias doc lo probare   y luego te aviso
muy agradecido infitimanete