Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Puntatori
Forum - C/C++ - Puntatori

Avatar
Puffetta (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/11/2009

Segnala al moderatore
Postato alle 11:39
Lunedì, 04/01/2010
Ciao!
Ho provato a fare questo esercizio. Il problema è che qualsiasi funzione io inserisca e per diversi valori dell'estremo a e b il programma mi stampa sempre gli stessi valori e quindi poi il grafico verrà sempre e comunque una retta. Mi potreste aiutare a risolvere il problema? grazie mille:)


Codice sorgente - presumibilmente C#

  1. /*Scrivere un programma C++ che acquisisce da tastiera un intero positivo N e due numeri reali a e b, e produce un file .dat contenente una tabella di N valori a passo costante per la funzione f(x) nell'intervallo [a,b]. Applicare il programma, con N = 100,
  2. alle seguenti funzioni negli intervalli specificati.*/
  3.  
  4. #include<stdio.h>
  5. #include<stdlib.h>
  6. #include<math.h>
  7.  
  8. double f(double t)
  9. {      
  10.        return(log(t)+t);
  11. }
  12.  
  13.  
  14. main()
  15. {
  16.       double a, b; int N=100; double h=((b-a)/N), x, y;
  17.      
  18.       printf("\n Qual'e' il valore dell'estremo sinistro?   a=");
  19.       scanf("%lf", &a);
  20.      
  21.       printf("\n Qual'e' il valore dell'estremo destro?     b=");
  22.       scanf("%lf", &b);
  23.      
  24.       FILE *fp;
  25.      
  26.       fp = fopen("tabella.dat", "wt");
  27.      
  28.       if(fp==NULL)
  29.                   {
  30.                      system("PAUSE");
  31.                      exit(1);
  32.                   }
  33.      
  34.       for(int i=1; i<=N; i++)
  35.               {
  36.                    x=a+(i*h);
  37.                    
  38.                    y=f(x);
  39.                    
  40.                    fprintf(fp, " %f %f\n", x, y);
  41.               }
  42.       fclose(fp);
  43.      
  44.       system("Vista (C:)\\Programmi\\Intel\\gnuplot-420win32\\gnuplot\\bin\\wgnuplot.exe ");
  45.       return 0;
  46. }


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5473
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:56
Lunedì, 04/01/2010
Un computer esegue le istruzioni di un programma sequenzialmente.

La formula

double h=((b-a)/N)

non va inserita prima che il programma conosca i valori di a e b.

Devi quindi dichiarare solamente

double h;

e poi, dopo le scanf, potrai scrivere

h=(b-a)/N;


P.S. Ma cosa c'entrano i Puntatori di cui parli nel titolo?

Ultima modifica effettuata da nessuno il 04/01/2010 alle 14:05


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 4:45
Martedì, 05/01/2010
Non per fare il pignolo e non che in questo caso la cosa abbia poi tutta quell'importanza, ma il tuo codice è in C, non in C++. :rotfl:


"I have never let my schooling interfere with my education." Mark Twain
PM Quote
Avatar
Puffetta (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/11/2009

Segnala al moderatore
Postato alle 9:54
Martedì, 05/01/2010
grazie!!!!!! cmq lo so, è C ma all'università dicono di insegnarci il C++ quindi mi attengo a loro...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5473
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:56
Martedì, 05/01/2010
Continuo a non capire cosa c'entra il titolo dato a questo thread ... comunque ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote