[ Foro de C# ]

Funcion Buscar Array

26-Nov-2019 06:34
Maria Gomez
9 Respuestas

Buenas! Paso a contarles... vs2010... me tira varios errores creo que elprincipal esta en la sintaxis de la funcion y no entiendo, ni encuentro cual es la forma de hacerlo. Gracias de antemano a quien pueda solucionarme este percance.


private void BtnBuscar_Click(object sender, EventArgs e)
        {
            while ((txtArt.Text != "") && (txtCant.Text != ""))
            {
                Art = Convert.ToInt32(txtArt.Text);
                Cant = Convert.ToInt32(txtCant.Text);

                Pos = 0; //Buscar(vectorArt, vectorStk, Art, Cant);

                Pos = BuscaArt(vectorArt, Art); //***MARCA ERROR CON POS
                if (Pos == -1)
                {
                    MessageBox.Show("El Articulo no existe", "ART INEXISTENTE");
                }
                else
                {
                    if (Cant <= vectorStk[Pos])
                    {
                        vectorStk[Pos] = vectorStk[Pos] - Cant;
                        MessageBox.Show("Venta realizada.\nDel Articulo" + vectorArt + "que en stock: " + vectorStk[Pos] + "unidades.", "EGRESOS");
                    }
                    else
                    {
                        MessageBox.Show("El Stock no es suficiente", "SIN SUFICIENTE STOCK");
                    }
                }
                txtArt.Text = "";
                txtCant.Text = "";
                }
            }
        }

    private static int BuscaArt(vectorArt []Int32, int Art)  //***MARCA ERROR EN EL TIPO DE DATO QUE DEVUELVE Y EN EL PARAM ARRAY RECIBIDO
        {
            int K = 0, I = 0;
            while (K == 0 && I < vectorArt.Lenght)
            {
                if (vectorArt[I] == Art)     //***MARCA ERROR EN EL '[ ]' Y EN EL DOBLE =
                {
                K=1;
                }
                else
                {
                I++;
                }
            }//WHILE
            if(K==0)                     //***MARCA ERROR EN EL IF
            {
            return -1;
            }
            else
            {
            return I;
            }
}


Que frustrante es toparse con estos errores "tontos" pero que anulan el siguiente paso...
Desde una funcion llamo a otra funcion que busca en array, si lo encuentra devuelve la posicion y sino volvera el valor de la bandera.


26-Nov-2019 10:01
Nacho Cabanes (+52)

¿Qué te dice exactamente cada uno de los mensajes de error?  Ten en cuenta que al no ser un programa de consola y no estar completo, no podremos probarlo, y sólo podremos ayudarte con "errores evidentes".

Aun así, hay una cosa que sí he notado en un primer vistazo: ese "vectorArt []Int32" imagino que debería ser al revés, un array de enteros: "int[] vectorArt". De ahí deben venir al menos 2 de tus errores.

Por otra parte, has escrito mal "Length", has puesto "Lenght".


26-Nov-2019 16:05
Maria Gomez

Hola. Ahi modifique y dejo el codigo completo...


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        const Int32 Ltd=4;

        Int32[] vectorArt = new Int32[Ltd];
        Int32[] vectorStk = new Int32[Ltd];

        private void BtnInicial_Click(object sender, EventArgs e)
        {
           if (Convert.ToInt32 (txtArticulo1.Text)>0  && Convert.ToInt32 (txtArticulo2.Text)>0  && Convert.ToInt32 (txtArticulo3.Text)>0  && Convert.ToInt32(txtArticulo4.Text)>0)
            {
            vectorArt[0] = Convert.ToInt32(txtArticulo1.Text);
            vectorArt[1] = Convert.ToInt32(txtArticulo2.Text);
            vectorArt[2] = Convert.ToInt32(txtArticulo3.Text);
            vectorArt[3] = Convert.ToInt32(txtArticulo4.Text);

            vectorStk[0] = Convert.ToInt32(txtStock1.Text);
            vectorStk[1] = Convert.ToInt32(txtStock2.Text);
            vectorStk[2] = Convert.ToInt32(txtStock3.Text);
            vectorStk[3] = Convert.ToInt32(txtStock4.Text);

            MessageBox.Show ("Vector inicializado correctamente!","INGRESOS");
            }
           else
           {
           MessageBox.Show ("Se ha detectado un ingreso erroneo","FALLA-USUARIO");
           }
            txtArticulo1.Text = "";
            txtArticulo2.Text = "";
            txtArticulo3.Text = "";
            txtArticulo4.Text = "";
            txtStock1.Text = "";
            txtStock2.Text = "";
            txtStock3.Text = "";
            txtStock4.Text = "";
        }

        public void BtnBuscar_Click(object sender, EventArgs e)
        {
            while ((txtArt.Text != "") && (txtCant.Text != ""))
            {
                Int32 Articulo = Convert.ToInt32(txtArt.Text);
                Int32 Cantidad = Convert.ToInt32(txtCant.Text);

                Int32 posicion = 0; //Buscar(vectorArticulo, vectorStock, Articulo, Cantidad);

                //posicion = Busq(vectorArt, Articulo);
                if (posicion == -1)
                {
                    MessageBox.Show("El Articulo no existe", "ART INEXISTENTE");
                }
                else
                {
                    if (Cantidad <= vectorStk[posicion])
                    {
                        vectorStk[posicion] = vectorStk[posicion] - Cantidad;
                        MessageBox.Show("Venta realizada.\nDel Articulo" + vectorArt + "que en stock: " + vectorStk[posicion] + "unidades.", "EGRESOS");
                    }
                    else
                    {
                        MessageBox.Show("El Stock no es suficiente", "SIN SUFICIENTE STOCK");
                    }
                }
                txtArt.Text = "";
                txtCant.Text = "";
                }
            }
        }

    private static int Busq(int[] vectorArt, int Articulo)
        {
            int K = 0, I = 0;
            while (K == 0 && I < vectorArt.Length)
            {
                if(vectorArt[I] == Articulo)
                {
                K=1;
                }
                else
                {
                I++;
                }
            }//WHILE
            if (K==0)
            {
            return -1;
            }
            else
            {
            return I;
            }
}

}
        
private void btnPersona_Click(object sender, EventArgs e)
        {
            Persona opersona1 = new Persona (txtNombre.Text, txtApellido.Text, dtpFechaNacimiento.Value, Convert.ToInt32(txtDni.Text));

            MessageBox.Show("Nombre: " + opersona1.nombre + "\nApellido: " + opersona1.apellido + "\nFecha de nacimiento: " + opersona1.fechaNacimiento + "\nDNI" + opersona1.dni);

        }

        private void BtnTrabajador_Click(object sender, EventArgs e)
        {
            Trabajador otrabajador = new Trabajador(txtNombre.Text, txtApellido.Text, dtpFechaNacimiento.Value, Convert.ToInt32(txtDni.Text),Convert.ToInt32(txtLegajo.Text), Convert.ToInt32(txtValorHora.Text),Convert.ToInt32(txtCantidadHoras.Text), Convert.ToInt32(txtCantidadDias.Text));

            MessageBox.Show("Nombre: " + otrabajador.nombre + "\nApellido: " + otrabajador.apellido + "\nFecha de nacimiento: " + otrabajador.fechaNacimiento + "\nDNI: " + otrabajador.dni + "\nLegajo: " + otrabajador.legajo + "\nValor de hora: " + otrabajador.valorHora + "\nCantidad de horas: " + otrabajador.cantidadhoras + "\nCantidad de dias: " + otrabajador.cantidaddias);


        }
       
        }
  
        private void BtnMostrar_Click(object sender, EventArgs e)
        {
            txtArticulo1.Text = Convert.ToString(vectorArt[0]);
            txtArticulo2.Text = Convert.ToString(vectorArt[1]);
            txtArticulo3.Text = Convert.ToString(vectorArt[2]);
            txtArticulo4.Text = Convert.ToString(vectorArt[3]);

             txtStock1.Text=  Convert.ToString(vectorStk[0]);
             txtStock2.Text = Convert.ToString(vectorStk[1]);
             txtStock3.Text = Convert.ToString(vectorStk[2]);
             txtStock4.Text = Convert.ToString(vectorStk[3]);

             txtArt.Clear();
             txtCant.Clear();

        }  
    }
}


 


26-Nov-2019 16:14
Maria Gomez

Y los errores son...
1 The class name '?' is not a valid identifier for this language (FILA; COL)(0,0)
2 Expected class, delegate,enum,interface, or struct (86,20)
3  Identifier expected (86,33)
4  Expected class, delegate, enum, interface, or struct(86,35)
5 Expeted class, delegate, enum, interface, or struct(86,35)
6  A namespace cannot directly contain member such as fields or methods (91,33)
7 Typeor namespace definition, or end of-file exected (100,13)
8 The type or namespace name '?Attribute' could not be found (are you mising a using directive or an assembly(108,1)


26-Nov-2019 16:28
Nacho Cabanes (+52)

Deberías empezar por el primer error, porque a veces los errores van en cascada, el primero provoca los siguiente.

El primero suena a que tu editor (¿no usas Visual Studio?) haya puesto un primer carácter extraño.

El segundo es que te sobra una llave cerrada justo antes de:

private static int Busq(int[] vectorArt, int Articulo)


26-Nov-2019 16:34
Maria Gomez

Recién instalado está el visual Studio 2010 en inglés en mi Windows 8. Jamás use este editor pero ahora es imperioso que lo haga por un práctico para el terciario. No veo carácter extraño, es más lo rehice desde cero y es lo mismo...


26-Nov-2019 17:03
Nacho Cabanes (+52)

No es grave. Si sólo te da un "warning" y no un "error" por ese carácter extraño (que imagino que será el llamado "BOM Unicode"), podrás seguir adelante.

Pero el fuente está mal tabulado, por lo que resulta difícil de leer y no te será sencillo descubrir las llaves de cierre descolocadas (que tienes varias).


26-Nov-2019 17:08
Maria Gomez

Hay algún juego de caracteres para identar el código?


26-Nov-2019 17:13
Nacho Cabanes (+52)

En principio no te preocupes por eso. Si usas Visual Studio para crear el programa (si no "copias y pegas" desde fuera), no deberías tener problemas.


26-Nov-2019 17:21
Maria Gomez

Como puedo solucionar estos errores. Sobre todo el de la declaración de la función buscar






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...