View Full Version : [c++] espressioni booleane
stopper11
09-11-2011, 16:17
ciao a tutti mi servirebbe l'espressione per fare rispondere 1 se il numero del mese inserito(es gennaio 1 febbraio 2 marzo 3 ecc) ha 31 giorni mentre 0 se è da 30 o 28
tnx :)
parti da qui
trenta giorni a novembre con april giugno e settembre
di ventotto ce ne è uno tutti gli altri ne han 31
e inizia a sviluppare l'algoritmo poi se hai dei dubbi chiedi ma qui su hwupgrade non facciamo i compiti al posto tuo
banryu79
09-11-2011, 17:13
parti da qui
trenta giorni a novembre con april giugno e settembre
di ventotto ce ne è uno tutti gli altri ne han 31
e inizia a sviluppare l'algoritmo poi se hai dei dubbi chiedi ma qui su hwupgrade non facciamo i compiti al posto tuo
Io conosco anche un altro trucco menmonico per ricordarsi l'alternanza 31/<31 dei mesi:
stringi la mano a pugno e, partendo dalla nocca del dito indice, iteri: nocca -spazio tra le nocche - nocca - spazio tra le nocche e così via pronunciando i mesi a partire da Gennaio (quando arrivi alla nocca del dito mignolo ricominci a iterare da quella, all'indietro).
I mesi che corrispondono a una nocca sono di 31 giorni, quelli che corrispondo allo spazio tra le nocche sono composti da <31 giorni :D
stopper11
09-11-2011, 17:16
credo d esserci riuscito è giusto questo codice o si può semplificare?
#include <iostream.h>
main()
{
do{
int mese;
cout<<"inserisci il numero corrispondente al mese: ";
cin>>mese;
cout<<(((mese<8)&&(mese%2==1))||((mese>=8)&&(((mese+1)%2)==1)))<<endl;
system("PAUSE");
system("cls");
}
while(true);
}
credo d esserci riuscito è giusto questo codice o si può semplificare?
direi che proprio non ci siamo
ricomincia dai fondamentali
1) un programma con un ciclo infinito non si può vedere a meno che non sei su mcu--> fai in modo che il ciclo termini se il numero è ad esempio 0;
2)
cout<<(((mese<8)&&(mese%2==1))||((mese>=8)&&(((mese+1)%2)==1)))<<endl;
sto mischiotto cosa vorrebbe dire??? hai mischiato operatori numerici, confronti ecc ecc in una comunica un macello assurdo
fai così abbandona il c e torna al linguaggio naturale, pensa a come fare l'algoritmo e dopo pensiamo a codificarlo
suggerimento alternativo: invece che implementare l'algoritmo proposto, pensa a cosa potresti fare se ti ricordassi il numero di giorni di ogni singolo mese...
stopper11
09-11-2011, 22:24
scusate tutti ma ero appena sveglio e nn ragionavo xD risolto tutto
#include <iostream.h>
main()
{
int mese;
cout<<"inserire il numero del mese: ";
cin>>mese;
cout<<(mese%2==0)<<endl;
system("PAUSE");
}
stopper11
11-11-2011, 14:31
ho gia risolto grz :) credevo che c'era un altro modo a quello ma invece..
Io conosco anche un altro trucco menmonico per ricordarsi l'alternanza 31/<31 dei mesi:
stringi la mano a pugno e, partendo dalla nocca del dito indice, iteri: nocca -spazio tra le nocche - nocca - spazio tra le nocche e così via pronunciando i mesi a partire da Gennaio (quando arrivi alla nocca del dito mignolo ricominci a iterare da quella, all'indietro).
I mesi che corrispondono a una nocca sono di 31 giorni, quelli che corrispondo allo spazio tra le nocche sono composti da <31 giorni :D
Non conoscevo questo sistema...fantastico!!
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Finger {
public:
virtual bool Has31Days() = 0;
};
class ActualFinger : public Finger {
public:
bool Has31Days() { return true; }
};
class Hollow : public Finger {
public:
bool Has31Days() { return false; }
};
int main(int argc, char** argv) {
vector<Finger*> hand;
hand.push_back(new ActualFinger);
hand.push_back(new Hollow);
hand.push_back(new ActualFinger);
hand.push_back(new Hollow);
hand.push_back(new ActualFinger);
hand.push_back(new Hollow);
hand.push_back(new ActualFinger);
cout << "Gimme a Month: ";
unsigned month;
cin >> month;
vector<Finger*>::iterator it = hand.begin();
for (vector<Finger*>::size_type count = 1; count < month; ++count)
if (it == hand.end() - 1)
it = hand.begin();
else
++it;
string answer = (*it)->Has31Days() ? "Yes." : "Nope.";
cout << "Has 31 Days? " << answer << endl;
for (vector<Finger*>::iterator it = hand.begin(); it != hand.end(); ++it)
delete *it;
return 0;
}
Il codice più utile del mondo! :stordita:
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.