Problema: insertar palabras en un arreglo en C# [solucionado]

Iniciado por andiuri, 23 Mayo 2009, 20:51 PM

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

andiuri

Hola a todos!. Tengo un código casi - completo , compila pero no hace lo que yo quiero.

Esta es la letra del ejercicio:

Escribir un código que pregunte al usuario la cantidad de palabras que tendrá la frase y
luego le pida que ingrese todas esas palabras, guardándolas en un arreglo de strings.

Este es mi código:


using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
   class Program
   {
       static void Main(string[] args)
       {
           int count;
           Console.WriteLine("¿Cuántas palabras quiere ingresar?");
           string result = Console.ReadLine();

           count = Convert.ToInt32(result);

           string[] palabras = new string[count];

           for (int i = count; i > 0; i--)
           {
               Console.Write("Ingrese la palabra {0}: ", i);
               palabras[i - 1] = Console.ReadLine();
               Console.WriteLine(palabras[i - 1]);
           }
           Console.ReadLine();

       
}


}
       
           
       }



el problema es que cuando hago Console.WriteLine (palabras[i-1]), para mostrar las palabras en pantalla, me muestra las palabras cada vez que las escribo, y quiero que se muestren al final, luego de escribirlas todas...

¿Qué hago mal?.

pd: No puedo usar OOP , no nos enseñaron eso todavía.

Saludos y gracias.

Jorgitoh

Lo que tenes que pensar mas alla del codigo es ver que es lo que hace tu programa. Basicamente el enunciado pide lo siguiente:

. Preguntar cantidad de Strings
. Permitirle al usuario escribir todas las palabras
. Guardar esas palabras en un array
. Mostrar todas las palabras ( si bien no lo pide es lo que tas preguntando vos )

Ahora bien, una ves que tenes los requisitos del programa fijate en donde es que te estas equivocando. El metodo mas vago seria debugear el main con el Visual Studio y de esta manera responder tu duda, pero asumamos que no tenemos esa opcion y tenemos que pensarlo a mano. Toma como primer punto la funcion principal dentro del main, que como veras es el for y date cuenta que es lo que esta haciendo el for es lo siguiente:

. Muestro Texto
. Pido Palabra ( Y la guardo )
. Muestro Palabra

Es decir que el problema se encuentra en que vos estas mostrando la palabra luego de que el usuario la escribe. Por lo cual la solucion a tu problema seria realizar otro for que recorra todo el vector mostrando palabra por palabra.

La solucion es simplemente esa, disculpa que haya escrito mucho, pero es que andaba con ganas de escribir.

Saludos.

andiuri

#2
Cita de: Jorgitoh en 24 Mayo 2009, 01:23 AM

. Mostrar todas las palabras ( si bien no lo pide es lo que tas preguntando vos )

Eso lo pide en una parte mas adelante....

Citar


Ahora bien, una ves que tenes los requisitos del programa fijate en donde es que te estas equivocando. El metodo mas vago seria debugear el main con el Visual Studio y de esta manera responder tu duda, pero asumamos que no tenemos esa opcion y tenemos que pensarlo a mano. Toma como primer punto la funcion principal dentro del main, que como veras es el for y date cuenta que es lo que esta haciendo el for es lo siguiente:

. Muestro Texto
. Pido Palabra ( Y la guardo )
. Muestro Palabra

Es decir que el problema se encuentra en que vos estas mostrando la palabra luego de que el usuario la escribe. Por lo cual la solucion a tu problema seria realizar otro for que recorra todo el vector mostrando palabra por palabra.

La solucion es simplemente esa, disculpa que haya escrito mucho, pero es que andaba con ganas de escribir.

Saludos.

Muchas gracias !!!!.Nada de disculpas, me gustan mucho estas explicaciones. Hace un mes y poco que empecé en este mundo de la programación, y el primer lenguaje que nos enseñan es C#, y soy muy novato. Una cosa que recomendó el docente es usar F11 el el Visual Studio y recorrer línea por línea... :silbar:

Saludos.

andiuri

Sigo teniendo problemas:

el nuevo for para mostrar la frase completa con las palabras es :


for (int i = 0; i < palabras.Length; i++)
            {

               
                Console.WriteLine("La frase es ...." +  palabras[i]);

}
Console.ReadLine ();


El problema es que repite "La frase es...." tantas veces como la cantidad de palabras que yo quiero.

Lo que quiero que salga en consola es algo como:

"La frase es..." + palabra1 + palabra 2 + ...

¿Sugerencias?

Saludos.

andiuri


Tengo la solución:

el código :


int count;
           Console.WriteLine("¿Cuántas palabras quiere ingresar?");
           string result = Console.ReadLine();

           count = Convert.ToInt32(result);

           string[] palabras = new string[count];

           for (int i = count; i > 0; i--)
           {
               Console.Write("Ingrese la palabra {0}: ", i);
               palabras[i - 1] = Console.ReadLine();
               Console.WriteLine(palabras[i - 1]);
           }
           Console.ReadLine();
           Console.Write("La frase es....");
           
           for (int i = 0; i < palabras.Length; i++)
           {
               Console.Write("" + palabras[i]);
           }
           Console.ReadLine();



Gracias a todos!!!. Aprendí mucho...  :)

Saludos.

43H4FH44H45H4CH49H56H45H

Otro modo de hacerlo podria ser asi:
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
   class Program
   {
       
       static void Main(string[] args)
       {
           ArrayList palabras = new ArrayList();            
           string frase = "";
           Console.WriteLine(" Ingrese Numero de palabras: ");
           int limite = Int32.Parse ( Console.ReadLine());
           for (int i = 0; i < limite; i++)
           {
               Console.WriteLine(" Ingrese palabra: ");
               palabras.Add(Console.ReadLine());
           }

           for (int i = 0; i < palabras.Count; i++)
           {                
               frase += palabras[i].ToString() + " ";
           }
           Console.WriteLine("Frase Completa: " + frase);                
           Console.ReadKey();
       }
   }
}


...

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W


J3RRYG3

esta vendria siendo una buena solucion.

using System;


namespace defineeltamaniodelarregloInsertaletras
{
    class Program
    {
        static void Main(string[] args)
        {

            int count;
            Console.WriteLine("cuantas palabras quiere in gresar?");
            string result = Console.ReadLine();
            count = Convert.ToInt32(result);

            string[] palabras = new string[count];

            for (int i = count; i > 0; i--)
            {

                Console.WriteLine("ingrese la palabra {0}", i);
                palabras[i - 1] = Console.ReadLine();
               
            }

            Console.WriteLine("{0}{1,8}","numero de palabras","palabra");
            for (int i = 0; i < palabras.Length; i++ )
                Console.WriteLine("las palabras fueron: {0,4}{1,8}", i, palabras);

            Console.ReadLine();

        }
    }
}

suerte!