PDA

View Full Version : uso dell' or in c++


cicciomegghiu
03-11-2011, 19:14
ciao a tutti, mi serviva una mano per programmare in c++, a scuola stiamo iniziando ora il c però io volevo fare qualcosa col c++ e per certe cose trovo mille complicazioni. Uso il borland per programmare.
Sto cercando di fare un programma che mi dice se due numeri sono divisibili tra loro, indifferentemente da come siano messi. Innanzi tutto non so che librerie usare, io ho messo quelle che conosco, ma non credo servano per forza.
A me serve che il ciclo while si ripeta se una delle due condizioni è vera. Io mi ricordo (da cose che avevo visto in pascal) che si usa il comando or ma non conosco la sintassi ne la trovo su google e non capisco perchè. Io ho scritto così:
while (n1%n2==0) or (n1%n2==0)
sicuramente or non si usa in questo modo, perchè borland me lo da come sbagliato. potete dirmi la corretta sintassi di or? se serve riporto tutto il programma.

WarDuck
03-11-2011, 19:59
Provare a programmare in un linguaggio senza quantomeno vederne la sintassi è un po' difficile...

Comincia a dare un'occhiata a questi:

http://www.cplusplus.com/doc/tutorial/program_structure/
http://www.cplusplus.com/doc/tutorial/variables/
http://www.cplusplus.com/doc/tutorial/operators/
http://www.cplusplus.com/doc/tutorial/control/

PS: in alcune circostanze C++ può essere anche molto diverso dal C, se fate il C a scuola, studia prima il C.

cicciomegghiu
03-11-2011, 20:45
si, lo so che dovrei mettermi a studiare dalle guide e ne ho trovate anche io 2, però mi vengono prima le idee per dei programmi che la voglia di studiare. Cercando ho scoperto che la funzione or (conosco le porte logiche e quindi tramite la tavola di verità ho capito che mi serve la funzione or) si usa mettendo || tra le due condizioni. Però sicuramente per usare questa funzione c' è una libreria che non ho incluso. Perchè mi da
[C++ Error] prova.cpp(14): E2188 Expression syntax
sapete dirmi se per caso serve una libreria specifica per usare questa funzione?

Floris
03-11-2011, 20:55
Impossibile sia l'uso dell'operatore ||. Fa parte del C e del C++ standard quindi o hai un compilatore non standard (ma mi sembra strano) oppure l'errore è altrove.
Se nella riga che provoca l'errore hai posto:
while (n1%n2==0) || (n1%n2==0)
allora mancano le parentesi esterne:
while ( (n1%n2==0) || (n1%n2==0) )

cicciomegghiu
03-11-2011, 22:29
grazie, era quello che mi serviva sapere, ma non capisco perchè il programma fatto così mi da questo errore al while, sarà che sono stanco:
[C++ Error] prova.cpp(27): E2451 Undefined symbol 'n2'

#include <iostream.h>
int main()
{
do
{
int n1,n2; //primo e secondo numero

cout <<"questo programma ti dice se due numeri sono divisibili tra loro"<<endl;
cout <<"inserisci il primo numero"<<endl;
cin >>n1; //primo numero
cout <<"inserisci il secondo numero"<<endl;
cin >>n2; //secondo numero

if ((n1%n2==0) || (n2%n1==0)) //se il resto tra il primo diviso il secondo o viceversa vale zero
{
cout <<"i due numeri sono tra loro divisibili"<<endl;

}
else //altrimenti
{
cout <<"i due numeri non sono divisibili tra loro"<<endl;

}
cout <<"se vuoi ricominciare premi 1"<<endl;
cin >>n2;
}
while (n2==1); //se n2 vale 1 torna a do



}

WarDuck
04-11-2011, 13:52
Devi guardare dove sono dichiarate le variabili...

Ribadisco ancora una volta, non puoi pensare di programmare senza sapere la sintassi (e la semantica in questo caso) del linguaggio.

Certo puoi procedere a tentativi ma ci metterai molto più tempo.

E' come provare ad esprimere un concetto in turco senza conoscere la lingua turca, non so se mi spiego...

banryu79
04-11-2011, 14:19
E' come provare ad esprimere un concetto in turco senza conoscere la lingua turca, non so se mi spiego...
O come provare a risolvere un cruciverba senza leggere le definizioni... :D

cicciomegghiu
04-11-2011, 14:52
io le ho guardate le variabili. Ma ho fatto e visto altri programmi in questo modo, (col do while e la variabile che ormai posso utilizzare perchè non mi serve più) e funzionava il while. Io ho provato anche ad utilizzare una terza variabile. Ma la cosa non funziona comunque e vorrei capire dove sbaglio.
E' come provare ad esprimere un concetto in turco senza conoscere la lingua turca, non so se mi spiego...
Però se vado a vivere in turchia a furia di sentire parlare turco imparerò a parlare anch' io! e meglio di chi se lo studia in italia! (comunque inizierò a leggere le guide, mi avete convinto)

insane74
04-11-2011, 14:54
io le ho guardate le variabili. Ma ho fatto e visto altri programmi in questo modo, (col do while e la variabile che ormai posso utilizzare perchè non mi serve più) e funzionava il while. Io ho provato anche ad utilizzare una terza variabile. Ma la cosa non funziona comunque e vorrei capire dove sbaglio.

Però se vado a vivere in turchia a furia di sentire parlare turco imparerò a parlare anch' io! e meglio di chi se lo studia in italia! (comunque inizierò a leggere le guide, mi avete convinto)

http://en.wikipedia.org/wiki/Variable_scope

cicciomegghiu
04-11-2011, 15:41
Ho provato a leggerlo sia in inglese, sia con la traduzione di google e non ho capito quando le variabili non sono accessibili e perchè. Comunque me lo vado a cercare da qualche parte in italiano.

Eversor2
05-11-2011, 15:48
Quando dichiari una variabile essa è visibile solo all'inteno del suo scope.
in particolare nel tuo caso n1 e n2 sono visibili solo tra le due parentesi graffe più interne, quindi nel while(...) non puoi richiamarle. Prova a dichiararle prima del do...while()

cicciomegghiu
10-11-2011, 17:24
Quando dichiari una variabile essa è visibile solo all'inteno del suo scope.
in particolare nel tuo caso n1 e n2 sono visibili solo tra le due parentesi graffe più interne, quindi nel while(...) non puoi richiamarle. Prova a dichiararle prima del do...while()

Grazie, è quello che mi serviva! :)