View Full Version : Creare un programma C++
vincenzomancari
24-01-2014, 10:12
Ciao a tutti sono nuovo nel forum.
Sto cercando di fare questo programma per esercitarmi!!
Creare un programma che dato il raggio del cerchio di base di un cilindro e la sua altezza, calcoli e dia in output il peso di un cilindro sapendo che la sostanza di cui è composto ha peso specifico 3,4 g/cm3
volume= area di base * altezza;
peso= volume * peso specifico;
Io sono arrivato qui ma non so più cosa fare:
{
double r, h;
cout<<"inserire il raggio r:";
cin>>r;
cout<<"inserire l'altezza h:";
cin>>h;
cout<<"Volume= "<<3,14*r^2*h<<"\n\n";
.....
.....
.....
system("PAUSE");
return EXIT_SUCCESS;
}
<<"Volume= "<<3,14*r^2*h<<"\n\n";
visto che ti stai esercitando l'operazione 3,14*r^2*h prima di tutto dovresti scriverla con le giuste parentesi.
Tipo (x+(y+1))*z
poi quale sarebbe il problema? che non ti ritornano i risultati? se è cosi è probabile che siano proprio le parentesi inesistenti.
vincenzomancari
24-01-2014, 10:35
Ciao Sharkkk,
ho cambiato un po il tutto
dai un occhiata all'URL; mi da uno strano errore quando compilo!
https://drive.google.com/file/d/0B0a67nFiWVy2NGV6T0hMYnNuWVU/edit?usp=sharing
Grazieee :muro:
guarda se funziona cosi
#include <iostream.h>
#include <stdlib.h>
int main()
{
double r,h,a,v;
cout<<"inserisci a -> ";
cin>>r;
cout<<"\n r ="<<r<<"\n";
cout<<"inserisci h -> ";
cin>>h;
cout<<"\n h ="<<h<<"\n --------";
a=(3.14)*(r*r);
cout<<"\n a ="<<a<<"\n";
v= a*h;
cout<<"\n v ="<<v<<"\n";
system("PAUSE");
}
Per quegli errori non ne ho idea, lascio la parola a quelli molto piu esperti di me.
Per il resto ti posso dire che:
-non devi scrivere 3,14 ma 3.14
-alla funzione int main(..) non devi passare argomenti (int argc,char* ...) per l'esercizio che stai svolgendo. [si usa quello che hai scritto quando passi i parametri tramite shell per esempio, tipo ./esercizio 2 3]
vincenzomancari
24-01-2014, 10:54
Primo errore:
1[Error] iostream.h: No such file or directory
Primo errore:
1[Error] iostream.h: No such file or directory
:confused:
hai fatto copia incolla di quello che ti ho scritto e compilato oppure hai aggiunto qualcosa di tuo?
perche da me funziona esattamente con dev-c++ come te.
comunque prova ad aggiungere using namespace std; sotto l'include e a modificare #include <iostream.h> togliendoci il .h finale
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
double r,h,a,v;
cout<<"inserisci a -> ";
cin>>r;
cout<<"\n r ="<<r<<"\n";
cout<<"inserisci h -> ";
cin>>h;
cout<<"\n h ="<<h<<"\n --------";
a=(3.14)*(r*r);
cout<<"\n a ="<<a<<"\n";
v= a*h;
cout<<"\n v ="<<v<<"\n";
system("PAUSE");
}
fammi sapere
vincenzomancari
24-01-2014, 11:06
Ho fatto copia incolla e ho tolto il .h prima che lo scrivevi ma c'è sempre lo stesso problema e forse ho capito di cosa si tratta.
Io utilizzo Windows 7, non è che devo modificare/ aggiungere qualcosa nelle opzioni di compilazione? sotto la voce strumenti!
Ho fatto copia incolla e ho tolto il .h prima che lo scrivevi ma c'è sempre lo stesso problema e forse ho capito di cosa si tratta.
Io utilizzo Windows 7, non è che devo modificare/ aggiungere qualcosa nelle opzioni di compilazione? sotto la voce strumenti!
anche io ho windows 7.
pero guardando il tuo screenshot vedo che hai creato un progetto e poi il sorgente .cpp.
prova a cliccare su FILE->NUOVO->FILE SORGENTE, incolli, compili, salvi, esegui
vincenzomancari
24-01-2014, 11:23
Grazieeeeeee adesso funzionaaa :D piango ahahah
però ho bisogno che mi chiarisci delle ultime cose:
Quando inserisco "a" (es. 3) perché lui fa r=3?
Un'altra cosa,
io adesso dovrei ricavare il peso del cilindro, che si trova facendo VOLUME * Peso specifico.
Come faccio a fare l'operazione? peso specifico= 3.4 g/cm3
Quando inserisco "a" (es. 3) perché lui fa r=3?
Perche per sbaglio ho fatto:
cout<<"inserisci a -> ";
cin>>r;
quando invece deve essere:
cout<<"inserisci r -> "; //visualizza su una shell la scritta inserisci r -> , tra " ... " perche è una stringa, ma volendo potresti visualizzare anche il valore di una variabile senza pero le ".."
cin>>r; //prende in input da shell (la finestra nera che ti appare) un valore che assegna alla variabile che tu hai inserito dopo cin>> , in questo caso la variabile double r
Per quanto riguarda il peso del cilindro dovresti usare le tue conoscenze di fisica, non so se devi convertire o fare altre cose :D
Se l'unità di misura del volume che hai trovato è g / cm3 allora puoi effettuare la moltiplicazione diretta ed è semplicissimo (VOLUME * 3,4), altrimenti devi convertire
vincenzomancari
24-01-2014, 11:39
MMmM ok l'ho fatto e funziona perfettamente!
Adesso sto facendo un altro esercizio, come potrei contattarti in caso di problemi? mi sei stato molto d'aiuto!
MMmM ok l'ho fatto e funziona perfettamente!
Adesso sto facendo un altro esercizio, come potrei contattarti in caso di problemi? mi sei stato molto d'aiuto!
scrivi qui sul forum, quello che puo essere d'aiuto a te puo essere d'aiuto agli altri come lo è stato per me (e lo è ancora:Prrr: )
comunque ti consiglio le tante guide che trovi su internet in italiano di c / c++ (io ti consiglio il primo per iniziare), di fare tanti esercizi e di non complicarti la vita scrivendo cose che non conosci altrimenti poi diventa tutto un grossissimo problema
vincenzomancari
24-01-2014, 12:23
Sharkkk tanto per cambiare ho avuto altri problemi con un nuovo programma:
Creare un programma che date le coordinate di due punti A(x0,y0) e B(x1, y1) di un sistema di riferimento cartesiano ortogonale Oxy, calcoli e dia in output la distanza tra i due punti.
( AB= radice di (x1 - x0)^2 + (y1 - y0)^2)
Ho fatto così io:
#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
int main()
{
double x,y,x1,y1,d;
cout<<"inserisci la coordinata x -> ";
cin>>x;
cout<<"inserisci la coordinata y -> ";
cin>>y;
cout<<"inserisci la coordinata x1 -> ";
cin>>x1;
cout<<"inserisci la coordinata y1 -> ";
cin>>y1;
d=sqrt(x1-x)^2+(y1-y)^2;
cout<<"distanza tra A e B"<<d<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
( AB= radice di (x1 - x0)^2 + (y1 - y0)^2)
sqrt(x1-x)^2+(y1-y)^2;
il problema qual'e? devi sempre scriverlo :)
sicuro che il problema non sia il solito problema delle parentesi?
sqrt(x1-x)^2+(y1-y)^2; non fa la radice di tutto ma la radice della prima parentesi, dovresti scrivere sqrt((( x1-x )^2 )+...)
sqrt(..) è come se fosse una funzione matematica f(x) che ti da un risultato. tu che x gli stai dando all funzione sqrt(x1-x)? gli stai dando x1-x e non (((x1-x)^2)+((y1-y)^2))). quindi il risultato della funzione sqrt(x1-x) sarà la radice di x1-x
vincenzomancari
24-01-2014, 12:56
Modificato ma non va! Guarda lo screen!
https://drive.google.com/file/d/0B0a67nFiWVy2M2ZNV2pfQVlfQXM/edit?usp=sharing
non va perchè l'elevamento a potenza in C sembra che non si faccia con x^y ma con una funzione che sta nella libreria math.h apposita. (ho verificato che poi funziona)
http://it.wikipedia.org/wiki/Math.h
vincenzomancari
24-01-2014, 13:16
Risoltooo.
Ecco formula completa
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
{
double x,y,x1,y1,d;
cout<<"inserisci la coordinata x -> ";
cin>>x;
cout<<"inserisci la coordinata y -> ";
cin>>y;
cout<<"inserisci la coordinata x1 -> ";
cin>>x1;
cout<<"inserisci la coordinata y1 -> ";
cin>>y1;
d=sqrt(exp(double(x1-x))+ exp(double(y1-y)));
cout<<"distanza tra A e B = "<<d<<"\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
piu semplice era se usavi la funzione pow(..)
d = sqrt((pow((x1-x),2)) + (pow((y1-y),2)));
pow(x,y) - eleva un valore dato ad esponente, x^y
vendettaaaaa
24-01-2014, 18:40
Risoltooo.
Ecco formula completa
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
{
double x,y,x1,y1,d;
cout<<"inserisci la coordinata x -> ";
cin>>x;
cout<<"inserisci la coordinata y -> ";
cin>>y;
cout<<"inserisci la coordinata x1 -> ";
cin>>x1;
cout<<"inserisci la coordinata y1 -> ";
cin>>y1;
d=sqrt(exp(double(x1-x))+ exp(double(y1-y)));
cout<<"distanza tra A e B = "<<d<<"\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
:asd:
Credo di aver capito cos'hai tentato di fare...
exp(double(x1-x)) secondo te dovrebbe essere equivalente a "prendi (x1 - x), e dagli un esponente pari a 2"... :D :D :D
Quello che hai fatto è corretto dal punto di vista della sintassi (infatti compila e va) ma in realtà stai calcolando l'esponenziale di (x1 - x).
double(numero) restituisce numero in formato double precision...non lo eleva al quadrato!
int a = 5;
double b = double(a); // converti a in un double
Quindi, dato che x1 e x sono già dei double, la conversione non ha effetto e stai calcolando exp( (x1 - x) ), cioè e^(x1 - x), che, nonostante e valga poco più di 2, è leggermente diverso da (x1 - x)^2...
Devi usare pow, come ti ha detto sharkkk.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.