• Viernes 14 de Marzo de 2025, 17:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ProfesorX

Páginas: 1 2 3 [4] 5 6 ... 32
76
C# / Re:Buena programación en C#
« en: Domingo 7 de Abril de 2013, 10:20 »
Hola s.valdenegro, la verdad no se para que tanta complicacion, y porque esa insistencia de que todos los paneles queden en el mismo lugar, pero bueno, veamos que se puede hacer.

Para empezar tu mismo estas reconociendo tu error:

Citar
ya que un panel está contenido en otro y yo quiero tenerlos por separado

O sea, quieres tenerlos por separado, pero tu mismo dices que tienes un panel dentro de otro.

Entonces la solucion es tener los paneles por separado y no uno dentro de otro.

Para lograrlo:

1. Primero crea tus paneles en lugares diferentes de tu ventana, que no queden encimados, para garantizar que realmente queden separados, y no uno dentro de otro, no te preocupes de su posicion, que eso se arregla despues, suponiendo que quieres 3 paneles (si necesitas mas espacio, haz mas grande tu fromulario), colocalos asi:



2. Coloca los controles que necesites dentro de cada panel, y colocalos en la posicion relativa respecto al panel en donde necesitas cada control (tip, puedes modificar la propiedad Location de cada control que esta dentro del panel panel, de esa forma el resultado es mas exacto)



3. Por ultimo, ya que cada panel tiene los controles que necesitas, ahora si, mueve cada panel a su posicion definitiva, o modifica la propiedad  Location de los paneles de tal forma que sea la misma para cada panel que quieras , voila, veras que ahora si, todos los paneles quedaron separados, y se podran Mostrar/Ocultar (Propiedad Visible) de manera separada. Si cambiaste el tamaño de tu formulario, cuando termines de acomodar, regresalo a su tamaño original (propiedad Size)



Espero que eso resuelva tu problema

Saludos :)

77
C# / Re:Propiedades de la colección HashTable
« en: Jueves 4 de Abril de 2013, 00:46 »
Hola, bienvenido al foro.

Citar
En donde dice miTabla. hay no me aparece la opción de ITEM. Desde ya gracias. Les dejo mi código:

Esto es por que en C#, las HashTables no contienen Item, el item se utiliza en Visual Basic. NET como indexador, pero dado que en C# puedes utilizar el indexador directamente, no hay necesidad de usarlo. Ejemplo:

Visual Basic:

Código: [Seleccionar]
Dim h as new Hashtable()
h.Item( "somekey") = "somevalue"
Console.WriteLine( h.Item( "somekey"))

Equivalente en C#:
Código: [Seleccionar]
Hashtable h = new Hashtable();
h["somekey"] = "somevalue";
Console.WriteLine( h["somekey"]);

Saludos :)

78
C# / Re:Duda con clases/atributos estáticos.
« en: Martes 2 de Abril de 2013, 06:05 »
Buenas DanteInfernum666, bienvenido al foro.

Tratare de responder tus dudas lo mejor posible.

Citar
¿Qué es "private static Random aleatorio;"? ¿Un atributo estático de la clase "Dado"? (si es que existe eso...) ¿Otra clase estática llamada Random?
R.- Es un atributo estatico perteneciente a la clase "Dado"

Citar
Si quito la parte de <<static>> en <<private Random (static) aleatorio;>>, los tres dados siempre retornan el mismo valor. ¿Por qué pasa esto?
R.- Esto no tiene que ver con que el atributo sea estatico o no, mas bien tiene que ver en como funciona la clase Random().
La clase Random() no genera numeros aleatorios verdaderos, sino lo que se conoce como "Pseudo aleatorios", o sea, que en realidad se generan a partir de un valor seed (semilla), y esto es asi para facilitar la depuracion, ya que de esa manera garantizas que siempre se genere la misma secuencia de numeros aleatorios, sin importar cuantas veces ejecutes tu programa.

Cuando llamas a la funcion Random() sin parametros, internamente utilizas la misma semilla, que esta basada en el numero de milisegundos que han pasado desde que encendiste tu computadora, y este valor no cambia a menos que esperes el tiempo suficiente para que la semilla sea diferente.

Cuando declaras el atributo de tipo estatico, lo que sucede es que en lugar de inicializar Random con una semilla diferente, estas diciendole que use la misma semilla pero que genere el siguiente numero aleatorio de la secuencia.

Citar
¿Por qué es necesario declarar la sentencia como estática para evitarlo?
R.- No es necesario, lo que si seria necesario es hacer que el proceso se "detenga" hasta que pase x numero de milisegundos, y de esa forma garantizas que se utiliza una semilla diferente para Random()

Haz la sigueinte modificacion, y veras que ahora si se genera un aleatorio diferente aunque definas aleatorio como no estatico:

Código: [Seleccionar]
        private int valor;
        private Random aleatorio;

        public Dado()
        {
            // Esperas un milisegundo para que la semilla
            // de Random sea diferente la proxima vez
            System.Threading.Thread.Sleep(1);
            aleatorio = new Random();
        }

Saludos :)

79
C# / Re:Borrar un dato de una matriz
« en: Viernes 22 de Marzo de 2013, 02:34 »
Podrias ser un poco mas especifico con el problema que tienes, publicando el fragmento de codigo que te da problemas, y la descripcion del error que te marca?

Porque con la informacion que proporcionas, no es posible ayudarte y sin el codigo no podemos adivinar cual es el problema.

Saludos

80
Java / Re:no puedo ejecutar la funcion while
« en: Domingo 17 de Marzo de 2013, 16:24 »
Hola thinlizzy.

Me parece que te falta ==, deberia ser:

 while(control == "s")


81
C# / Re:duda: Extraer datos de un List
« en: Miércoles 27 de Febrero de 2013, 08:29 »
Hola joantopo, bienvenio al foro

Pues no es gran ciencia, las listas se pueden acceder como si fueran vectores, por medio de un indice, por lo tanto, para obtener la edad del elemento de la fila 8 simplemente seria:

Código: [Seleccionar]
          Console.WriteLine("{0}", personas[7].Edad);

Ten encuenta que el elemento 8 su indice es 7, porque los vectores empiezan en cero y no en 1.

Saludos :)

82
VB .NET / Re:string como nombre de variable
« en: Jueves 14 de Febrero de 2013, 19:29 »
No es posible hacer lo que deseas

83
C/C++ / Re:Hundir la Flota en C, error de ultima hora! Importante!
« en: Martes 5 de Febrero de 2013, 22:03 »
Hola Virusvicio, bienvenido al foro.

Bueno, revise tu codigo, y tratare de darte una respuesta que espero te satisfaga.

1. Respecto al primer problema, en la funcion tablero2(), tienes un error en uno de los printf, utilizas %s en lugar de %c, entonces la funcion esta esperando una cadena, cuando en realidad tu valor es un caracter.

Basicamente la linea:
Código: [Seleccionar]
printf(" F1  %s   |   %s  |   %s  |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |\n",
reg.barcosj2[1][1],reg.barcosj2[1][2],reg.barcosj2[1][3],reg.barcosj2[1][4],reg.barcosj2[1][5],
reg.barcosj2[1][6],reg.barcosj2[1][7],reg.barcosj2[1][8],reg.barcosj2[1][9],reg.barcosj2[1][10]);

deberia ser:

Código: [Seleccionar]
printf(" F1  %c   |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |   %c  |\n",
reg.barcosj2[1][1],reg.barcosj2[1][2],reg.barcosj2[1][3],reg.barcosj2[1][4],reg.barcosj2[1][5],
reg.barcosj2[1][6],reg.barcosj2[1][7],reg.barcosj2[1][8],reg.barcosj2[1][9],reg.barcosj2[1][10]);

2. Respecto a tu segunda pregunta, me fue dificil seguir la logica de tu programa, ya que me parece que estas haciendo mucha redundancia, ademas, no me queda muy claro cual es la variable que utilizas para indicar que el juego se gano, y quien lo gano, pero creo que necesitarias hacer algo mas o menos asi en la opcion de jugar:

Código: [Seleccionar]
                case 3:
                    printf("Quien quiere empezar? 1/2:\n");
                    scanf("%d",&x);
                    do
                    {
                        if(x==1)
                        {
                            jugarj1();
                            jugarj2();
                        }
                        if(x==2)
                        {
                            jugarj2();
                            jugarj1();
                        }
                    }
                    while (ganar != 1);
                    break;

Aunque es probable que tengas que modificar un poco la manera en lo estas haciendo para que funcione.

Finalmente, descubri otro error en tu codigo, que quizas tambien sea el responsable de porque no obtienes un ganador.

En la funcion compganar() tienes un ; al final de los if, eso hace que la condicion del if quede vacia, y el codigo debajo del if siempre se ejecutara.

Especificamente pienso que

Código: [Seleccionar]
    for(i=0;i<11;i++)
    {
        for(j=0;j<11;j++)
        {
            if(reg.barcosj1[i][j]=='O'||reg.barcosj1[i][j]=='S');
            gj2=1;
            if(reg.barcosj2[i][j]=='O'||reg.barcosj2[i][j]=='S');
            gj1=1;
        }
    }

Deberia ser:

Código: [Seleccionar]
    for(i=0;i<11;i++)
    {
        for(j=0;j<11;j++)
        {
            if(reg.barcosj1[i][j]=='O'||reg.barcosj1[i][j]=='S')
                gj2=1;
            if(reg.barcosj2[i][j]=='O'||reg.barcosj2[i][j]=='S')
                gj1=1;
        }
    }

Aunque como dije, me cuesta ver tu logica y quizas yo este equivocado.

Al final te recomiendo que utilices el depurador de tu compilador, y que coloques puntos de interrpcion en las partes criticas de tu programa, para que puedas seguir paso a paso la ejecucion, y de esa forma veas si sigues la logica que te habias propuesto conseguir o si por el contrario, esta equivocada.

Saludos :)

84
C/C++ / Re:pregunta sobre implementacion y enlace
« en: Sábado 29 de Diciembre de 2012, 17:33 »
Hola Flony, bueno para empezar cuando pongas ejemplos de libros, deberias publicar el codigo, piensa que no todo mundo tiene el libro del que hables (en mi caso, no tengo el libro de deitel). De otra forma reduces el numero de personas que te pueden ayudar.

En este caso, sin embargo me parece que si te podria ayudar, simplemente por lo poco que lei del parrafo que pones, se trata de hacer librerias/bibliotecas de funciones, en las librerias de funciones no se necesita un main(), simplemente debes compilarlo como libreria, de tal forma que te genere un archivo de libreria, la forma de hacerlo cambia de compilador en compilador (en Visual C++, estos archivos tienen la extension .lib, y deberias elegir la opcion que dice "Biblioteca de Clases") lo que te permitira compilarlo, aunque obviamente no podras ejecutarlo, ya que es una libreria y las librerias no se ejecutan.

Para poderlo ejecutar, necesitas añadir la libreria en algun programa en donde lo vayas a utilizar, y que contenga una funcion main(), desde donde llamaras a la clase/metodo/funcion que esten contenidas en tu libreria.

Saludos :)

85
C/C++ / Re:GDB: "no se encontraron símbolos de depuración"
« en: Sábado 8 de Diciembre de 2012, 18:46 »
Bueno, no tengo mucha experiencia en linux y gcc, yo uso Visual Studio 2010, aunque he llegado a usar mingw (gcc en windows), y te puedo decir que necesitas activar la compilacion con simbolos de depuracion (-g) y eliminar las opciones de optimizacion (-O) si es que tienes alguna.

Código: [Seleccionar]
gcc -g -W -Wall -o prueba prueba.c

Aunque quizas necesites ayuda de alguien que tenga mas experiencia en gcc

Saludos :)

86
C/C++ / Re:Lista enlazada simple (Insertar al Final)
« en: Jueves 6 de Diciembre de 2012, 18:56 »
Disculpen el doble post.

Al final era porque estoy pasando lista por referencia, ya que declarar "**" estoy diciendo de un puntero a un puntero, pero como lista es un puntero a un nodo, entonces debe ser pasado por referencia, para que **primerNumero pueda apuntarlo correctamente.

P.D: Simplemente colocar *primerNumero, sería un puntero a un nodo y no a otro puntero.

Por favor corríjanme si estoy mal :S

Es correcto

Citar
Aquí dejo el código completo con varias cosas, según mi compilador funciona, pero espero que "teóricamente" también, es decir si no queda ningún nodo "volando" por ahí.

Recomiendo que uses el depurador (debugger) de tu compilador ejecuta el codigo linea por linea e inspecciona tus variables, si no sabes usarlo, recomiendo que investigues como se hace (en realidad los depuradores son muy faciles de usar), de esa forma podras averiguar si queda algun nodo volando por ahi :)

Saludos :)

87
C/C++ / Re:Duda con sentencia de constructor C++
« en: Martes 4 de Diciembre de 2012, 17:04 »
Hola ProfesorX, muchas gracias por la bienvenida y la ayuda.

Discúlpeme, pero sigo sin entender por qué aparece la asignación tras los dos puntos (:) y no en el cuerpo del método (entre los corchetes).

Gracias,
gongomgra

Como te dije, es una abreviacion, es otro metodo de escribirlo, otra sintaxis, realmente no hay mucho que entender fuera de eso.

Es como si me preguntaras que por que escribimos x++ en lugar de x = x + 1.

Si no te gusta la abreviacion puedes escribirlo de manera completa, nada te lo impide, para que tengas mayor claridad, pero si lo encuentas en codigo hecho por otras personas, por lo menos ya sabes que es equivalente ;)

Saludos :)

88
C/C++ / Re:Duda con sentencia de constructor C++
« en: Martes 4 de Diciembre de 2012, 01:22 »
Hola gongomgra bienfvenido al foro.

Es facil

S es el nombre del metodo costructor de tu clase

x(temp) es una manera abreviada de asignar los valores de los parametros del constructor a la variable miembro x.

Mas claro, seria equivalente a poner:

Código: [Seleccionar]
    S(int temp) {x = temp;}

Saludos :)

89
PostgreSQL / Re:Como combinar dos consultas sin perder filas
« en: Sábado 1 de Diciembre de 2012, 21:38 »
Hola de nuevo codeforall, disculpa por no poder contestar antes.

Bueno, he analizado tu problema, y creo que es posible de hacer mediante subquerys y utilizando alias

Desconozco si PostgreSQL soporta alias, pero suponiendo que si, le asignaremos un alias "a" a la consulta 1, un alias "b" a la consulta 2, y un alias "c" a la consulta 3.

Te dejo el sguiente codigo, que probe en SQL Server y funciona adecuadamente, si PostgreSQL no soporta el uso de alias y subquerys, te recomendaria que crearas tablas temporales para guardar las subquerys y luego hagas un query normal con las tablas temporales, no se si me entiendas a que me refiero.

Código: [Seleccionar]
select a.codigo, a.ubicacion, a.num_estands, b.personas_asignadas, c.personas_incorporadas
from
(SELECT codigo,  ubicacion,  COUNT (palacio) AS num_estands
FROM palacios, estands
WHERE palacios.codigo = estands.palacio
GROUP BY codigo, ubicacion
) a
inner join
(SELECT codigo, 
COUNT (asignan.palacio) AS personas_asignadas
FROM palacios
LEFT OUTER JOIN asignan ON palacios.codigo = asignan.palacio
GROUP BY codigo) b
on a.codigo = b.codigo
inner join
(SELECT codigo, 
COUNT (incorporan.palacio) AS personas_incorporadas
FROM palacios
LEFT OUTER JOIN incorporan ON palacios.codigo = incorporan.palacio
GROUP BY codigo) c
on a.codigo = c.codigo
order by a.codigo, a.ubicacion;

Saludos :)

90
C/C++ / Re:Cómo crear un arreglo con posiciones aleatorias
« en: Viernes 30 de Noviembre de 2012, 22:30 »
No se hacen tareas

91
C# / Re:Aprendiendo C#...
« en: Viernes 30 de Noviembre de 2012, 20:59 »
Hola javier_gch, bienvenido al foro.

Pues tu mismo lo estas diciendo, el metodo altas esta definido dentro de la clase Alumno, no dentro de la clase Practica3 que contienen al metodo Main(),  por lo tanto no existe en el contexto actual de la clase que estas utilizando (Practica3).

Para poder acceder al metodo altas, puedes hacer 2 cosas, crear una instancia de la clase alumno dentro de Main() para poder acceder a altas, o definir el metodo altas como estatico. En los dos casos tendrias que escribir alumno.altas() para llamar al metodo Yo te sugeriria ademas de definirlo estatico, que pases el metodo altas() a Practica3, y que ademas tambien definas estatica la lista de alumnos, de esa forma puedes llamar a tu lista desde cualquier metodo de la clase Practica3.

Te lo dejo parcialmente modificado para que te des una idea:

Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace Practica3
{
    public class Alumno
    {
        public int numero;
        public string nombre;
        public string dni;
        public string direccion;

        public Alumno(int num1, string nom1, string dni1, string dir1)
        {
            this.numero = num1;
            this.nombre = nom1;
            this.dni = dni1;
            this.direccion = dir1;
        }

    }

    class Practica3
    {
        // Definido como estatico
        public static void altas()
        {
            ArrayList lista = new ArrayList();

            int num1;
            string nom1, dni1, dir1;

            Console.Write("Introduce numero: ");
            num1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Introduce nombre: ");
            nom1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce dni: ");
            dni1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce direccion: ");
            dir1 = Convert.ToString(Console.ReadLine());


            Alumno P = new Alumno(num1, nom1, dni1, dir1);
            lista.Add(P);


            for (int i = 0; i < lista.Count; i++)
            {
                Console.WriteLine(((Alumno)lista[i]).nombre);
            }
        }

        static void Main(string[] args)
        {

            int opcion = 0;

            // menú y switch para las opciones
            do
            {
                Console.Clear();
                Console.WriteLine("Elija una opción:");
                Console.Write("\n");
                Console.WriteLine("1. Altas");
                Console.WriteLine("0. Salir");
                Console.Write("\n");
                Console.Write("Opción: ");
                opcion = Convert.ToInt32(Console.ReadLine());

                switch (opcion)
                {
                    case 0:
                        Console.WriteLine("FIN DEL PROGRAMA");
                        Console.ReadKey();
                        break;

                    case 1:
                        Practica3.altas();
                        break;

                    default:
                        break;
                }
            }
            while (opcion != 0);
        }
    }
}

Saludos :)

92
C/C++ / Re:[Dudas] Sobre lectura de ficheros y arrays
« en: Domingo 25 de Noviembre de 2012, 07:23 »
Hola cotolon, te contesto

1. Si se puede hacer lo que dices, y tal como mencionas se puede hacer con punteros y memoria dinamica, busca informacion sobre listas enlazadas ordenadas

2. No se en que forma estas usando fscanf, porque fscanf no hace un salto de linea automatico, sino que en realidad funciona tal como quieres que funcione, o sea, que trata los espacios y los salto de linea como separador entre datos.

Te dejo un programa que escribe los 11 numeros de tu ejemplo en un archivo de texto, los lee en un vector, y luego imprme el vector en pantalla, funciona en Visual C++, pero no creo que tengas problemas con otros compiladores:


Código: [Seleccionar]
#include <cstdio>

int vector[11];
FILE * pFile;
int i;

int main()
{

    pFile = fopen ("archivo2.txt","w+");
    fprintf(pFile, "2 5\n");
    fprintf(pFile, "3 3 4\n");
    fprintf(pFile, "5 5\n");
    fprintf(pFile, "6 10 8 6\n");
    rewind (pFile);
    for (i=0; i <= 10; i++)
        fscanf (pFile, "%d", &vector[i]);
    fclose (pFile);

    for (i=0; i <= 10; i++)
        printf("%d ", vector[i]);

    printf("\n");

    return 0;
}

93
PostgreSQL / Re:Como combinar dos consultas sin perder filas
« en: Domingo 25 de Noviembre de 2012, 07:07 »
Me temo que con la informacion que pones no es posible ayudarte ya que no pones ni la consulta, ni la estructura de tu base de datos, ni que resultado esperas obtener, solo dices que obtienes 3 filas de 10, pero sin mas informacion no se puede saber que necesitas, debes ser mas explicito

94
C/C++ / Re:No compila programa del libro de Luis Joyages Aguilar de Depreciaciones
« en: Martes 20 de Noviembre de 2012, 08:44 »
El mismo error te lo esta diciendo:

Floating point error: divide by 0.

No es posible dividir por cero,

http://es.wikipedia.org/wiki/Divisi%C3%B3n_por_cero

el resultado de la divison por cero se considera intederminado, y por lo tanto el progama se aborta


Revisa los valores que capturas y verifica que no dividas por cero, en este caso me parece que el valor que no puede ser cero es el de vida util.

Saludos :)

95
C/C++ / Re:No compila programa del libro de Luis Joyages Aguilar de Depreciaciones
« en: Domingo 18 de Noviembre de 2012, 23:12 »
Hola eLPortaFrases, bienvenido al foro.

Antes que nada unos consejos:

1. Por favor no escribas todo en mayusculas, ya que eso equivale a como si nos estuvieras gritando.
2. Utiliza las etiquetas de code (hay un icono con un # que dice insertar codigo), cuando publiques un programa, ya que eso mejora su legibilidad

Dicho eso, vamos al problema.

Bueno, no tengo el libro de Luis Joyanes Aguilar, asi que no se si realmente el codigo esta exactamente igual que en el libro, o lo copiaste mal, pero si puedo decirte que hay varios errores.

1. La funcion main() nunca se pone como void, el tipo siempre sera int, y es neecsario añadir un return 0 al final de la funcion main().

2. Las siguientes palabras son palabras reservadas de C y funciones de C, y siempre se escriben todo con minusculas, nunca con mayusculas o mezcla de mayusculas/minusculas: double, int, puts, scanf, while, printf. Esas son algunas pero no son todas las palabras reservadas de C y funciones de C, deberas revisar siempre cuales son y escribirlas siempre en minusculas.

3. Los simbolos “ y –, estan equivocados, deberas utilizar siempre " y - (signo de menos)

4. La variable Valor_Actual la escribes de diferentes maneras, a veces en minusculas, a veces sin guion y a veces con guion, cuando defines una variable en C siempre debes utilizarla exactamente igual a como la defines en tu lista de variables, ya que si no te dara errores de sintaxis

Dicho eso te dejo el codigo con las correcccones.
Código: [Seleccionar]
/*
Este programa obtiene una tabla de depreciaciones acumuladas y valores reales de cada anio de un determinado producto
*/
#include <stdio.h>
int main ()
{
    double Coste, Depreciacion,
        Valor_Recuperacion,
        Valor_Actual,
        Acumulado,
        Valor_Anual;
    int Anio, Vida_Util;
    puts ("Introduzca coste, valor_Recuperacion y vida_util");
    scanf ("%lf %lf %lf", &Coste, &Valor_Recuperacion, &Vida_Util);
    puts ("Introduzca anio actual");
    scanf ("%d", &Anio);
    Valor_Actual = Coste;
    Depreciacion = (Coste - Valor_Recuperacion) / Vida_Util;
    Acumulado = 0;
    puts  ("Añio Depreciacion Dep. Acumulada");
    while (Anio < Vida_Util)
    {
        Acumulado = Acumulado + Depreciacion;
        Valor_Actual = Valor_Actual - Depreciacion;
        printf ("Anio: %d, Depreciacion:%.21f, %.21f Acumulada",
            Anio, Depreciacion, Acumulado);
        Anio = Anio + 1;
    }

    return 0;
}

Saludos :)

96
C/C++ / Re:Resultado distinto según número decimal.
« en: Sábado 17 de Noviembre de 2012, 22:09 »
El problema se encuentra en los errores de redondeo al trabajar con numeros de punto flotante.

Cuando se guarda un numero de punto flotante, al contrario de los numeros enteros, en realidad es una aproximacion al numero verdadero, esto es debido a que no es posible guardar de manera exacta un numero de punto flotante cualquiera con un numero limitado de bits.

En el caso del numero 0.07, internamente se guarda como el numero 0.070000000000000007, que como podras ver no es exactamente 0.07, si tu utilizas cout para desplegar y comprobar el numero veras 0.07, porque el cout tambien te redondea los decimales, para poder ver el numero real que se guarda internamente en la memoria es necesario utilizar el manipulador fixed.

Te dejo a continuacion el programa modificado, usando fixed, para que puedas ver los errores en el redoneo:

Código: [Seleccionar]
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    double numero;
    int potencia10 =1;

    do{
        cout << "Ingrese Numero: ";
        cin >> numero;
    }while(numero < 0);

    cout.precision(20);
    cout << fixed << numero << endl;
    while(floor(numero) != numero){
        numero = numero*10;
        cout << fixed << numero << endl;
        potencia10 = potencia10 * 10;
    }

    cout << "Hay que multiplicarlo por " << potencia10;
    cout << " Para que sea un numero entero" << endl;
    return 0;
}

Como nota adicional, no podemos evitar los errores de redondeo, solo podemos minimizarlos

Saludos :)

97
C/C++ / Re:AYUUUDA XFAVOR CHICOS AYUUDENME CON UN PROGRAMA POR FAVOR
« en: Sábado 17 de Noviembre de 2012, 17:40 »
1. No se hacen tareas.

2. No debes escribir todo en mayuscula, eso equivale a gritar, y a naide la gusta que le griten:

3. - Cómo Hacer Preguntas De Forma Inteligente

98
C/C++ / Re:Array a Función me cambia valor
« en: Viernes 9 de Noviembre de 2012, 22:24 »
La seguna seria la forma correcta:

Código: [Seleccionar]
memcpy(vec, rvec,sizeof(int) * cantidad);
Saludos :)

99
C/C++ / Re:Array a Función me cambia valor
« en: Viernes 9 de Noviembre de 2012, 21:03 »
Hola cotolon, bienvenido al foro
A ver tratataremos de responder a tus dudas
Citar
El problema aquí, es que creo que el parámetro "arr[]" está funcionando como un puntero ya que me cambia el valor del primer elemento de 4 a 10.

Exactamente, tal como mencionas es correcto, en C/C++ los arreglos funcionan como punteros, es decir, en el caso de arreglos, en lugar mandar un copia del vector, SIEMPRE, se manda la direccion del vector. Y esto no se puede cambiar, el lenguaje C asi esta diseñado para funcionar.


Citar
¿Hay alguna forma de pasar el array "vec" a la función, sin que me cambie el valor de algún elemento de "vec"

Para redondear lo dicho anteriormente, NO HAY FORMA de hacer lo que dices, pero tal como descubriste, la solucion para evitar cambios en tu arreglo original es hacer una copia del arreglo, y mandarle como parametro a la funcion la copia.

Puedes hacer la copia manualmente o puedes utilizar la funcion memcpy de la libreria string.h/cstring

http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

Saludos :)

100
C/C++ / Re:problema programacion en C
« en: Viernes 9 de Noviembre de 2012, 00:02 »
Hola hkrxd, bienvendo al foro.

El error esta en a funcion scanf(),  requiere que le pases como parametro la direccion de la variable por medio del &:Ejemplo

Código: [Seleccionar]
//Incorrecto, necesitas la direccion de op, se obtiene por medio de &
scanf("%d", op);
//Correcto
scanf("%d", &op);

Corrije todos tus scanf anteponiendo el & a todas las variables que leas

Saludos :)

Páginas: 1 2 3 [4] 5 6 ... 32