• Viernes 10 de Mayo de 2024, 02:14

Autor Tema:  asesoria C#  (Leído 7422 veces)

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
asesoria C#
« en: Viernes 22 de Julio de 2011, 10:23 »
0
soy nuevo en  c# y enla clase de programacion me dan un ejercicio en el que: " Se lea una oracion  y el programa lea toda la oracion y lea unna palabra cualquiera y diga cuanta veces se repiten y diga cuantas veces se repiten estas en la oracion" ejemplo: la casa es azul es grande es bonita

La palabra: es
repitencia: 2 veces.

Nota : la oracion no es predeterminada, es decir, el programa debe tener la capacidad de leer la oracion que sea y realizar lo que se pide. Estamos trabajando con metodos: .Length o Indexof etc ....
Gracias

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #1 en: Viernes 22 de Julio de 2011, 15:30 »
0
No se hacen tareas.

La idea es que hagas el codigo por ti mismo, y entonces si tienes algun error en la compilacion, o un error de logica, publica tu codigo y entonces con gusto se te dara ayuda, antes no.

Si de plano no sabes por donde comenzar, comienza por lo basico, busca en google cursos de programacion en C#, que hay varios ya publicados por internet

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #2 en: Viernes 22 de Julio de 2011, 17:24 »
0
Estoy totalmente de acuerdo con ProfesorX... pero te puedo guiar un poco de que debes hacer...

1 Poner un textbox donde se deberá colocar la frase que quieras...
2 poner un botón y al apretarlo en su evento Click disparé tu método
3 Lee acerca del método Split()  http://msdn.microsoft.com/es-es/library/b873y76a%28v=VS.80%29.aspx


Es muy fácil lo que necesitas hacer... sólo necesitas intruirte un poco... cualquier duda que tengas puedes preguntar..

saludos.. espero te sirva..
@gabio87

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #3 en: Sábado 23 de Julio de 2011, 06:51 »
0
Gracias, a la verdad no pido que hagan la tarea, sino lo que agrega el segundo comentario....Yo tengo la idea, tengo el codigo...se como capturar la oracion, leerla letra a letra y obtener su longitud con el metodo .Length....o la ocurrencia de una plabra o evento con Indexof...el unico problema es que no logro dar con la logica, el codigo que me cuente las palabras que se repiten....eso es todo...No resolverlo , porque solo tengo la tranca en eso, pues la oracion no es predeterminada, sino que el usuario ingresara la que quiera...e intentado muchas formas de solucionar pero no consigo identificar una palabra repetida en una oracin ingresada por el usuario.....

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #4 en: Sábado 23 de Julio de 2011, 08:27 »
0
Yo tengo la idea, tengo el codigo...

Y donde esta el codigo? yo al menos no lo veo, no lo has publicado.

Ya te dije antes que si lo tienes y no te da lo que desees, lo publiques, y aqui te podemos ir ayudando entre todos, pero llevas dos mensajes y por mi parte no veo nada.

Bueno, veremos si es cierto, te dare mas pistas a ver si con eso lo resuelves.

IndexOf te regresa la posicion de la cadena especificada, en la instancia de la cadena actual, si no se encuentra la cadena, regresa el valor -1, cuando te regrese un valor diferente de -1, significa que encontro la subcadena, entonces incrementaras un contador para contar las ocurrencias de la subcadena, y despues utilizaras el metodo SubString(), con el que vas a ir recortando la cadena original, en base al indice que obtuviste con IndexOf, y eliminando desde el principo de la cadena, hasta el indice + el tamaño de la subcadena (esto para eliminar la parte de la frase en donde ya buscaste), todo esto debies hacerlo dentr de un ciclo, deberas detener el ciclo cuando no encuentrea la subcadena, es decir cuando IndexOf te regrese -1.



NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #5 en: Miércoles 27 de Julio de 2011, 06:47 »
0
esto es lo que he hecho ...pero solo resulta si tiene dos palabras la oracion pero una oracion que sea larga o incluya ( y...o en fin sea mas larga ) no me funciona que estoy haciendo mal...solo me lee si hay dos palabras en la oracion

Código: [Seleccionar]
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String oracion, palabra, b, a;
            int cont = 0, d;

            Console.Write("Ingrese una oracion: ");
            oracion = Console.ReadLine();
           
            Console.Write("Ingrese una palabra: ");
            palabra = Console.ReadLine();

            b = oracion;

            for (int i = 0; i < oracion.Length; i++)
            {
                if (oracion[i] == ' ')
                {

                    d = b.IndexOf(' ');
                    a = b.Substring(0, d);
                    b = b.Substring(d + 1);

                    if (palabra == a)
                    {
                        cont++;
                    }
                }
            }
            if (b == palabra)
            {
                cont++;
               
                Console.Write("existe {0} veces ", cont);
                Console.ReadLine();

            }
        }
    }
}

Editado por ProfesorX: Insertando etiquetas [ code ]
« última modificación: Miércoles 27 de Julio de 2011, 16:59 por ProfesorX »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #6 en: Miércoles 27 de Julio de 2011, 17:11 »
0
Hola Ricardoudo.

Consejo: utiliza las etiquetas code para encerrar el codigo, ya que mejorla la legibilidad.

El error esta en el if:

Código: [Seleccionar]
            if (b == palabra)
            {
                cont++;
               
                Console.Write("existe {0} veces ", cont);
                Console.ReadLine();

            }

Solo deberia contener el contador, no el write:

Código: [Seleccionar]
            if (b == palabra)
            {
                cont++;
               
            }
            Console.Write("existe {0} veces ", cont);
            Console.ReadLine();

Ahora tu codigo funciona bien, pero yo añadiria un Trim, para asegurar que la palabra no comienza o termina con espacios. Ademas de usar un while en lugar de un for.

Quedaria asi:

Código: [Seleccionar]
        static void Main(string[] args)
        {
            String oracion, palabra, b, a;
            int cont = 0, d;

            Console.Write("Ingrese una oracion: ");
            oracion = Console.ReadLine();

            Console.Write("Ingrese una palabra: ");
            palabra = Console.ReadLine();
            // Añadiendo Trim()
            palabra = palabra.Trim();

            b = oracion;

            // While en lugar de for para no tener que hacer un ciclo completo
            // letra por letra en toda la oracion
            while (b.IndexOf(' ') != -1)
            {
                d = b.IndexOf(' ');
                a = b.Substring(0, d);
                b = b.Substring(d + 1);

                if (palabra == a)
                {
                    cont++;
                }
            }

            if (b == palabra)
            {
                cont++;
            }

            Console.Write("existe {0} veces ", cont);
            Console.ReadLine();

        }

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #7 en: Martes 9 de Agosto de 2011, 10:52 »
0
Gracias, tengo otra duda,.....debo hacer que sume cada elemento , es decir , el primero del  A con el primero del B y asi sucesivamente y mostrar un vector resultante con esa suma de elemento a elemento a elemento....Pero no hallo como hacer...Solo suma los primeros...Como hago para que recorra todo y me de el total de la suma..

Código: [Seleccionar]
static void Main(string[] args)
        {
          int[] A = new int[5];
            int[] B = new int[5];
            int i, j,suma=0;
           
            for(i=0; i < 5 ; i++){
                Console.Write("ingrerse un numero: ");
                A[i]= int.Parse(Console.ReadLine());
            }

            for (j = 0; j < 5; j++)
            {
                Console.Write("ingrerse un nuevo valor numerico: ");
                B[j] = int.Parse(Console.ReadLine());


            }
                 for(i=0; i < 5 ; i++){
                     for (j = 0; j < 5; j++)
                     {
                         suma = A[i] + B[j];

                     }
         
                       }
                     Console.Write("La suma es:{0}", suma);
                        Console.ReadLine();
        }
    }
}
« última modificación: Martes 9 de Agosto de 2011, 15:39 por ProfesorX »

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #8 en: Martes 9 de Agosto de 2011, 10:58 »
0
Hey cuando ingreso el valor para el vector A...Coloco A ...con i entre corchetes.... nose porque cuando lo pegue lo quita ....y en suma= tambien coloque A....con i entre corchetes.... solo que no aparece
« última modificación: Martes 9 de Agosto de 2011, 11:02 por Ricardoudo »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #9 en: Martes 9 de Agosto de 2011, 16:03 »
0
Coloco A ...con i entre corchetes....

Ese es el problema, la i entre corchetes es un bbcode (codigo para formatear mensajes) que representa italica o letra inclinada, no se si lo notaste, pero despues de eso, la letra de tu programa aparecia inclinada. La solucion es utilizar  [ code ] [ /code ] (sin espacio en los corchetes) para encerrar tu codigo, o en su defecto poner [ i ], pero lo mejor es usar code, (he corregido tu mensaje original, pero la siguiente ves agrega el code tu mismo) ;)

Ahora respecto a tu programa, lo estas haciendo mal, debes utilizar otro vector para guardar el resultado, y luego utilizar un ciclo for para guardar el resultado de la suma de A + B, no necesitas usar ciclos anidados como lo estabas haciendo, con un ciclo basta.

Te dejo el codigo corregido para que veas como debe hacerse.

Código: [Seleccionar]
        static void Main(string[] args)
        {
            int[] A = new int[5];
            int[] B = new int[5];
            // Vector resultante
            int[] Suma = new int[5];
            int i, j;//, suma = 0;

            for (i = 0; i < 5; i++)
            {
                Console.Write("ingrerse un numero: ");
                A[i] = int.Parse(Console.ReadLine());
            }

            for (j = 0; j < 5; j++)
            {
                Console.Write("ingrerse un nuevo valor numerico: ");
                B[j] = int.Parse(Console.ReadLine());


            }

            // Suma los elementos A y B en un ciclo
            // y guardas el resultado en Suma, no necesitas
            // usar ciclo anidados como hacias antes
            for (i = 0; i < 5; i++)
            {
                Suma[i] = A[i] + B[i];
            }

            // Imprimes el vector Suma
            for (i = 0; i < 5; i++)
            {
                Console.WriteLine("La suma del elemento {0} es:{1}", i + 1, Suma[i]);
            }
        }

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #10 en: Martes 9 de Agosto de 2011, 18:36 »
0
Muchas gracias....Como decimos en Venezuela a las personas que saben mucho acerca de un tema...."  Eres un Tigre " compadre.

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #11 en: Martes 9 de Agosto de 2011, 22:15 »
0
otra duda...

Hice un trozo de codigo para que cuando pago sea menor que total me diga que falta dinero, incluso habia hecho el codigo para que me dijera cuanto falta, esa no es la duda, es para que tengas la idea mas clara...(Pero lo quite porque no daba con lo que te preguntare, entonces nada haria con esa instruccion alli, una vez aclarado , incluire el codigo que hice) no hallo como darle la instruccion para que al decirme falta dinero e indicarme el monto, pregunte que introduzca el pago y luego me muestre el cambio....Yo lo hacia pero me hace el procedimiento del ( if ) como si el pago fuera mayor a total...como hago


Código: [Seleccionar]
//programa donde ingresas montos de venta, y muestra el iva, el sub total de la compra,
//monto a pagar, cantidad de productos,cantidad de pago, cambio, y cuanto debe haber en caja//
       
        static void Main(string[] args)
        {int product=0, i ;
        double imp= 0.12,cambio=0, sub_total=0, pago, venta=0, iva=0, total=0;
        double [] monto_v= new double [4];

        for (i = 0; i <4; i++)
        {

            Console.Write(" Ingrese el Monto de su Venta: ");
            monto_v[i] = double.Parse(Console.ReadLine());
            product++;



            if (monto_v[i] > 0)
            {

                venta = monto_v[i] + venta;
                iva = venta * imp;
                sub_total = venta - iva;
                total = venta + iva;
            }
        }
                 Console.Write(" El Iva es:{0}", iva);
                 Console.ReadLine();
                 
                 Console.Write(" El Subtotal a Pagar es:{0}", sub_total);
                 Console.ReadLine();
                 
                 Console.Write(" El Monto a Pagar es:{0}", total);
                 Console.ReadLine();
                 
                 Console.Write(" La cantidad de productos es:{0}", product);
                 Console.ReadLine();
                 
                 Console.Write(" Introduzca la cantidad de pago: ");
                 pago= double.Parse(Console.ReadLine());

                 if (pago > total)
                 {

                     cambio = pago - total;

                     Console.Write(" Su Cambio es:{0}", cambio);
                     Console.ReadLine();

                     Console.Write(" En Caja de haber:{0}", total - cambio);
                     Console.ReadLine();

                 
                 
                 }
                 else
                 {
                   
                         Console.Write(" FALTA DINERO ");
                         Console.ReadLine();

                   




                 }
        }
    }
}

Editado: Insertando etiquetas code
« última modificación: Miércoles 10 de Agosto de 2011, 03:09 por ProfesorX »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:asesoria C#
« Respuesta #12 en: Miércoles 10 de Agosto de 2011, 03:19 »
0
Otra vez olvidaste las equiquetas code, no olvides usarlas, puedes insertarla facilmente con el boton con el simbolo # de la barra de herramientas.

Bueno, regresando a tu problema no se si entendi bien tu explicacion, pero si lo que deseas es repetir el pago en caso de que no sea suficiente, podrias usar un ciclo do..while para hacerlo.

Un detalle adicional, tu condicion para dar el cambio esta incorrecta, porque no toma en cuenta que te den la cantidad exacta, solo si te dan una cantidad mayor, la condicion correcta deberia ser pago >= total.
Código: [Seleccionar]
        static void Main(string[] args)
        {
            int product = 0, i;
            double imp = 0.12, cambio = 0, sub_total = 0, pago, venta = 0, iva = 0, total = 0;
            double[] monto_v = new double[4];

            for (i = 0; i < 4; i++)
            {

                Console.Write(" Ingrese el Monto de su Venta: ");
                monto_v[i] = double.Parse(Console.ReadLine());
                product++;

                if (monto_v[i] > 0)
                {

                    venta = monto_v[i] + venta;
                    iva = venta * imp;
                    sub_total = venta - iva;
                    total = venta + iva;
                }
            }
            Console.Write(" El Iva es:{0}", iva);
            Console.ReadLine();

            Console.Write(" El Subtotal a Pagar es:{0}", sub_total);
            Console.ReadLine();

            Console.Write(" El Monto a Pagar es:{0}", total);
            Console.ReadLine();

            Console.Write(" La cantidad de productos es:{0}", product);
            Console.ReadLine();
             // Ciclo do..while para repetir el pago cuando no sea
             // suficiente
            do
            {
                Console.Write(" Introduzca la cantidad de pago: ");
                pago = double.Parse(Console.ReadLine());

                if (pago >= total)
                {

                    cambio = pago - total;

                    Console.Write(" Su Cambio es:{0}", cambio);
                    Console.ReadLine();

                    Console.Write(" En Caja de haber:{0}", total - cambio);
                    Console.ReadLine();

                }
                else
                {
                    Console.Write(" FALTA DINERO ");
                    Console.ReadLine();
                }
            } while (pago < total);
        }

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Ricardoudo

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:asesoria C#
« Respuesta #13 en: Miércoles 10 de Agosto de 2011, 04:24 »
0
Código: [Seleccionar]

Buenas Noches, aqui esta otro codigo,y tu diras tantos; porque te he enviado varios...Es que mañana tengo examen final y amanecere estudiando...Te explico, con este codigo que hice puedo contar  las letras de una oracion ( perfecto ) , ahora no consigo como contar las letras de solo la primera palabra y asi de la segunda...( de las que tenga ) y luego debo convertirlos en asterisco, es decir, Ejemplo: hola, tiene 4 letras , y escriba 4(asteriscos) ...Ayudame ahy por favor

static void Main(string[] args)
        {
            string oracion,c;
            int pos,Cant_letras = 0,i=0;

            Console.Write("INgrese una oracion: ");
            oracion = Console.ReadLine();
            c = oracion;
           
           
            while (c != "")
            {
                pos = c.IndexOf(' ');

                if (pos > 0)
                {
                    Cant_letras = Cant_letras + c.Substring(0, pos).Length;
                    c = c.Substring(pos + 1);
                }
                else
                {
                    Cant_letras = Cant_letras + c.Length;
                    c = "";
                }

            }
            Console.Write("Cantidad de letras es: {0}", Cant_letras);
            Console.ReadLine();


           
           
          }
    }
}