[ Foro de C# ]

Guardar datos.

22-Aug-2014 01:42
Invitado (wind)
3 Respuestas

Saludos.

El programa en consola funciona bien, excepto que no guarda correctamente los datos que se generan en pantalla. Le falta algo al "if" y si agrego aquella línea, me genera un error de compilación.
Adjunto código fuente.
https://mega.co.nz/#!94VAlbzK!uNUf9oU0hVV9msiM9VS0gHleFqf3z7AR8I9ED7pLXDk




23-Aug-2014 17:09
Nacho Cabanes (+83)

Si copias y pegas el fuente en vez de enlazarlo, será más fácil ayudarte, porque se puede leer la consulta desde cualquier dispositivo.

Si no, hará falta un ordenador, descompresor, editor... O no se  podrá ver con comodidad.  Intentaré mirarlo esta noche, cuando tenga un ordenador delante...


23-Aug-2014 20:49
Invitado (Wind)

// Lo siento, adjunto código fuente.


using System;
using System.IO;

namespace guardar_ficheros_2
{
    class Program
    {
        static void Main()
        {
            double puntajetotal;
            double puntaje; // Puntajes obtenidos
            double porcentajedeexigencia;
            double porcentajedeexigencia2;
            double puntajecorte;
            double formula1;
            double formula2;

            do
            {
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.White;
                Console.SetCursorPosition(0, 0);
                Console.WriteLine("Escala de notas.");
                // Versión 1.2
                Console.SetCursorPosition(0, 1);
                Console.WriteLine("Válido para Chile.");
                Console.SetCursorPosition(0, 2);
                Console.WriteLine("Escrito en C# por Benjamín C.");
                Console.SetCursorPosition(0, 4);
                // Ingrese primer dato.
                try
                {
                    Console.Write("Ingrese puntaje total: ");
                    puntajetotal = Convert.ToDouble(
                        Console.ReadLine());
                    while ((puntajetotal <= 0) || (puntajetotal >= 999999999999999))
                    {
                        Console.Write("Ingrese un número válido: ");
                        puntajetotal = Convert.ToDouble(
                        Console.ReadLine());
                    }

                    // Ingrese segundo dato.

                    Console.Write("Ingrese porcentaje de exigencia (%): ");
                    porcentajedeexigencia = Convert.ToDouble(
                    Console.ReadLine());
                    while ((porcentajedeexigencia <= 9) || (porcentajedeexigencia > 100))
                    {
                        Console.Write("Ingrese un número válido: ");
                        porcentajedeexigencia = Convert.ToDouble(
                        Console.ReadLine());
                    }

                    Console.WriteLine("");
                    Console.WriteLine("Puntaje Vs Nota");
                    Console.WriteLine("");

                    //Centro de operaciones.

                    porcentajedeexigencia2 = porcentajedeexigencia / 100;
                    puntajecorte = puntajetotal * porcentajedeexigencia2;


                    StreamWriter sw = new StreamWriter("C:\\Pruebafor.txt");
                    for (puntaje = 0; puntaje <= puntajetotal + 0.001; puntaje = puntaje + 0.1)
                    {
                        
                        formula1 = ((7 - 4) / (puntajetotal - puntajecorte)) * (puntaje - puntajecorte) + 4; // Ok
                        formula2 = ((4 - 1) / (puntajecorte)) * (puntaje) + 1;
                        if (puntaje <= puntajecorte)
                        
                            Console.WriteLine("    {0} | {1}", puntaje.ToString("N1"), formula2.ToString("N1"));
                            //sw.WriteLine("{0} | {1}", puntaje.ToString("N1"), formula2.ToString("N1")); // Error de compilación
                    
                        else

                            if (puntaje > puntajecorte)
                                Console.WriteLine("    {0} | {1}", puntaje.ToString("N1"), formula1.ToString("N1")); //Ok
                        
                        sw.WriteLine("{0} | {1}", puntaje.ToString("N1"), formula1.ToString("N1"));
                    }
                    
                    sw.Close();
                

                    Console.WriteLine("");
                    Console.WriteLine("Presione una tecla para ingresar más datos.");
                    Console.WriteLine("Presione Esc para finalizar el programa.");

                } // Termina el Try
                catch (FormatException)
                {
                    Console.WriteLine("");
                    Console.WriteLine("Ingrese sólo números.");
                    Console.WriteLine("");
                    Console.WriteLine("Presione una tecla para ingresar más datos.");
                    Console.WriteLine("Presione Esc para finalizar el programa.");
                } /* Termina el catch */
                } // Termina el do.
            
            while (Console.ReadKey(true).Key != ConsoleKey.Escape);
        }
    }
}

 

                   


23-Aug-2014 23:48
Nacho Cabanes (+83)

Claro, le faltan llaves, como a cualquier orden compuesta. Las tienes puestas en los "for" y "while", pero no en el "if", a pesar de que quieres que haga dos cosas.

Y no hay nada que sentir. Es simplemente que si tu fuente se puede leer, se te puede contestar incluso desde un Smartphone en un tren o autobús, mientras que si es un enlace externo son necesarias "más infraestructuras".  ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)