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

#871
Programación C/C++ / Re: [C] Error Caracteres
19 Abril 2013, 21:56 PM
Pues a mí no me da ese problema:

Código (cpp) [Seleccionar]
Ipmb rvf ubm

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

int main(){
    int i ;
    char frase[100]="Hola que tal";
    //printf("Escribe una frase: ");
    //scanf("%s",&frase);
    for (i=0;frase[i]!='\0';i++){
          if (frase[i]!=' ')
            frase[i]+=1;
    }
    printf("%s", frase);
    return 0;
}


Saluditos!. ....
#872
Programación C/C++ / Re: Ayuda con fprintf
19 Abril 2013, 20:24 PM
Simple,claro y preciso. Me encantan tus lecciones rir3760. Siempre aprendiendo de tus respuestas.

Gracias por compartir tus amplísimos conocimientos  de C/C++ con los demás y "por nada".

Un fuerte saludo, "fenómeno".
#873
Cita de: Daniel_Ruiz en 19 Abril 2013, 16:39 PM
Que necesito tener en mi pc para programar con allegro?

cuanto de video o algo?

No te preocupes demasiado, a no ser que tu PC tenga más de diez años funcionará. Otra cosa es el jugo que puedas sacarle y, como no, la instalación. Son odiosas.

Saluditos!. ...
.
#874
Sin entrar en memoria dinámica para abreviar, esto podría servirte, creo:

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


int main(){
   int num1 ,num2;
   int i=0;
   printf("Escribe un numero: ");
   scanf("%d", &num1);
   for (i=1;;i++){
         printf("Escribe un numero: ");
         scanf("%d", &num2);
         if (num2<num1)
           break;
         else
           num1=num2;
   }
   printf("Se han contado %d veces", i);
   printf("\n\n");
   system("pause");
   return 0;
}

Saluditos!. ....

P.D: Perdón, era con un while:

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


int main(){
    int num1 ,num2;
    int i=0;
    printf("Escribe un numero: ");
    scanf("%d", &num1);
    while (1){
          i++;
          printf("Escribe un numero: ");
          scanf("%d", &num2);
          if (num2<num1)
            break;
          else
            num1=num2;
    }
    printf("Se han contado %d veces", i);
    printf("\n\n");
    system("pause");
    return 0;
}



Saluditos otra vez ....
#875
Programación C/C++ / Re: Teorema Binomial
18 Abril 2013, 21:42 PM
PD;Como te comentaba, el uso de los factoriales para el cálculo de los números combinatorios tiene el inconveniente de su tamaño, desbordan las posibilidades de C/C++ desde 14 o 15.

Para evitarlo existe otra forma de calcular los números combinatorios que técnicamente consiste en dividir las variaciones de n tomados de p en p entre las permutaciones de p. Vamos que con un ejemplo se ve que es más fácil de lo que parece:

Combinaciones(15,4)= 15/4 * 14/3 * 13/2 * 12/1.

Y aún así se puede mejorar la eficiencia del cálculo. Por ejemplo:

Combinaciones(15,12)=15/12*14/11*13/10*12/9*11/8*10/7*.....

Muy largo, ¿verdad?. Pero eso se puede remediar aprovechado una propiedad de los números combinatorios que establece que :

Combinaciones(n,p)=Combinaciones(n,n-p)

Y aplicada al caso último daría:

Combinaciones(15,12)=Combinaciones(15,3)=15/3 *14/2 *13/1

Mucho más breve que el anterior método.

Así, aprovechando estas dos propiedades, la primera para cuando es inferior a la mitad de n y la segunda para cuando es superior surge el código mágico que te permitirá "meter" de exponente 20 y más sin problemas de que el C/C++ "cruja" soltando números "raros" porque se salen de sus capacidades:


Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;


float comb(int n,int p)
{
   int i;
   if (n < 0 || p < 0 || p > n) return 0;
   float c = 1;
   if (p>n/2)
       p=n-p;
   for ( p; p>=1; p--,n--)
   c*= n/p;
   return c;
}
int main()
{
   long int n, p, num , y;
   char a,b;
   cout << "escriba el exponente de la ecuacion = ";
   cin >> n;
   cout << "escribir el primer termino = ";
   cin >>a ;
   cout << "escribir el segundo termino = ";
   cin >>b ;

   for (p=0; p<=n; p++)
   {
       num = comb(n,p);
       y=n-p;
       if (p==0 )
           cout<< num <<" " << a << "^ " << n<< " + " ;
       else if ( p==n)
           cout << num <<" "<< b <<"^ " << p ;
      else {

       cout << num <<" "<< a << "^ " << y << " * " << b <<"^ " << p <<" + " ;
      }

   }
   return 0;
}


He aquí la salida para exponente 20:

Código (cpp) [Seleccionar]

escriba el exponente de la ecuacion = 20
escribir el primer termino = a
escribir el segundo termino = b
1 a^ 20 + 20 a^ 19 * b^ 1 + 190 a^ 18 * b^ 2 + 972 a^ 17 * b^ 3 + 4590 a^ 16 * b^
4 + 12288 a^ 15 * b^ 5 + 21600 a^ 14 * b^ 6 + 35280 a^ 13 * b^ 7 + 65520 a^ 12 *
b^ 8 + 41472 a^ 11 * b^ 9 + 76032 a^ 10 * b^ 10 + 41472 a^ 9 * b^ 11 + 65520 a^
8 * b^ 12 + 35280 a^ 7 * b^ 13 + 21600 a^ 6 * b^ 14 + 12288 a^ 5 * b^ 15 + 4590 a
^ 4 * b^ 16 + 972 a^ 3 * b^ 17 + 190 a^ 2 * b^ 18 + 20 a^ 1 * b^ 19 + 1 b^ 20


Y ya que estamos en el tema de los combinatorios surge la cuestión del triángulos de Pascal o Tartaglia que da los números combinatorios de una forma aún más directa, teniendo en cuenta que los extremos del triángulo son unos y los números interiores son la suma de los dos superiores. Como se observa, en este método no se hacen multiplicaciones ni divisiones, sólo sumas por lo que resulta ser más eficiente que el ya eficiente anterior. Una muestra del triángulo de Pascal para 20, 19 en realidad ya que se empieza contando desde cero es la siguiente, aunque para verlo en todo su esplendor deberían ir al icono izquierdo de la consola, picar en propiedades, elegir  diseño y poner en el ancho 150 y verán esto:


REEDITO: Lo pongo sólo de 12 porque en la página web no "cabe" más grande:


Código (cpp) [Seleccionar]
           
                                      1
                                  1     1
                               1     2     1
                            1     3     3     1
                         1     4     6     4     1
                      1     5     8     8     5     1
                   1     6    15    16    15     6     1
                1     7    18    30    30    18     7     1
             1     8    28    36    60    36    28     8     1
          1     9    32    84    72    72    84    32     9     1
       1    10    45    96   168   144   168    96    45    10     1
    1    11    50   135   192   336   336   192   135    50    11     1



¡ Lástima !que no "quepa" el de 20.


Saluditos! ... y perdón por el retraso en la respuesta, pero estoy liado con "otras cosas". ....

P.D.P.D: Sorry nuevamente por no haber editado en el anterior mensaje, si alguien puede que los "pegue". >:D
#876
Programación C/C++ / Re: Teorema Binomial
18 Abril 2013, 19:44 PM
Cita de: Black Lotus en 18 Abril 2013, 17:27 PM
Si es así como lo quería exactamente gracias   ;-) ;-) ;-) ;-) ;-)

Ahora una duda: Porque solo me deja ingresar a la potencia 13.. Si pongo la potencia 14-15 en adelante me salen signos positivos y negativos y no debe ser así:


Eso es porque los factoriales toman valores demasiados elevados para C/C++. No es un lenguaje que maneje números enteros de muchas cifras. Eso se resuelve calculando los números combinatorios sin usar los factoriales.

Saluditos!. ...
#877
Programación C/C++ / Re: Problema al ejecutar
18 Abril 2013, 16:05 PM
Cita de: rir3760 en 18 Abril 2013, 16:00 PM
No funcionara ya que se trata de arrays de caracteres. Como ya se indico en el tema para comparar cadenas en C se debe utilizar la función strcmp.


Creo que no has cogido la "indirecta". Es una coña , con perdón, muy aguda del amigo Black Master

Siempre es agradable, pero en tu caso más el mandar mis   ¡Saluditos!...
#878
Programación C/C++ / Re: Problema al ejecutar
18 Abril 2013, 15:58 PM
Cita de: Black Master en 18 Abril 2013, 15:45 PM
Código (cpp) [Seleccionar]
if (respuesta1=="SI" || respuesta1=="si"){
talalalalala
}else{
purruski
}


       

P.D:Como decimos en mi tierra, "arrallate un millo" ;-)
#879
Programación C/C++ / Re: Que esta mal
18 Abril 2013, 05:26 AM
Cita de: Daniel_Ruiz en 17 Abril 2013, 23:57 PM
Vale teacher El tipo del tutorial lo tenia haci :s

Sorry pues amigo Daniel.

Entonces es como te dijo amchacon

Saluditos!...
#880
Programación C/C++ / Re: Problema al ejecutar
18 Abril 2013, 05:15 AM
No tiene como mucho sentido, aunque sea para practicar, lo que planteas. Por lo pronto respuesta 1 no tiene asignado ningún valor con lo que la comparación con respuesta 2 es un poco absurda. Además las comparaciones entre cadenas se hacen con la función "strcmp()" de la librería string.

Podría ser algo como esto:


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

int main()

{
   char respuesta1[10]= "No",respuesta2[10] = "No", yaco[10] = "Si";
   printf("Sos gay? (Si/No): ");
   scanf("%s",&respuesta1);
   if ( strcmp(respuesta1 , respuesta2 )==0)
   {
                           printf("No mientas: \n");
   }
   else
   {
   printf("Su respuesta fue: %s\n", yaco);
   printf("Usted es Gay\n");
   }

 return 0;
}


Saluditos!. ...