• Domingo 19 de Mayo de 2024, 05:48

Autor Tema:  problema con indice de vector.  (Leído 1234 veces)

mauro0x

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
problema con indice de vector.
« en: Viernes 17 de Abril de 2009, 23:08 »
0
Hola, tengo q hacer el siguiente programa para la facultad;
Escriba un programa que lea dos secuencias de caracteres separadas por blanco que terminan
con <Enter>, y determine si son simétricas (Ej: 'abbccd' y 'dccbba' son simétricas).
el problema es q me sale este error "System.IndexOutOfRangeException: Índice fuera de los límites" y no pude determinar xq. mi codigo es el siguiente:
/*
 * Creado por SharpDevelop.
 * Usuario: Mauro
 * Fecha: 17/04/2009
 * Hora: 17:10
 *
 * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar
 */
using System;

namespace swi
{
   class Program
   {
      public static void Main() {
         int i=0;
         int j;
         bool sim=true;
         Console.WriteLine("Ingrese la primera cadena <cr> segunda cadena");
         String cad1 = Console.ReadLine();
         String cad2 = Console.ReadLine();
         j=cad2.Length;
         Console.WriteLine("J:"+j);         //Estos writeline estan xq me puse a hacer comprobaciones para determinar si estaban en valores correctos
         Console.WriteLine("I:"+i);
         Console.WriteLine("LONG de cad1:"+cad1.Length);
         Console.WriteLine("LONG de cad1:"+cad2.Length);
         Console.ReadKey();
         while((i < cad1.Length) && (sim)){
            while((j > 0) && (sim)){
               if(cad1 != cad2[j])         ----------------------------------->/Este linea presenta el error/
                  sim=false;
               else
                  i++;j--;
            }
         }
         
         if(sim==false)
            Console.WriteLine("No son simetricas");
         else
            Console.WriteLine("Son simetricas");

      }
   }
}
Aclaracion: no implemente algunas cosas como comparar la longitud de las  2 cadenas, ya q si no son iguales es obvio q no son simetricas, me quiero centrar en compararlas nomas.
si me pueden indicar q es lo q da el error se los agradeceria; saludos!

jorgerulez

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: problema con indice de vector.
« Respuesta #1 en: Miércoles 22 de Abril de 2009, 04:37 »
0
Antes que nada quisiera decirte que este foro nos presta muchas facilidades, por ejemplo a la hora de postear un código contamos con una herramienta que consta de una etiqueta para mostrar el código de manera mas clara.

Código: C#
  1. /*
  2. * Creado por SharpDevelop.
  3. * Usuario: Mauro
  4. * Fecha: 17/04/2009
  5. * Hora: 17:10
  6. *
  7. * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar
  8. */
  9. using System;
  10.  
  11. namespace swi
  12. {
  13.     class Program
  14.     {
  15.         public static void Main()
  16.         {
  17.             int i = 0;
  18.             bool sim = false;
  19.             Console.WriteLine("Ingrese la primera cadena <cr> segunda cadena");
  20.             String cad1 = Console.ReadLine();
  21.             String cad2 = Console.ReadLine();
  22.             i = cad2.Length - 1;
  23.             Console.WriteLine("I:" + i);
  24.             Console.WriteLine("LONG de cad1:" + cad1.Length);
  25.             Console.WriteLine("LONG de cad1:" + cad2.Length);
  26.             Console.ReadKey();
  27.             foreach (char aux in cad1)
  28.             {
  29.                 if (aux == cad2[i])
  30.                     sim = true;
  31.                 else
  32.                 {
  33.                     sim = false;
  34.                     break ;
  35.                 }
  36.                 i--;
  37.             }
  38.             if (sim == false)
  39.                 Console.WriteLine("No son simetricas");
  40.             else
  41.                 Console.WriteLine("Son simetricas");
  42.  
  43.             Console.ReadLine();
  44.         }
  45.     }
  46. }
  47.  
  48.  

Primero correji la variable 'j' que al principio se le asigna un número entero correspondiente a la cantidad de caracteres de la cadena2, le reste un valor por que cuando manejas arreglos (un string es un arreglo del tipo char) su contador empieza desde 0.
Además tu ciclo while se hacia iteracciones innecesarias, me tome la molestia de cambiarle la estructura de repetición. Te coloque un ciclo foreach() en lugar de el par de while().

Saludos.

mauro0x

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: problema con indice de vector.
« Respuesta #2 en: Miércoles 22 de Abril de 2009, 04:49 »
0
ahh esta bien.muchas gracias x la respuesta
Saludos!