Avatar billede montago Praktikant
01. september 2004 - 11:59 Der er 13 kommentarer og
1 løsning

udskrive tal i ANSI C

hejsa, jeg er lige gået igang med C... og vil gerne udskrive nogle tal i en tekstfil...

tallene skal i sidste ende kunne være ret store fx '123456'

indtil videre virker dette :

#include <stdio.h>

int main ()
{
  FILE * pFile;
  int c;

  pFile=fopen("alphabet.txt","w");

  for (c = 0 ; c <= 255 ; c++)
  {
    putc (c , pFile);
  }

  fclose (pFile);
  return 0;
}

men den udskriver kun tegn med ascii værdien c

hvordan udskriver jeg fx '123456' efterfulgt af '\t'
Avatar billede arne_v Ekspert
01. september 2004 - 12:03 #1
prøv:

  for (c = 0 ; c <= 255 ; c++)
  {
    fprintf (pFile, "%d", c);
  }
Avatar billede arne_v Ekspert
01. september 2004 - 12:03 #2
eller:

for (c = 0 ; c <= 255 ; c++)
  {
    fprintf (pFile, "%d\n", c);
  }

hvis du vil have linieskift.
Avatar billede montago Praktikant
01. september 2004 - 12:05 #3
cool det var sådan jeg ville have det !!
Avatar billede montago Praktikant
01. september 2004 - 12:06 #4
giv et svar !
Avatar billede montago Praktikant
01. september 2004 - 12:11 #5
hehe... en lille sjov ting jeg vil høre om...

denne her for-løkke..
for (i=3 ; i<=100000000 ; i=i+2)

stopper aldrig... jeg satte den igang... men den bliver ved, selvom slut tallet er nået ! ??
Avatar billede montago Praktikant
01. september 2004 - 12:19 #6
hmm eller not... tallet er bare ret stort... jeg syntes bare i går at den overskred tallet...

på den anden side er det også pænt stort
Avatar billede arne_v Ekspert
01. september 2004 - 12:23 #7
svar
Avatar billede arne_v Ekspert
01. september 2004 - 12:24 #8
100 mio. gange (8 cifre + 2 tegn til linieskift) = 1 GB

det tager nok lidt tid !

:-)
Avatar billede montago Praktikant
01. september 2004 - 12:26 #9
nej for det er kun prim-tallene derimellem... ca 10%... forventet størrelse af fil er kun 60 mb
Avatar billede montago Praktikant
01. september 2004 - 12:28 #10
100 mio = 100mb... du ved nok

så det du sagde passer... hvis det var gigabit
Avatar billede arne_v Ekspert
01. september 2004 - 12:34 #11
Hvis du udregner prim tal så kan det godt tage meget lang tid med
at checke om det er primtal eller ej.
Avatar billede arne_v Ekspert
01. september 2004 - 12:34 #12
100 millioner 8 cifrede tal med linie skift efter hvert tal er 1 GB
Avatar billede montago Praktikant
01. september 2004 - 13:52 #13
for min skallede 1.5 ghz... tager det 10 minutter at lave 5 mio primtal...

der er kun 5,5 mio primtal mellem 0 og 100mio...

filen fylder kun 50mb
Avatar billede montago Praktikant
01. september 2004 - 13:52 #14
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <time.h>

int isPrime(int n);

main()
{
    int i;
    int tal = 0;
    int show = 10000;
    int minu,sec,deci;
   
    FILE * pFile;
    pFile = fopen("Primes.txt","w");
   
    printf("counting all prime from 2 to 100mio: \n");
    //printf("with how big space should i show primenumbers ?:");
    //scanf("%d",&show);

    fprintf (pFile, "%d\n", 2);
    for (i=3 ; i<=100000000 ; i=i+2)
    {
        if (isPrime(i) == 1)
        {
            //printf("%d\t",i);
            if ((tal % show) == 0)
            {
                printf("number:%d\t",tal);
               
                minu = (clock()/1000)/60;
                sec = (clock()/1000) - (minu*60);
                deci = clock() % 1000;

                printf("total processtime = %d:%d,%d\t",minu,sec,deci);
                printf("%d\n",i);
               
            }
            tal++;
            fprintf (pFile, "%d\n", i);
        }
       
    }
    printf("\n\n total: %d Primes.\n\n",tal);
    printf("total processtime = %d",clock());
   
    fclose (pFile);
    return 0;
    getch();

}

int isPrime(int n)
{
    int i;
    int sqr = sqrt(n);

    if (n < 2)
        return 0;
    if ((n % 2) == 0)
        return 0;
   
    for (i=3 ; i<= sqr ; i = i+2)
    {
        if ((n % i) == 0)
            return 0;
    }
   
    return 1;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester