SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: rogerfor en Martes 6 de Marzo de 2012, 21:07

Título: Buscar un carácter y que me diga en que fila y columna esta
Publicado por: rogerfor en Martes 6 de Marzo de 2012, 21:07
Buenas tardes, fijense que tengo un programa sencillo que un .txt me dice cuantos delimitadores tengo (, . ; | "" '') y cuantos caracteres normales tengo, ahora lo que me piden es que si yo introduzca la "a" me diga cuantas hallo y en que fila y columna hayo cada una, no se me ocurre mayor cosa, no se si alguien me pueda ayudar por favor, de como podria hacerlo, cualquier ayuda se las agradecere bastante, gracias.
Título: Re:Buscar un carácter y que me diga en que fila y columna esta
Publicado por: efreyre en Martes 6 de Marzo de 2012, 21:25
Hola, básicamente lo que tienes que hacer es llevar el control desde el inicio del texto, ir avanzando por cada caracter e ir contando cuantas columnas vas, luego cuando encuentres un salto de línea aumentas el contador de filas. Y cada vez que aparezca una "a" tienes que guardar en algún lado la columna y fila actual.

En un rato más creo que puedo enviarte un ejemplo

http://electronica.phpnet.us/programacion.php (http://electronica.phpnet.us/programacion.php)
Título: Re:Buscar un carácter y que me diga en que fila y columna esta
Publicado por: rogerfor en Martes 6 de Marzo de 2012, 21:53
pero el como es lo que entiendo, así con que tengo hacerlo, tengo que pasar el texto por un vector? o como le digo que cosa es una columna y que es una fila. es lo que me confunde.
Título: Re:Buscar un carácter y que me diga en que fila y columna esta
Publicado por: efreyre en Martes 6 de Marzo de 2012, 22:21
Así es, tienes que convertir cada línea a un arreglo y luego cada elemento compararlo con la "a"

Mira aquí está el código

http://electronica.phpnet.us/descargas/ContadorFilasColumnas.zip (http://electronica.phpnet.us/descargas/ContadorFilasColumnas.zip)

La parte importante del código es esto:

private void button2_Click(object sender, EventArgs e)
        {
           StreamReader1 = new StreamReader(strFileName);
           int ncol = 0;
           int nfila = 0;
           textBox2.Text = "";
           string s ;
           char[] arrayChar = new char[10000];
           
           while ((linea = StreamReader1.ReadLine()) != null)
           {
               //verificar si cada elemento de la línea es el caracter "a"
               //textBox2.Text+= linea;
               nfila++;
               s = linea;
               
               arrayChar = s.ToCharArray();  //aqui es donde se convierte la cadena a un arreglo de char
               for (int i = 0; i < arrayChar.Length;i++ )
               {
                   ncol++;
                   if (arrayChar == 'a') {
                     
                      textBox2.Text+= "a encontrada en fila " + nfila + " y columna " + ncol + "\r\n";
                   }


               }
               
               

           }

             
        }
Título: Re:Buscar un carácter y que me diga en que fila y columna esta
Publicado por: rogerfor en Jueves 8 de Marzo de 2012, 04:51
Muchas gracias me sirvio de mucho!!!
y si por ejemplo yo quiero hacer como un banco de caracteres asi como / o ; que esos sean delimitadores y todo lo demas tokens como haria para que me leyera eso? he estado probando pero no me funciona :/
Título: Re:Buscar un carácter y que me diga en que fila y columna esta
Publicado por: rogerfor en Jueves 8 de Marzo de 2012, 05:08
Hola estuve probando y no logro como que pasar los caracteres a otra variable, lo que hice fue crear otro boton y otro textbox enbase al codigo que me pasaste que lo que haga sea determinar cuando delimitadores y caracteres tengo pero no logro hacerlo
este es el codigo que tengo, lo tenia en c++ y estaba tratando de pasarlo pero no logro hacerlo.

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10.  
  11. namespace ContadorFilasColumnas
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.        
  16.         public string strFileName   = "";
  17.         public string linea;
  18.         public StreamReader StreamReader1;
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.         }
  23.  
  24.         public void button1_Click(object sender, EventArgs e)
  25.         {
  26.             openFileDialog1.Filter = "archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
  27.             openFileDialog1.InitialDirectory = Directory.GetCurrentDirectory();
  28.             openFileDialog1.Title = "Seleccione un archivo";
  29.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  30.             {
  31.                 strFileName = openFileDialog1.FileName;
  32.                 textBox1.Text = strFileName;
  33.                
  34.             }
  35.            
  36.         }
  37.  
  38.         public void button2_Click(object sender, EventArgs e)
  39.         {
  40.            StreamReader1 = new StreamReader(strFileName);
  41.            int ncol = 0;
  42.            int nfila = 0;
  43.            textBox2.Text = "";
  44.            string s ;
  45.            char[] arrayChar = new char[10000];
  46.            
  47.            while ((linea = StreamReader1.ReadLine()) != null)
  48.            {
  49.                //verificar si cada elemento de la línea es el caracter "a"
  50.                //textBox2.Text+= linea;
  51.                nfila++;
  52.                s = linea;
  53.                
  54.                arrayChar = s.ToCharArray();
  55.                for (int i = 0; i < arrayChar.Length;i++ )
  56.                {
  57.                    ncol++;
  58.                    if (arrayChar[i] ==  Convert.ToChar(caracter.Text)) {
  59.                      
  60.                       textBox2.Text+= "Caracter encontrado en fila " + nfila + " y columna " + ncol + "\r\n";
  61.                    }
  62.                    //textBox2.Text += arrayChar[i] + "\n\r";
  63.                }
  64.                
  65.                
  66.  
  67.            }
  68.  
  69.              
  70.         }
  71.  
  72.         public void button3_Click(object sender, EventArgs e)
  73.         {
  74.     StreamReader1 = new StreamReader(strFileName);
  75.     char caracter2 = 'A';
  76.         int contador1=0;
  77.         int contador2=0;
  78.         char[] delimi= {',',':',' ','|','.'};
  79.     char[] arrayChar = new char[10000];
  80.     string s;
  81.     textBox3.Text = "";
  82.     s = linea;
  83.             if (s == null )
  84.         {
  85.                 textBox3.Text="Error no existe el archivo";
  86.         }
  87.         else
  88.         {
  89.         while ((s = StreamReader1.ReadLine()) != null)
  90.         {
  91.             arrayChar = s.ToCharArray();
  92.             for (int i = 0; i < arrayChar.Length; i++)
  93.                         {
  94.                         if((caracter2==delimi[i])||(caracter2==Convert.ToChar("/t"))||(caracter2==Convert.ToChar("/n")))
  95.                         contador1++;
  96.                 }
  97.                 if((caracter2==Convert.ToChar(delimi))&&(caracter2==Convert.ToChar("/t"))&&(caracter2==Convert.ToChar("/n")))
  98.                        
  99.                                 contador2++;
  100.                 }
  101.                 textBox3.Text+="En el archivo hay: "+contador1+" delimitadores, y "+ contador2+" caracteres";
  102.                
  103.         }
  104.  
  105.  
  106.         }
  107.  
  108.        
  109.     }
  110. }
  111.  
  112.  
  113.