Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] fusione e somma (se uguali) di due file

    salve ragazzi, mi appello alla vostra bravura sperando di risolvere qualcosa!

    qst programma dovrebbe creare 2 file rispettivo a 2 magazzini (alfa e beta) che contengano numero atomico, simbolo, peso e quantità disponibile in magazzino.

    acquisiti i magazzini la funzione fusione dovrebbe fondere i 2 magazzini in un unico file gamma e in caso di elementi uguali deve sommare le quantità!

    io ho provato a fare questo....funziona...ma quando si tratta di sommare non fa niente di niente!

    mi dareste una mano!? grazie!



    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void fusione (FILE *alfa, FILE *beta, FILE *gamma);
    
    int main ()
    {
        int numA, numB;
        char simbA[3], simbB[3];
        float massaA, massaB;
        int qntA, qntB;
        FILE *pfile, *pfile2, *pfile3;
    
    
        if ((pfile3= fopen("gamma.txt", "w")) == NULL)
        
        printf ("     ACQUISISCO FILE ALFA!\n\n");
        if ((pfile= fopen("alfa.txt", "w")) == NULL)
           printf ("\nIl file non puo' essere aparto\n");
        else {
                  printf ("Inserisci il num atomico, simbolo, massa atomica \ne disponibilta' in magazzino.\n");
                  printf ("Inserisci EOF  (ctrl + z) per terminare l'input\n\n");
                  printf ("- ");
                  scanf ("%d%s%f%d", &numA, simbA, &massaA, &qntA);
                  
                  while (!feof(stdin)) {
                                               fprintf (pfile, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                                               printf ("- ");
                                               scanf ("%d%s%f%d", &numA, simbA, &massaA, &qntA);
                                       }
                                       
                  fclose (pfile);
              }
              
              
              
          printf ("\n\n    ACQUISISCO FILE BETA!\n\n");
        if ((pfile2= fopen("beta.txt", "w")) == NULL)
           printf ("\nIl file non puo' essere aparto\n");
        else {
                  printf ("Inserisci il num atomico, simbolo, massa atomica \ne disponibilta' in magazzino.\n");
                  printf ("Inserisci EOF  (ctrl + z) per terminare l'input\n");
                  printf ("\n- ");
                  scanf ("%d%s%f%d", &numB, simbB, &massaB, &qntB);
                  
                  while (!feof(stdin)) {
                                               fprintf (pfile2, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                                               printf ("- ");
                                               scanf ("%d%s%f%d", &numB, simbB, &massaB, &qntB);
                                       }
                                       
                  fclose (pfile2);
              }    
              
              fusione (pfile, pfile2, pfile3);
              
        system ("pause");
    }
    
    
    
    
    
    void fusione (FILE *alfa, FILE *beta, FILE *gamma)
    {
         int numA, numB;
         char simbA[3], simbB[3];
         float massaA, massaB;
         int qntA, qntB;
         
         int statoA, statoB;
         
         if ((alfa = fopen ("alfa.txt", "r")) == NULL) 
            printf ("\n\n Il file alfa non puo' essere aperto \n");
         else 
              if ((beta = fopen ("beta.txt", "r")) == NULL)
                 printf ("\n\n Il file beta non puo' essere aperto \n");
              else {
                        //inizio secondo else
                        statoA = (fscanf (alfa, "&d%s%f%d", &numA, simbA, &massaA, &qntA));
                        statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                        
                        while ((statoA != EOF) && (statoB != EOF))
                     {
                   
                   if (numA == numB){
                   
                                       fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, (qntA+qntB));
                                       statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                                       statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                                     }
                                     
                                     
                   else if (numA < numB){
                                            fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                                            statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                                         }
                        else {
                                 fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                                 statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                             }
                   
                     }
                   if ((statoA != EOF) && (statoB == EOF))
              //se solo beta è giunto a termine i dati di alga rimanenti vengono copiati in gamma
              
              {
                   do {
                         fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                         statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                       }
                   while (statoA != EOF);
              } //fine copia
              
            if((statoA == EOF) && (statoB != EOF))
            //se solo alfa è giunto a termine i dati di beta rimanenti vengono copiati in gamma
            
                 {
                      do {
                           fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                           statoB= (fscanf(beta, "%d%f%f%d", &numB, simbB, &massaB, &qntB));
                          }
                      while (statoB != EOF);
                 } //fine copia
            
            printf ("\n\n il file Gamma e' stato creato. \n");
            
         } //fine del secondo else
         
    }

  2. #2
    semplifico il tutto: come si fa creare un file "c.txt" che contenga la somma di un numero presente nel file "a.txt" e un altro numero presente nel file "b.txt" ????'

    così come sotto mi restituisce sempre 0!!!!!



    codice:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
        FILE *pfile1, *pfile2, *pfile3;
        int num, num1;
        
        pfile1= fopen ("a.txt", "w");
        printf ("\nInserisci numero che verra' inserito nel file A: ");
        scanf ("%d", &num);
        fprintf (pfile1, "%d", num);
        
        pfile2= fopen ("b.txt", "w");
        printf ("\nInserisci numero che verra' inserito nel file B: ");
        scanf ("%d", &num1);
        fprintf (pfile2, "%d", num1);
        
        fclose(pfile1);
        fclose (pfile2);
        
        
        num=0;
        num1=0;
        
        
        pfile3= fopen ("tot.txt", "w");
        fscanf (pfile1, "%d", &num);
        fscanf (pfile2, "%d", &num1);
        fprintf (pfile3, "%d", (num1+num));
        
        
        
        printf ("\n\n\n");
        system ("pause");
        
    }

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ti sei dimenticato di aprire i file in lettura:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
        FILE *pfile1, *pfile2, *pfile3;
        int num, num1;
        
        pfile1= fopen ("a.txt", "w");
        printf ("\nInserisci numero che verra' inserito nel file A: ");
        scanf ("%d", &num);
        fprintf (pfile1, "%d", num);
        
        pfile2= fopen ("b.txt", "w");
        printf ("\nInserisci numero che verra' inserito nel file B: ");
        scanf ("%d", &num1);
        fprintf (pfile2, "%d", num1);
        
        fclose(pfile1);
        fclose (pfile2);
        
        
        num=0;
        num1=0;
        
        pfile1=fopen("a.txt","r");      // apri i file prima di leggeri
        pfile2=fopen("b.txt","r");
        pfile3= fopen ("tot.txt", "w");
        fscanf (pfile1, "%d", &num);
        fscanf (pfile2, "%d", &num1);
        fprintf (pfile3, "%d", (num1+num));
        
        
        
        printf ("\n\n\n");
        system ("pause");
        
    }

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.