PDA

View Full Version : [C++] Primo progetto


Zagor HW
05-02-2005, 10:48
Ciao a tutti, ho preso nelle mani per la prima volta il c++, ho dato un occhiata ad una piccola guida, stavo guardando le variabili, quando ho visto un codice gia fatto e volevo provarlo, il codice è questo:

http://img223.exs.cx/img223/2882/test3id.jpg

Purtoppo però mi da quest'errore :
fatal error C1083: Impossibile aprire il file inclusione "iostream.h": No such file or directory

(Anche se ho installato tutti componenti del c++)

Che cosa può essere?

Grazie!

kk3z
05-02-2005, 11:04
#include <iostream>

non

#include <iostream.h>

Visual c++ per il c++ non è che sia proprio una chicca cmq (e neanche per le winapi)

Zagor HW
05-02-2005, 11:10
Originariamente inviato da kk3z
#include <iostream>

non

#include <iostream.h>

Visual c++ per il c++ non è che sia proprio una chicca cmq (e neanche per le winapi)

Adesso mi da questi errori:

Foglio.cpp(12) : warning C4305: "inizializzazione": troncamento da "double" a "float"
Foglio.cpp(14) : error C2065: "cout": identificatore non dichiarato
Foglio.cpp(15) : error C2065: "cin": identificatore non dichiarato
Foglio.cpp(16) : error C2065: "endl": identificatore non dichiarato
Foglio.cpp(16) : error C3861: "cout": identificatore non trovato nemmeno con una ricerca dipendente dall'argomento
Foglio.cpp(18) : error C3861: "cout": identificatore non trovato nemmeno con una ricerca dipendente dall'argomento
Foglio.cpp(18) : error C3861: "endl": identificatore non trovato nemmeno con una ricerca dipendente dall'argomento

Cmq che programma mi consigli di ultizzare per il c++ allora?

kk3z
05-02-2005, 11:24
Scusa, mi sono dimenticato di

using namespace std;

il primo è un warning, il programma ti compilerà cmq il programma. Il warning è dato dal fatto che stai inizializzando un float con due decimali, in quel caso dovresti usare un double (trasformando anche gli altri float in double). Se lo tieni così il compilatore troncherà l'ultimo decimale così che il float sia uguale a 3.1

Prima volevo dire, Visual c++ è più per fare programmi in windows (con le MFC), io mi trovo molto bene con Dev-cpp.

Zagor HW
05-02-2005, 11:39
Ok Grazie infinite!

cionci
05-02-2005, 11:46
Originariamente inviato da kk3z
Se lo tieni così il compilatore troncherà l'ultimo decimale così che il float sia uguale a 3.1

Un float a 32 bit può tenere ben oltre un decimale ;) Il problema è che per default un numero scritto con la virgola viene creato come double (64 bit)...e la conversione da double a float di conseguenza potrebbe comportare (ma anche no) un troncamento...

Print
06-02-2005, 11:59
una domanda, se volessimo fare la radice quadrata di qualcosa quale libreria bisogna includere??? come bisogna dichiarare le variabili??

71103
06-02-2005, 13:52
Originariamente inviato da kk3z
#include <iostream>

non

#include <iostream.h>

Visual c++ per il c++ non è che sia proprio una chicca cmq (e neanche per le winapi)

Scusa ma non sono affato d'accordo sull'ultima affermazione! Il Visual C++ 6.0 per l'uso delle API Win32 è assolutamente il massimo (e ci mancherebbe), e per il C++ in generale non sarà il meglio, ma è cmq abbastanza buono (secondo me). Viceversa, il Dev-C++ io come IDE lo odio, l'unica cosa buona che ha è il compilatore, però quest'ultima cosa è più che altro questione di gusti.

cionci
07-02-2005, 00:28
Originariamente inviato da Print
una domanda, se volessimo fare la radice quadrata di qualcosa quale libreria bisogna includere??? come bisogna dichiarare le variabili??
#include <cmath>

La funzione è sqrt ;)

Print
07-02-2005, 10:09
Originariamente inviato da cionci
#include <cmath>

La funzione è sqrt ;)
le variabili come le devo dichiarare??? double, float, .... ????(se le dichiaro float mi esce questo warning "warning C4244: '=' : conversion from 'double' to 'float', possible loss of data") come faccio perchè questo non accada???

cionci
07-02-2005, 11:48
Non vedo perchè tu debba usare i float... Con le CPU odierne, tranne in casi particolari ti conviene usare sempre i double...

Ovviamente sqrt è double sqrt(double)

Usa una conversione esplicita se non vuoi avere i warning...

Print
07-02-2005, 12:50
Originariamente inviato da cionci
Non vedo perchè tu debba usare i float... Con le CPU odierne, tranne in casi particolari ti conviene usare sempre i double...

Ovviamente sqrt è double sqrt(double)

Usa una conversione esplicita se non vuoi avere i warning...
non ho capito :D
puoi ripetere ?? :ave:

cionci
07-02-2005, 13:11
float a;

float b = 10;

a = (float)sqrt(b);

Scrivendo (float) converti il risultato di sqrt (che è un double) in un float...

Gioz
07-02-2005, 13:27
se dichiari a come float che senso ha ridefinirlo come tale quando fai la radice quadrata?
il casting è "automatico"

sqrt restituiesce sempre double?
scusa la domanda ma non sapevo

cionci
07-02-2005, 14:01
Come dicevo sqrt è definita come:

double sqrt(double)

Si fa la conversione per evitare di avere quel warning riportato prima...

Print
07-02-2005, 14:52
Originariamente inviato da cionci
Come dicevo sqrt è definita come:

double sqrt(double)

Si fa la conversione per evitare di avere quel warning riportato prima...
perfetto, un'altra domanda, se volessi che il risultato al posto di essere scritto in cifre 1,43453, lo volessi 2*sqrt(5), come devo fare???

grazie ancora :ave:

cionci
07-02-2005, 17:48
Non puoi ;)

Dovresti fare un programma che ti fa una cosa del genere...e, almeno per ora, non credo che sia alla tua portata...

Print
07-02-2005, 18:38
Originariamente inviato da cionci
Non puoi ;)

Dovresti fare un programma che ti fa una cosa del genere...e, almeno per ora, non credo che sia alla tua portata...
+ o - dimmi in grandi linee come potrei fare
:ave:

cionci
07-02-2005, 19:04
Da codice non lo puoi fare...

Ad esempio:

a = sqrt(50) * 8 +15;

Non potrai mai stampare sqrt(50) * 8 + 15 a partire da a...

Ma se quello che vuoi fare è una specie di calcolatrice che lavora con i simboli devi salvarti la sequenza di operazioni che l'utente richiede...

In base a quella puoi ricostruire sia la stampa delle operazioni che il risultato numerico...