Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Eris
    Registrato dal
    Feb 2004
    Messaggi
    511

    [C/C++]Valori da un file e riportarli su un altro file nuovo

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 150
    int main(int argc, char *argv[])
    {FILE *file1ptr;
     FILE *file2ptr;
     int i,a[MAX],b[MAX],x,y,resto;
     char err[5];
     i=0;
     file2ptr=fopen("nuovofile.txt","w");
     if((file1ptr = fopen("filesorgente.txt","r"))==NULL){
                          printf("Il file non e' stato aperto\n");}
                          else{while(!feof(file1ptr))
                                                {
                                                fread(&a,sizeof(MAX),1,file1ptr);
                                                fseek(file1ptr,(MAX-1)*sizeof(MAX), SEEK_SET);
                                                fread(&b,sizeof(MAX),1,file1ptr);
                                                for(i=0;i<=MAX;i++){
                                                    while(a[i]!=' '){if(a[i]==0){err[]="N/a";
                                                    else x=a[i];}                                        
                                                    while(b[i]!=' '){if(b[i]==0){err[]="N/a";
                                                    else y=b[i];}
                                                    resto = x%y;
                                                    fprint(file2ptr,"%d \\ %d = %d, R = %d\n",x,y,x/y,resto);}
                                                    fclose(file1ptr);
                                                    fclose(file2ptr);
                                                
     
      
      system("PAUSE");	
      return 0;
    }
    ovviamente è sbagliato.il programma dovrebbe calcolare la divisione e il resto prendendo i valori da un file (tipo scirtti cosi: 5 9 1 10 2).il file è composto da due righe di lunghezza massima di 150 caratteri.ci sono due righe.bisogna prendere i valori della prima e dividerli per la seconda e stampare i risultati su file.

    avrò sbagliato proprio il procedimento logico ma non so come fare!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C/C++]Valori da un file e riportarli su un altro file nuovo

    Originariamente inviato da Eris
    ovviamente è sbagliato.il programma dovrebbe calcolare la divisione e il resto prendendo i valori da un file (tipo scirtti cosi: 5 9 1 10 2).il file è composto da due righe di lunghezza massima di 150 caratteri.ci sono due righe.bisogna prendere i valori della prima e dividerli per la seconda e stampare i risultati su file.

    avrò sbagliato proprio il procedimento logico ma non so come fare!
    No no, alt!! Ci sono svariate cose sbagliate!

    A) Il file di input è un file di testo, quindi non ha senso dichiarare gli array 'a' e 'b' di tipo int! Devi usare un array di char.

    B) fread e fseek non servono. Se il file è di testo, è sufficiente utilizzare 2 fgets. La fseek che hai messo poi non ha alcun senso. Infatti ti sposti all'offset indicato dalla espressione (MAX-1)*sizeof(MAX) e siccome MAX vale 150, ti sposti all'offset 149*4 cioè 596. Che proprio non ha senso!!!

    C) I numeri nel file di testo sono rappresentati da uno o più caratteri. Questo vuol dire che devi "spezzare" la stringa in modo da prendere i singoli numeri separati dagli spazi, poi converti la stringa contenente il solo numero (es. "10") in un valore numerico (int) e poi a quel punto fai le operazioni matematiche che ti servono. Per separare i numeri usa la funzione strtok(), per convertire una stringa in un numero usa la funzione atoi().

    D) Visto che gli operandi si trovano su due righe, dopo che le hai lette e messe nei 2 array di char, devi prendere una riga per volta e creare per ognuna un array di int in modo da lasciare alla fine le sole operazioni matematiche. Questo perché non puoi usare la strtok() per operare contemporaneamente su 2 stringhe diverse (questo è un limite della strtok).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Tra l'altro almeno 3 blocchi di codice non sono chiusi regolarmente, il codice così comè non
    è nemmeno compilabile.
    Una indentazione del codice meno 'acrobatica' avrebbe evitato il poblema.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.