Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problemi nella compilazione
Forum - C/C++ - Problemi nella compilazione

Avatar
gismo (Normal User)
Rookie


Messaggi: 43
Iscritto: 07/01/2007

Segnala al moderatore
Postato alle 11:50
Domenica, 07/01/2007
Salve a tutti..
ho un problema nel compilare un mio piccolo programma che esegue la simulazione di un circuito RLC..ma nn è questo il problema..
sta di fatto che i risultati della compilazione devo essere scritti nn solo a video ma bensì anche su un file di testo..con la funzione ofstream..
purtroppo quando vado a compilare (con Visual Studio) sono innumerevoli gli errori sintattici che mi si presentano..
vi prego aiutatemi..ho uno spasmotico bisogno di questo programma funzionante, per motivi scolastici..
vi lascio il sorgenti documentato il più possibile

/*Questo è un programma che dati in input dei valori
sviluppi una simulazione del Modello di un circuito RLC.
I risulatati della simulazione, dipendenti da una costante di tempo,
devono essere stampati a video e contemporaneamente devono essere memorizzati
su un file di testo specifico predefinito.
I valori di output da visualizzare sono quelli specificati nel testo dell'esercizio*/

#include <fstream.h>
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <stdafx.h>
using namespace std;


int main()
{
    //dichiarazione varibili
    double Vc=0, dVc=0.0005, I=0, dI=0.005, C=0.0005;
    int t=0, VI=10, R=0, L=0, Vin=0;
    {//inizio della ofstream
        ofstream out("file.txt",ios::app); //giochino del file, ios::app serve per mantenere il file aperto e continuare a scriverci sopra
            if (!out); //if di finezza (chiamala finezza!!)
         {    cout<<"Il file in scrittura non e aperto"<<endl;
            return -1;
         }
         {//inizio richiesta dati input
    
                    cout<<"Inserisci il valore della Vin.. "<<endl;
                    cin>> Vin;
                    cout<<"Inserisci il valore della R.. "<<endl;
                    cin>> Vin;
                    cout<<"Inserisci il valore della L.. "<<endl;
                    cin>> Vin;
                    //cout<<"Inserisci il valore della C.. "<<endl;    //Qui non so se deve essere costante o no
                    //cin>> C;
                    }
    
      cout<<"Tempo\t Vin\t Vc\t Ic\t"<<endl; //devono essere scritti una volta sola
      out<<"Tempo\t Vin\t Vc\t Ic\t"<<endl;
      for (t=0; t<=31; t++){ //per far vedere il progresso dei risultati delle espressioni ad ogni incremento della t (costante di tempo)
                             //poichè ogni risultato in output deve essere scritto e incolonnato una volta nel file e allo stesso modo a video
           Vc+=dVc;             //inizio delle espressioni
           I+=dI;
           dVc=(1/C)*I*t;
           VI=L*dI/t;
           dI=Vin-(R*I)-(Vc/L*t);
      

    printf(t"\t"Vin"\t"Vc"\t"I"\t\n"); //inserimento e tabulazione dati a schermo
    out<<t"\t"Vin"\t"Vc"\t"I"\t"<<endl;  //inserimento e tabulazione dati sul file
    out.close();}
}
    printf("================================================");
    return 0; //questo return nn so se va bene, ma nn è qui il problema..
}


accetto ogni tipo di critica o correzione
grazie mille

gismo
gismo@email.it:k:

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 14:57
Domenica, 07/01/2007
Testo quotato


Codice sorgente - presumibilmente C++

  1. #include <fstream.h>
  2. #include <iostream.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5. #include <stdafx.h>
  6. using namespace std;





il namespace std lo devi usare coi nuovi header del C++, basta molto semplicemente seguire questa regola:

Gli header SOLO del C++ (tipo iostream.h) vanno senza estensione, e gli header che erano originari del C (stdio.h) vanno anch'essi senza estensione e con una c in testa, quindi cstdio

quindi fai così:

#include <fstream>
#include <iostream>
#include <cmath>
#include <cstdio>
// #include <stdafx.h>  questo lo mette VS
// ma non mi pare di serva, spesso mi dava
// errori usarlo, infatti lo toglievo sempre
using namespace std;

cmq lo proverò per vedere se c'è magari altro

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 15:55
Domenica, 07/01/2007
Ho trovato altri errori, alcuni non di sintassi, e che quindi facevano compilare ma dopo davano errori gravi a run-time, ad esempio il ; dopo l'if faceva sempre andare in errore il controllo sull'avvenuta apertura del file, cmq così mi compila e mi formatta il tutto, PERO', c'è un però, mi da un NaN sulle variabili vc ed lc, Nan starebbe per Not a number, insomma un errore di calcolo; però non conoscendo il problema che devi risolvere non saprei come sistemare, ho provato un pò a cambiare tipi di dato ma cmq resta nan(per intenderci, divisione per 0, radice di un numero negativo ecc...)

edit:
No niente, ho trovato, quando leggi le variabili leggi solo Vin quindi restano a 0 alcune inoltre la variabile t nel ciclo parte da 0, e poi dividi con quella, così va:

Codice sorgente - presumibilmente C++

  1. #include <fstream>
  2. #include <iostream>
  3. #include <cmath>  
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int main()
  10. {
  11.  //dichiarazione varibili
  12.  double Vc=0, dVc=0.0005, I=0, dI=0.005, C=0.0005;
  13.  int VI=10, R=0, L=0, Vin=0;
  14.  
  15.  ofstream out("file.txt", ios::app);  
  16.  if ( !out ) {
  17. cout<<"Il file non esiste"<< endl;
  18.  return -1;
  19.  }
  20.  {//inizio richiesta dati input
  21.  
  22.  cout<<"Inserisci il valore della Vin.. "<<endl;
  23.  cin>> Vin;
  24.  cout<<"Inserisci il valore della R.. "<<endl;
  25.  cin>> R;
  26.  cout<<"Inserisci il valore della L.. "<<endl;
  27.  cin>> L;
  28.  //cout<<"Inserisci il valore della C.. "<<endl; //Qui non so se deve essere costante o no
  29.  //cin>> C;
  30.  }
  31.  
  32.  cout << setw(2) << "Tempo" << setw(8) << "Vin" << setw(15) << "Vc" << setw(15) << "lc" << endl;
  33.  out << setw(2) << "Tempo" << setw(8) << "Vin" << setw(15) << "Vc" << setw(15) << "lc" << endl;
  34.  for (int t=1; t<=31; t++) { //per far vedere il progresso dei risultati delle espressioni ad ogni incremento della t (costante di tempo)
  35.  //poichè ogni risultato in output deve essere scritto e incolonnato una volta nel file e allo stesso modo a video
  36.  Vc+=dVc; //inizio delle espressioni
  37.  I+=dI;
  38.  dVc=(1.0/C)*I*t;
  39.  VI= (int) (L*dI/t);
  40.  dI=Vin-(R*I)-(Vc/L*t);  
  41.  
  42.  cout << setw(3) << t << setw(10) << right << Vin << setw(15) << right << Vc << setw(15) << I << endl; //inserimento e tabulazione dati a schermo
  43.  out << setw(3) << t << setw(10) << right << Vin << setw(15) << right << Vc << setw(15) << I << endl;
  44.  }
  45.  
  46.  printf("============================================================\n");
  47.  out << "============================================================" << endl;
  48.  out.close();
  49.  return 0; //questo return nn so se va bene, ma nn è qui il problema..
  50. }


Ultima modifica effettuata da netarrow il 07/01/2007 alle 16:32
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:37
Domenica, 07/01/2007
Questo è un esempio di output con questi dati:
23, 45, 67

N.B il forum non rispetta la formattazione, nella console e nel file verrà tutto incolonnato tranquillo,

Codice sorgente - presumibilmente Plain Text

  1. Tempo     Vin             Vc             lc
  2.   1        23         0.0005          0.005
  3.   2        23        10.0005          22.78
  4.   3        23          91130       -979.618
  5.   4        23   -5.78658e+06        39045.8
  6.   5        23    3.06579e+08   -1.37252e+06
  7.   6        23   -1.34186e+10     3.7512e+07
  8.   7        23    4.36725e+11   -4.48856e+08
  9.   8        23   -5.84726e+12   -2.58783e+10
  10.   9        23     -4.199e+14    1.83683e+12
  11.  10        23     3.2643e+16   -2.44159e+13
  12.  11        23   -4.55674e+17   -3.79779e+15
  13.  12        23    -8.4007e+19    2.41915e+17
  14.  13        23    5.72195e+21    4.40178e+18
  15.  14        23    1.20168e+23   -1.30391e+21
  16.  15        23   -3.63892e+25    3.22621e+22
  17.  16        23    9.31475e+26    6.72731e+24
  18.  17        23    2.16205e+29   -5.18443e+26
  19.  18        23   -1.74109e+31   -3.20466e+28
  20.  19        23   -1.17109e+33    6.08759e+30
  21.  20        23    2.30157e+35    6.42451e+31
  22.  21        23    2.79996e+36   -7.15305e+34
  23.  22        23   -3.00148e+39    2.26974e+36
  24.  23        23    9.68672e+40    8.85692e+38
  25.  24        23    4.08387e+43   -7.22234e+40
  26.  25        23   -3.42588e+45    -1.1451e+43
  27.  26        23   -5.75974e+47    1.78216e+45
  28.  27        23    9.20962e+49    1.45097e+47
  29.  28        23    7.92736e+51   -4.34977e+49
  30.  29        23   -2.42794e+54   -1.39903e+51
  31.  30        23   -8.35715e+55    1.11246e+54
  32.  31        23    6.66639e+58   -1.15281e+55


con

1, 2, 3

Codice sorgente - presumibilmente Plain Text

  1. Tempo     Vin             Vc             lc
  2.   1         1         0.0005          0.005
  3.   2         1        10.0005       0.994833
  4.   3         1        3989.33       -6.66183
  5.   4         1       -35981.7       -3981.67
  6.   5         1   -3.18894e+07        51958.2
  7.   6         1    4.87693e+08     5.3097e+07
  8.   7         1    6.37651e+11   -1.02848e+09
  9.   8         1   -1.37611e+13   -1.48682e+12
  10.   9         1    -2.3803e+16    3.81831e+13
  11.  10         1    6.63493e+17    7.13707e+16
  12.  11         1    1.42808e+21   -2.28301e+18
  13.  12         1   -4.87982e+22     -5.234e+21
  14.  13         1   -1.25665e+26    2.00427e+23
  15.  14         1    5.08544e+27    5.44347e+26
  16.  15         1    1.52468e+31   -2.42764e+28
  17.  16         1   -7.13045e+32   -7.62097e+31
  18.  17         1   -2.43942e+36    3.87911e+33
  19.  18         1     1.2945e+38    1.38195e+37
  20.  19         1    4.97632e+41   -7.90522e+38
  21.  20         1   -2.95422e+43   -3.15088e+42
  22.  21         1   -1.26065e+47    2.00099e+44
  23.  22         1    8.27809e+48    8.82254e+47
  24.  23         1    3.88274e+52   -6.15883e+49
  25.  24         1   -2.79423e+54   -2.97615e+53
  26.  25         1   -1.42883e+58    2.26515e+55
  27.  26         1    1.11829e+60    1.19047e+59
  28.  27         1    6.19155e+63   -9.81085e+60
  29.  28         1   -5.23595e+65   -5.57142e+64
  30.  29         1   -3.12052e+69     4.9426e+66
  31.  30         1     2.8355e+71      3.016e+70
  32.  31         1    1.80989e+75   -2.86566e+72



nel file verranno mano a mano inserite tutte le iterazioni fatte dalle varie esecuzioni del programma, separate da un
============================


Ora non so dirti se l'elaborazione è giusta, ma almeno è formattato(ripeto, nel periodo in cui sto scrivendo il forum non fa testo!), e sei stato fortunato che stavo facendo per conto mio la formattazione degli stream e i file in C++, così ho fatto per benino tutto :rotfl: ;)

Ultima modifica effettuata da netarrow il 07/01/2007 alle 16:41
PM Quote
Avatar
gismo (Normal User)
Rookie


Messaggi: 43
Iscritto: 07/01/2007

Segnala al moderatore
Postato alle 18:18
Domenica, 07/01/2007
nn so davvero come ringraziarti..
ho solo un'ultima domanda da farti..
perchè ogni volta che compilo mi da questa dicitura..
c:\programmi\microsoft visual studio\myprojects\rlc  buono\rlc.cpp(50) : fatal error C1010: unexpected end of file while looking for precompiled header directive
il bello è che la riga 50 nn esiste..

fammi sapere appena puoi..
grazie mille

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 20:27
Domenica, 07/01/2007
prova a rimettere  StdAfx.h, sennò compila con un compilatore che rispetta lo standard ANSI/ISO come il gcc(devcpp su windows), sennò prova solo a creare un file .cpp e a buttarci dentro il codice, senza creare un progetto.

sennò nell'msdn danno questa soluzione:
http://msdn2.microsoft.com/en-us/library/d7fz9ckx.aspx

io cmq ho compilato con gcc 3.4.6

Ultima modifica effettuata da netarrow il 07/01/2007 alle 20:30
PM Quote