Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C]Problemi output

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    26

    [C]Problemi output

    Ho sviluppato un programma che calcola i primi numeri primi contenuti nei primi n numeri (inseriti a piacimento dall'utente).

    Questo è il codice:

    codice:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main()
    {
     long i=0, j=2, k=1, n=0, h=0;
     long *a, *b;
     FILE *out;
    
    scanf("%d", &n);
    a = (long *)calloc(n, sizeof(long));
    b = (long *)calloc(n, sizeof(long));
    out = fopen("Numeri.txt", "w");
    
    for (i = 0; i <= n+1; i++)
        {
         a[i] = i;
        }
    
    b[1] = 1;
    i = 2;
    
    while(j < n)
    {
    
     while(a[j] == 0 && j < n)
             j++;
     
     if(a[j] != 0)
     {
             b[i]=a[j];
             i++;
     }
     
     for(k = 1; k <= n/j; k++)
           {
            a[k*j] = 0;
           }
     
     j++;
            
    }
    
    h = i;
    
    for (i = 1; i < h; i++)
        {
         fprintf(out, "%d\t", b[i]);
        }
    fclose(out);
    
    return 0;
    }
    Il programma funziona se viene visualizzato a shell.
    Invece se stampo l'output sul file di testo e richiedo un n > 1000 non mi vengono visualizzati i numeri all'interno del file.

    Ritengo ci sia qualche errore nell'allocazione della memoria, o qualcosa di simile.
    Sapreste aiutarmi?

    N.B. Ho notato inoltre che se tento di stampare il risultato per n >= 9999 non viene visualizzato nemmeno dalla shell.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    26
    Ho risolto parte del problema sostituendo calloc con malloc.
    Ora se stampo in shell non ho problemi, però se cerco di stampare sul file in output lo posso fare solo fino al numero 1446.
    Dal numero 1447 in poi il file diventa illeggibile (pieno di quadratini [sono su windows])

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Questa linea e' sbagliata

    for (i = 0; i <= n+1; i++)

    deve essere (come ti ho detto in un altro thread)

    for (i = 0; i < n; i++)

    Usare la malloc al posto della calloc non fa alcuna differenza ...

    Se il problema lo riscontri aprendo il file con notepad, potrebbe essere un bug di notepad stesso. Apri il file con un altro editor.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    26
    Quote Originariamente inviata da oregon
    Questa linea e' sbagliata

    for (i = 0; i <= n+1; i++)

    deve essere (come ti ho detto in un altro thread)

    for (i = 0; i < n; i++)
    Sì scusa, ho postato codice vecchio, avevo effettuato la correzione.

    Quote Originariamente inviata da oregon
    Se il problema lo riscontri aprendo il file con notepad, potrebbe essere un bug di notepad stesso. Apri il file con un altro editor.
    Avevi ragione il problema si verificava con notepad.
    Ti ringrazio ^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.