Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - leosansan

#1221
Programación C/C++ / Re: RETOS C++
24 Octubre 2012, 21:59 PM
Cita de: Stakewinner00 en 24 Octubre 2012, 20:29 PM
Actualizado

como paso tanto tiempo nose si a todos sume los que tocan,si me deje alguien que me lo diga.
Si te gusto mi solución al diccionario por fuerza bruta que está en esta página, a mí no me habrías sumado los puntos.
Anímate y pon nuevos retos y si se puede te podemos sugerir algunos.
Saludos!.
#1222
Cita de: Caster en 24 Octubre 2012, 20:04 PM
¡Guau!
voy a postear bastante mas porque he leido algunos y posiblemente sepa hacerlos, pero voy a tener que pedir ayuda y pensar mucho  :xD :xD 
CitarSi te parece, habre un hilo nuevo y cuelga aquellos que vayas a "atacar", como se hizo en los retos de C++, pero estos serán retos en C, y me tendrás a tu disposición. Te puedo incluso recomendar algunos ejercicios interesantes, como el que se puso en un tema anterior denominado "centros numéricos". A pesar de su "pomposo" nombre es relativamente sencillo con diversas opciones. La respuesta que puse no tiene explicación alguna porque el que colgo el tema no había hecho nada y no era plan de dárselo todo hecho.
¡ÄNIMO!
Saludos.
#1223
Programación C/C++ / Re: Leer un char como float
24 Octubre 2012, 13:57 PM
Cita de: za.asi en 23 Octubre 2012, 23:36 PM
Pero no quiero tener que escribirlo así, porque de esta manera no puedo calcular el radio de un AN de 1 kg, que puedo querer hacerlo. Además, quiero hacer esto para las masas de un protón, un átomo, la Tierra, Júpiter y el Sol, y tendría que reservar demasiadas variables. Lo que quiero es escribir Mt y que lea 5.98e24 (la masa de la Tierra) sin que tenga que reservar valores concretos que me podría interesar calcular.
El ordenador no es "adivino", en el sentido de que al introducir Ms él interprete que es la masa del Sol. Tienes que implementarlo, bien a lo sencillo como hice yo o a lo profesional como hizo rir.
En cualquier caso, en el código tienes que introducir previamente los valores de las variables más comunes que uses; masad del Sol, de júpiter, de la Tierra, del protón, etc.
Una vez introducidas en el código dichas masas está la forma de acceder a ellas. Una forma sencilla sería crear un índice donde a cada masa se le va asignando un valor: Ms=0,Mt=1,Mj=2 .... y luego crear un array donde "estén" los valores numéricos: masas[3]={1.9891e30, 5.98e24, 5.98e24}. Lo anterior lo he hecho para el caso de las masa del Sol, Tierra y Júpiter, y tú lo amplias según tus necesidades.
Al corrrer el program tienes una opción para entrar la masa en Kg, si así lo deseas, o con la "chuletilla" de las masas según el índice.
Repito lo primero, el ordenador "no sabe" lo que es Ms, lo tienes que declarar tú.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
using namespace std;
int main ()
{
    double masa=0,r=0,G=6.67e-11,c=3e8,Ms=0,Mt=1,Mj=2;
    double masas[3]={1.9891e30, 5.98e24, 5.98e24};
    int indice;
    cout << "Indique la masa (negativo si va e entrar la masa en Kg)=";
    cin >> indice;
    if (indice<0)
        {
            cout <<"m=";cin >>masa;
            r=2*G*masa/(c*c);
        }
    else
        r=2*G*masas[indice]/(c*c);
    cout <<r;
    return 0;
}
#1224
Programación C/C++ / Re: Leer un char como float
23 Octubre 2012, 23:07 PM
Cita de: za.asi en 23 Octubre 2012, 22:38 PM
quiero poder escribir Ms (por ejemplo) para no tener que escribir la masa del Sol y que al leer lo lea como float 1.9891e30.
Alguien podría explicarme como hacerlo?

Puedes escribir incluso menos:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   const  float G=6.67e-11,c=3e8,Ms=1.9891e30;
   float m,r,a=0;
   cout << "a(1 para Ms )=" ;
   cin >> a;
   if (a==1) m=Ms;
   else {cout << "m=" ;cin >> m;}
   r=2*G*m/(c*c);
   cout << r << endl;
   return 0;
}

Saludos!.
#1225
Cita de: FMR en 23 Octubre 2012, 03:38 AM
Muchas gracias leosansan, me funcionó perfecto ya que si convertía el int a char me traería problemas con otras cosas en mi código y sin convertirlo de int a otro tipo me pareció perfecto, sólo una pregunta, ¿para qué se usa el n=n/10;? Todo lo entendí pero eso no muy bien, necesito comprenderlo bien ya que soy algo nuevo en el c++.
Cada vez que haces n/10 divides entre 10 de forma entera, con lo que te "comes" un dígito del número inicial, al tiempo que "contador" se incrementa contando así los dígitos.
Saludos!.
#1226
Cita de: kikian94 en 21 Octubre 2012, 22:05 PM
hola, necesito hacer un programa que me calcule centros numericos y no tengo ni idea de como comenzar , se tiene que meter el orden del centro numerico y nos tiene que decir cuanto vale, por ejemple el centro numerico 1 es igual a 6, y asi con todos
Mira si te vale lo que te paso, aunque comprueba algunos valores conocidos, yo no tengo tiempo:
Código (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define n   1000000
int main()
{
    float centro=0;
    int i,orden=1,orden_1;

    printf(" \n Ingrese el orden del centro:  ");
    scanf("%d", &orden_1);/**/
    for (i=2;i<=n;i++)
        {
            centro =sqrt ((i*i+i)/2);
            if (centro == (int)centro )
                {

                    if (orden_1==orden)
                        printf(" \n El centro es: %g de orden %d\n", centro,orden);
                    orden++;
                }

        }
    return 0;
}
#1227
Cita de: DickGumshoe en 21 Octubre 2012, 14:41 PM
Vayamos paso por paso:
Una imagen vale más que mil palabras:
Código (cpp) [Seleccionar]
#include <stdio.h>

main ()
{
char nombre_apellido [100];
char lugar [100];
printf ("Como te llamas\?");
scanf ("%100[^\n]", nombre_apellido);
printf ("Hola %s, por favor, introduce lo siguiente:\n", nombre_apellido);
printf ("Donde vives\n?");
fflush (stdin);
scanf ("%100[^\n]", lugar);
printf ("Ahora sé que te llamas %s y vives en %s.\nEsto fue una prueba de C.\n", nombre_apellido, lugar);
return 0;
}

Ahora ya introduce nombre y apellidos y lugar con los espacios que quiera y sin que se salte ninguna sentencia.
...Si, ya sé que fflush no es muy querida, pero hace su labor; otra opción es la apuntada por Caster.
#1228
Cita de: DickGumshoe en 21 Octubre 2012, 14:31 PM
Leosansan, no tiene declarada la variable apellido porque en su ejemplo, su nombre completo es "Nombre Apellido" (es una sola cadena, ergo no hacen falta dos variables).
Fíjate en y ya me diras de dónde sale eso del código que expuso.
#1229
Cita de: indict en 21 Octubre 2012, 14:11 PM
Muchas gracias leosansan ahora ya lo comprendo, lo único que al calcular los residuos de un entero imprime por pantalla todos y aparece como último el Dividendo que es menor que 10, en lugar de 1, pero es correcto ¿no?

No se si me he explicado bien, por ejemplo de 324

324/10=32 324%10=4
32/10=3     32%10=2
3/10=0       3%10=1 <===el resultado es 3, no 1:es el resto

No muestra 4 2 1 sino 4 2 3 <====como debe ser
Saludos!.
#1230
Cita de: darg94 en 21 Octubre 2012, 13:46 PM
He hecho un programa de prueba para testear la impresión de cadenas de carácteres, pero me da el siguiente error:
Difícil que te de ese error cuando no tienes ni declarada la variable apellido ni aparece dicho nombre en los printf, además de asignar el símbolo %S de cadenas a caracteres a,b,c.
Supongo que esto es lo que querías hacer:

Código (cpp) [Seleccionar]
#include <stdio.h>

main ()
{
char nombre [100];
char apellido [100];
char lugar [100];
printf ("Como te llamas\?");
scanf ("%s", nombre);
printf ("Hola %s, por favor, introduce lo siguiente: apellido\n",nombre );
scanf ("%s", apellido);
printf ("\nDonde vives\n");
scanf ("%s", lugar);
printf ("\nAhora se que te llamas %s %s y vives en %s.\nEsto fue una prueba de C.\n",  nombre, apellido, lugar);
getchar();
return 0;
}

PD:no hay que limpiar buffer porque todos los printf llevan \n.