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 - edr89

#71
Cita de: leosansan en  6 Junio 2013, 08:47 AM


            printf ("   ")  ;
           
            printf ("%6d",(facto(i))/(facto(k)*(facto(i-k))));

}


Gracias, quedo chulo, la clave esta en %6 y 3 espacios, me olvide por completo del formato con espacios al imprimir :-[

Tenia una variable que era el elemento del renglon pero veo que no hay necesidad de definirla, basta con realizar las operaciones directamente en printf(); Por alguna razon pensé que seria util tener el dato de la casilla pero nunca se usa, solo se imprime y ya.

Saludos.
#72
Cambiar la impresion de un arreglo (C++)

Como puedo imprimir las tabulaciones para darle forma al triangulo en C?
#include<stdio.h>

int main()
{
    int i,j=1,k=1,tab,n=4; //i = renglones  j = elementos
    long int elemento;
    for(i=0;i<14;i++) //Renglones 0,1,2,3,4,5...
    {
        for(j=0;j<k;j++) //Renglon 0, elemento 1
        {
            elemento = (facto(i))/(facto(j)*(facto(i-j)));
            printf("%d ",elemento);

        }
        k++;
        printf("\n");
        n-=1;

    }
}

facto(long long int num)
{
   int i=num;
   long long fact=1;
   for(i=num;i>1;i--)
    {
        fact*=i;
    }
    return fact;
}


Estaba intentando con:
for(tab=n;tab>0;tab--)
        {
            printf("\t");
        }

pero queda mal, muy mal  :laugh:
#73
Programación C/C++ / Re: Numeros Romanos
6 Junio 2013, 04:12 AM
Cita de: leosansan en  4 Junio 2013, 05:32 AM
...En cuyo sencillamente caso habría que considerar a un caracter y su anterior.

Pero eso sería otra cosa distinta a la propuesta por 05K4R1N.
Escribí un código distinto que no contempla los numeros IX, XL, etc, simplemente suma las letras, para algunos valores funciona, para otros no.

La idea no se como implementarla es:
1. Longitud del dato tecleado usando strlen().
2. Si es par leer primer y segundo caracter, revisar si hay alguna combinacion tipo IV, IX, XL, XC, CD, CM..., si verdadero restar digitos, de lo contrario sumar.
3. Si la longitud es impar se lee primer y segundo caracter, segundo y tercero, etc. Las condiciones son las mismas, buscar casos donde se tenga que restar y no sumar

Estoy pensando en algo como
//stringlenght = longitud de dato

if((stringlenght%2)==0) //Cuando la longitud es par
{
    for(i=0;i<(stringlenght-1);i+2)//lectura de primer caracter en par.
    {
        /*Aqui se me ocurre usar algo como isalpha()
        Si I entonce digito=1
        Si X ,digito= 10, etc
        se asigna el valor del caracter a una variable PrimerDigito
        */
        for(j=1;numero_romano[j]!=NULL;j+2) //lectura de segundo caracter en par.
        {
            /*Aca tambien algo similar
            si C = 100
            si D...
            tambien asignamos el valor del segundo caracter a SegundoDigito
            */
            if((PrimerDigito - SegundoDigito)<0)
            {
                //Si es negativo quiere decir que hay numeros tipo IV, IX, XL, etc
                //entonces aqui se asigna el resultado de los dos digitos en una nueva variable global
            }
        }
    }
}
else
{
    //Codigo para impar
}


Esto es el codigo que solamente suma:
int main()
{  
int i,romano=0,caracteres=0;
   char numero[10];
   printf("Escribe un numero romano:");
   gets(numero);
   for(i=0;i<10;i++)
   {
       switch(numero[i])
       {
           case 'M': romano+=1000;
               break;
           case 'D': romano+=500;
               break;
           case 'C': romano+=100;
               break;
           case 'L': romano+=50;
               break;
           case 'X': romano+=10;
               break;
           case 'V': romano+=5;
               break;
           case 'I': romano+=1;
               break;
       }
   }
   printf("\n%d",romano);
}


alguna idea?
saludos!!
#74
Programación C/C++ / Re: Código C
6 Junio 2013, 03:10 AM
Cuando publicas un código en la primera fila esta el formato de texto, el ultimo elemento que dice GeSHi tiene varias opciones para poner el codigo con colores y todo se ve mas bonito.

qué significa esto?
for(j=0;j<rom2.length;j++)

rom2.lenght??

al compilarlo me da error por el termino length, ademas no veo que hayas declarado la variable valor, tambien lo esta marcando el compilador.
#75
Cita de: flony en  3 Junio 2013, 14:38 PM
hola sobre el tema de los números grandes, estaba buscando para que sirven los int8_t int16_t etc, y salio un tema interesante que lo conseguí de casualidad, dependiendo del nivel de precisión podrías usar algo llamado "punto fijo"...no se si sirva, pero para leerlo y ver si te sirve...acá una cosa que encontré referido al tema
http://www.indicart.com.ar/seminario-embebidos/Elementos%20de%20C%20Embebido.pdf

Gracias, lo reviso con tiempo.

Cita de: leosansan en  3 Junio 2013, 07:22 AM
Código (cpp) [Seleccionar]
Teclea el valor de x: 100
Valor estimado: 2.688117141816136e+043
Valor exacto: 2.688117141816136e+043.
Error cometido: -1.525664384353662e+027 .
Numero de terminos utilizados: 205

Teclea el valor de x: 500
Valor estimado: 1.403592217852838e+217
Valor exacto: 1.403592217852838e+217.
Error cometido: -6.745532683619974e+200 .
Numero de terminos utilizados: 716

Teclea el valor de x: 709
Valor estimado: 8.218407461554972e+307
Valor exacto: 8.218407461554972e+307.
Error cometido: -1.900336232223e+291 .
Numero de terminos utilizados: 964


Perdon pero me cuesta trabajo entender el código, tengo que resolverlo con la formula 1+x+(x^n)/n!... por eso solo traduje a C usando la funcion pow y factorial.

while (serie1!=serie2)
           {
                serie1=serie2;
                frac=frac*x/i++;
                serie2=serie1+frac;



La solucion como tal no la puedo dar usando la funcion exp, forzosamente tengo que usar la formula con factorial  :(  (aunque aqui esta solo como referencia)

Me gusto mucho este otro código, lo reviso con tiempo. Yo estaba probando a hacerlo por partes para aprender a definir varias funciones y usarlas en main.

gracias y saludos!

#76
Cita de: maxim_o en  3 Junio 2013, 10:37 AM
dentro de esa guía docente, te salen los libros recomentados, es decir los libros donde han basado sus apuntes, trasparencias, y el temario....

muchos cursos se pueden reducir a un par de libros y un buen metodo de estudio

Para aprender a programar hay muchos libros "Teach Yourself" que te pueden guiar en un inicio, ya mas avanzado consultas "Mastering (c,java,etc)" y si de plano no das hay foros especializados donde pueden ayudarte a resolver tus dudas.

Una universidad abierta? podrias ser autodidacta y tal vez terminarla en menos tiempo.
saludos!
#77
Hola,
tengo que calcular el valor de e^x con la serie 1+x+((x^2)/2!)+((x^n)/n!)
encontre un tema relacionado, el código descrito da el mismo resultado que el que yo he hecho.

1- No estoy seguro si he definido bien las variables
2- Para numeros muy grandes el resultado es falso, se arroja un numero negativo, leí en otro tema que se debe definir una funcion que permita numeros muy grandes (a la hora de calcular el factorial) porque la compilacion tiene un limite.

¿Se puede definir una variable mayor a long long?

Como me ha sucedido en ocasiones anteriores, el programa funciona pero no tengo la certeza de que el código este bien escrito. Comentarios y sugerencias bienvenidas.

#include <stdio.h>
#include <math.h>
main()
{
    int e,respuesta,n;
    float resultado=0;
    printf("Calcular e^x\n ");
    printf(" Valor de x: ");
    scanf("%d",&respuesta);
    printf(" Numero de terminos: ");
    scanf("%d",&n);
    for(e=n;e>1;e--)
        {
            resultado+= (pow(respuesta,n)) / (facto(n));
            n--;
        }
    resultado += 1 + respuesta;

    printf("\ne^%d: %.4f",respuesta,resultado);
}

facto(long long int num)
{
   int i=num;
   long long fact=1;
   for(i=num;i>1;i--)
    {
        fact*=i;
    }
    return fact;
}

saludos!
#78
Hay muchas universidades de USA que suben el material de los cursos y hay sitios como www.khanacademy.org/

El punto central es que definas tu plan de trabajo y los temas a aprender. El contenido en internet es amplio si tienes conocimiento de varios idiomas. Muchas cosas no estan desarrolladas como lo hacen en las universidad, de hecho me parece que aveces el contenido de internet es mas dinamico e interactivo, sobre todo si encuentras videos de youtube por ejemplo de algun tema en particular.

Personalmente te recomiendo consultar la biblioteca mas cercana y tramitar un ID, llevar el aprendizaje con libros a prestamo y complementar lo que no entiendas en internet, normalmente funciona. En fin, el tema del autoaprendizaje requiere que leas frecuentemente distintas fuentes y que seas constante, no importa que la información no este en forma de curso, lo importante es que sepas asimilar lo que encuentres.

saludos!

#79
Entendido, para imprimir numeros consecutivos, del 1 al 5 etc, debo usar
for (i=0;i<5;i++)
printf("%d.\n",++j);


donde j vale 0 y se imprime 1,2,3,4,5.
Para que imprima el incremento en la misma instruccion uso ++j, para imprimir en el incremento en la siguiente instruccion uso j++.

hay algo que no entiendo, en el ejemplo trivial se imprime:
Citari = 0   i++= 0   ++i= 2   i = 3   i++= 3   ++i= 5
al principio pense que se iba a imprimir 15 veces(5 del bucle por 3printfs), pero los incrementos en printf se guardan en la variable, entonces el bucle no corre 5 veces porque el valor de 5 se alcanza antes.

Si regresamos al codigo de notas el incremento en j trabaja diferente, lo trato de asociar asi:
for(j=0;j<5;j++) //Bucle para las 5 calificaciones
       {
           printf("Teclea la nota %d del alumno %d:",j+1,i+1);
           do{
               scanf(" %f",&nota);
               if(nota>10 || nota<0)
               {
                   printf("La nota ha de ser entre 0 y 10.\n");
                   printf("Vuelva a teclear la nota %d  del alumno %d:",j+1,i+1);
                   scanf(" %f,",&nota);
               }
           }while(nota>10 || nota<0);
           sum_notas+=nota;
       }

1. Valor inicial de j = 0
2. en el primer printf j=1
3. tercer printf j = 2?

es decir cuando la nota esta fuera de rango se imprime 1 de nuevo: "Vuelva a teclear la nota 1 del alumno 1". ¿por que en el ejemplo trivial i incrementa y se queda con ese nuevo valor?, para este otro caso j tiene el mismo valor, me explico?

Respecto a definir el tipo de funcion, mi duda es si da error cuando main() no es de algun tipo, en este caso el programa corre, da los promedios por alumno, el general, no parece haber fallas, si defino int main() y termino con return 0;

Qué sucede con el programa?
En general como puedo saber que tal o cual funcion debe ser de algun tipo y regresar algun valor.

Saludos!
#80
Cita de: lipman en 26 Mayo 2013, 09:56 AM
printf("Valor de la variable: %d",nombreVariable);

en donde la "d" del %d indica el tipo, y esto depende de la variable.

Si vas a imprimir varios caracteres utilizas %s
Si tu variable es racional utilizas %f
Si es entero %d,%i

Cita de: rir3760 en 26 Mayo 2013, 15:12 PM
En C se utiliza scanf para leer un valor y printf para imprimirlo mientras que en C++ la forma políticamente correcta es mediante los objetos cin (para lectura) y cout (para escritura).

Código (cpp) [Seleccionar]
cout << "Hello World";
cin >> variable;


saludos.