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

#21
No se si es exactamente esto lo que quieres. El código que te dejo aquí guarda los fragmentos entrecomillados de un fichero, en un fichero de texto de salida. He hecho la prueba con el fragmento que dejaste y parece que funciona.

Te lo dejo en este blog: http://cypascal.blogspot.com.es/2013/04/lectura-palabras-entrecomilladas-en-cc.html

Y aquí también:

#include <stdio.h>
#include <string.h>

int main(void)
{
FILE *dat,*dat2;
char nombre[50],c;

printf("Nombre del fichero a leer: "); scanf("%s", &nombre);


if (fopen(nombre,"r")==NULL)
 printf("\nEl fichero no existe.\n\n");
else
   {
 dat=fopen(nombre,"r");
 dat2=fopen("salida.txt","w");
 fscanf(dat,"%c",&c);
 while (!feof(dat))
 {
  if (c=='"')
  {
               fscanf(dat,"%c",&c);      
               while ((!feof(dat))&&(c!='"'))
               {
                     /*Aquí es donde se guardan los datos entre comillas*/
                     /*En este caso imprime en fichero de texto*/
                     fprintf(dat2,"%c",c);
                     fscanf(dat,"%c",&c);
               }
               fprintf(dat2,"\n");            
           }
  fscanf(dat,"%c",&c);
 }
 fclose(dat);
}
return 0;
}


Salu10

Edito: No me di cuenta que lo tenías en C++, sorry...
#22
Muchas gracias por los enlaces, probare mañana que tendré tiempo y ya te contaré a ver que tal, a ver si esta vez lo consigo, porque ya he estado mirando, en este enlace:

http://suchideas.com/journal/2007/07/installing-gmp-on-windows/

y me fallaba el paso 4.IV donde dice que hay que ejecutar un .exe de los ficheros que te descargas de la biblioteca.

Probaré con los tuyos, muchas gracias!!

Salu10.
#23
Conocía ese algoritmo, (que es el que se usa en la actualidad) pero me topaba otra vez con el problema de la precisión. Con la biblioteca gmp efectivamente se evita, y se puede calcular con ese algoritmo, y probablemente obtengas una burrada (pero burrada burrada ¿10^20 dígitos?) de dígitos. El problema que tengo es que no consigo ejecutar la librería gmp

Salu10.
#24
He visto que había un tema abierto sobre el cálculo de PI, pero no dejaba comentar, así que abro éste.
Llevaba un tiempo queriendo calcular grandes cantidades de dígitos de Pi, pero siempre me encontraba con la misma limitación, no se puede trabajar en coma flotante. Así que decidí indagar por la red, y me encontré con un algoritmo que permite el cálculo de los dígitos de Pi por separado y de manera muy rápida. Este método se conoce como "Spigot Algorithm", y se basa a grosso modo en trabajar en una base distinta a la decimal.
Si queréis más información sobre el algorítmo y el código, con su ejecución y una salida, les dejo este enlace:

http://cypascal.blogspot.com.es/2013/03/calcular-pi.html

Yo he comprobado que los decimales son correctos hasta 10.000, pero supongo que se puede llegar a bastantes más. El tiempo de ejecución es muy pequeño, menor de un segundo.

Aquí también el código:

#include <stdio.h>

const int n=10000;
const int dim=((10*n)/3);
int i,j,k, resto, digant, nueves, aux;
int pi[dim+1];

int main (void)
{
    for (i=1;i<=dim;i++) pi[i]=2;
    nueves=0; digant=0;
    for (i=1;i<=n;i++)
    {
        resto=0;
        for (j=dim;j>=1;j--)
        {
            aux=10*pi[j]+resto*j;
            pi[j]=aux % (2*j-1);
            resto=aux/(2*j-1);
        }
        pi[1]=resto % 10;
        resto=resto/10;
        if (resto==9) nueves++;
        else if (resto==10)
        {
             printf("%i",digant);
             for (k=1;k<=nueves;k++) printf("0");
             digant=0;
             nueves=0;
        }
        else
        {
            printf("%i",digant);
            digant=resto;
            if (nueves!=0)
            {
                for(k=1;k<=nueves;k++) printf("9");
                nueves=0;
            }
        }
    }
    printf("%i",digant);
    scanf("%i");
}


Si conocen algoritmo que también consiga gran cantidad de dígitos, y que no sea demasiado complicado de implementar, díganmelo, que es un tema que siempre me ha interesado.

Salu10.
#25
Yo creo que en el enlace queda más o menos claro que métodos se aplica. Yo no he encontrado ningún otro sitio donde esté el problema de los sudokus resuelto con lógica, ni en C ni en ningún otro lenguaje.

Salu10.
#26
Estoy tonto y pensé que no lo habia enviado.

Salu10
#27
Solo me remití a leer lo que ponía en tu mensaje, no compilé ni ejecuté el codigo, que suponía que estaba bien:

Cita de: leosansan en  4 Diciembre 2012, 14:24 PM
Aunque ya Ferno te ha contestado a parte de la pregunta, podrías incluir la librería math y aprovechar que para que un número sea primo basta con que no sea divisible entre 2 y la raíz del número. Con todas las aportaciones te quedaría:


No quise decir que estuviera mal, pero perdón de todas formas por el mal enentdido.

Salu10
#28
Hay que tener cuidado con el 2, que es primo
#29
Si, ya estamos todos trabajando para resolverte el programa. En cuanto lo tengamos lo ponemos.

Salu10!
#30
Si es un numero decimal entero, basta con dividir por potencias 10 para ir obteniendo cada digito (division entera).
Si esta en otra base, base n-ésima, se divide por potencias de n y ya.