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

    Classe razionale e problema col valore delle variabili

    Devo realizzare una struttura "razionale", che contenga numeratore e denominatore:
    codice:
    typedef struct rat Razionale;
    struct rat {  
    	  int num;
    	  int den;	
       };
    Questa parte crea un razionale:
    codice:
      printf("Scrivi il numeratore del primo numero: ");
      scanf("%d",&numeratore);	
      printf("Scrivi il denominatore del primo numero: ");
      scanf("%d",&denominatore);	
    
      Razionale razionale1;	
    razionale1=costruisci(numeratore,denominatore);
    codice:
    Razionale costruisci(int num, int den) {
            
    Razionale rat;
    rat.num=num;	
    rat.den=den; 
    
    return  rat;
    	}

    Il fatto è che, dopo aver inserito da tastiera i due numeri, alla fine ottengo dei numeri casuali. E' come se, dopo aver eseguito il metodo costruisci (dove viene creato il razionale che voglio), tornando al richiamo del metodo ( razionale1=costruisci(...) ) i valori vengano persi.

    Mi viene quindi da chiedermi se è un problema di come ho definito la struttura o qualcos'altro!!

    Spero possiate aiutarmi

  2. #2
    • Linguaggio C o C++?
    • Compilatore?
    • Sistema operativo?
    • Come fai a vedere il contenuto della variabile razionale1?

  3. #3
    Azzzzzzzz chiedo scusa, non so come ho fatto a dimenticare di specificare quelle cose!! Dovevo anche scriverlo nel titolo..

    linguaggio C, uso DEV C++ in Windows XP.

    dopo il richiamo
    codice:
    razionale1=costruisci(numeratore,denominatore);
    faccio una printf con razionale1.den e razionale1.num, ottenendo dei numeri che non sono quelli che ho inserito
    codice:
    printf("Numeratore: %d, denominatore: %d",razionale1.num,razionale1.den);
    Il metodo inserisci è in un altro file, ma non penso cambi qualcosa (ho messo l'include tra virgolette e non ricevo errori, perché in effetti il metodo viene richiamato)

  4. #4
    Il seguente mi produce i risultati attesi, provalo:
    Codice PHP:
    //
    // Compiled and tested with:
    // i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465)
    //

    #include <stdio.h>
    #include <assert.h>

    typedef struct rat Razionale;
    struct rat {
          
    int num;
          
    int den;
    };
       
    static 
    Razionale costruisci(int numint den) {
        
    Razionale rat;
        
    rat.num=num;
        
    rat.den=den
        return 
    rat;
    }

    static 
    void DumpRazionale (const Razionale theRazionale){
        
    assert (NULL != theRazionale);
        
    printf ("theRazionale->num: %d;\n"theRazionale->num);
        
    printf ("theRazionale->den: %d;\n"theRazionale->den);
    }

    int main (void){
        
    int numeratoredenominatore;
        
    Razionale razionale1;
        
    scanf ("%d", &numeratore);
        
    scanf ("%d", &denominatore);
        
    razionale1=costruisci(numeratore,denominatore);
        
    DumpRazionale (&razionale1);
        return 
    0;


  5. #5
    Grazie mille, ora funziona!!
    Mi sapresti dire come mai hai messo static il metodo costruisci??

  6. #6
    Originariamente inviato da Lasentinella
    Grazie mille, ora funziona!!
    Mi sapresti dire come mai hai messo static il metodo costruisci??
    Perché, nell'esempio, non necessita d'essere visibile ad altri file sorgenti.

  7. #7
    Capito, grazie ancora


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.