|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
[c++]Mi aiutate a capire l'istruzione?
Ciao a tutti ragazzi
vorrei capire un' istruzione a cosa serve: vi spiego il problema: devo visulizzare gli interi da 1 a 20 usando un ciclo for con variabile contatore x intera e inizializzata ad 1.Devo visualizzare 5 interi per linea , se il valore è 0, visualizza un carattere nuova linea se no carattere di tabulazione Codice:
for(x=1; x<=20 ; x++)
count<<x;
if (x%5==0) <<<questa if non la capisco cosa significa?<<<
cout<<endl;
else
cout<<"\t";
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
E' l'operatore modulo.
Significa: se x è divisibile per 5 (o meglio: se il resto della divisione x / 5 è uguale a 0). |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quel % è l'operatore di modulo, restituisce il resto della divisione.
Quindi: se il resto della divisione di x / 5 è uguale a 0 (ovvero, se x è divisibile per 5) stampa endl. EDIT: doppio
__________________
Il sole è giallo |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
e cosa c'entra con questa espressione "Devo visualizzare 5 interi per linea"?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
Quote:
grazie si fanno anche questo itpo di ragionamento? mi devo abituare allora...
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Tieni presente che programmazione, logica booleana e matematica sono praticamente amanti tra di loro.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
ok, cercherò...
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
ragazzi mi aiutate a capire le due funzioni che mi permettono di visualizzare l'orario in tempo universale-militare (18:30) e quello in tempo standard(6:30 PM)?
queste sono le funzioni Codice:
void stampamilitare (const Tempo &t) void stampastandard (const Tempo &t) Codice:
//Crea struttura ,imposto i membri e li visualizzo
#include <iostream>
using namespace std;
struct Tempo {
int ora;
int minuto;
int secondo;
};
void stampamilitare (const Tempo &);
void stampastandard (const Tempo &);
int main()
{
Tempo cenaTempo; //variabile del nuovo tipo Tempo
//ora inizializzo i membri con valori validi
cenaTempo.ora=18;
cenaTempo.minuto=30;
cenaTempo.secondo=0;
cout<<"cena sarà servita alle:";
stampamilitare(cenaTempo);
cout<<" tempo militare,\n che è :";
stampastandard(cenaTempo);
cout<<"in tempo standard.\n";
return 0;
}
//funzione stampa militare e stampa standard
void stampamilitare (const Tempo &t)
{
//da qui
cout<<(t.ora<10 ? "0" : "")<<t.ora<< ":"
<<(t.minuto<10 ? "0" : "")<<t.minuto;
//a qui
}
void stampastandard (const Tempo &t)
{
//da qui
cout<<((t.ora==0 ||t.ora==12)?
12 : t.ora %12)
<<":"<<(t.minuto<10 ? "0":"")<<t.minuto
<<":"<<(t.secondo<10 ? "0":"")<<t.secondo
<<(t.ora<12?" AM ":" PM ");
//a qui
}
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. Ultima modifica di Bandit : 12-05-2009 alle 12:03. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
ho messo i commenti in rosso dove non ho capito
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#12 | ||
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Quote:
(condizione ? #true : #false) Praticamente se la condizione è vera viene eseguito il codice #true, se la condizione è falsa quello #false. In questo caso se l'ora e i minuti sono inferiori a 10 (e quindi hanno una singola cifra) ci aggiunge uno 0 davanti. Se i numeri sono a due cifre invece ci aggiunge una stringa vuota, non cambiando niente. Quote:
controlla se l'ora è 0 o 12 e in quel caso ritorna 12, altrimenti ritorna ora % 12 (praticamente trasforma le ore 13-23 in 1-11). |
||
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Cosa non ti e' chiaro ? Il modo in cui l'ora viene stampata ?
Se usi lo standard militare, devi mettere uno 0 davanti ogni cifra (sia per l'ora che per i minuti) se questi non hanno gia' una prima prima cifra diversa da 0. Quindi 1 viene scritto 01, 2 viene scritto 02, 13 viene scritto 13 e non 013 perche' ce' gia' un 1 che precede il 3. Idem se scrivi 23:56, se scrivi 7:6 allora verra' trasformato in 07:06. Se usi lo standard civile invece l'ora va scritta in formato xx:yy:AM/PM con xx compreso tra 0 e 12 (ore), yy sono i minuti e AM o PM distinguono se le ore si riferiscono al mattino o al pomeriggio. Quindi le 2:05 AM non sono uguali alle 2:05 PM.
__________________
MICROSOFT : Violating your privacy is our priority |
|
|
|
|
|
#14 | ||
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
grazie della spiegazione
però è possibile scendere in dettaglio? Quote:
Codice:
t.ora<10 ? "0" : "" Andando oltre se qui consideriamo altrimenti Quote:
Codice:
((t.ora==0 ||t.ora==12) ? 12 : t.ora %12)
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
||
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Quote:
|
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
L'operatore ternario "? :" funziona cosi'
espressione1 ? espressione2 : espressione3. Viene valutata l'espressione1, se e' vera viene restituito il valore dell'espressione 2, se invece espressione1 e' falsa viene restituito il valore dell'espressione3. E un modo alternativo di scrivere una istruzione if then else. Ad ogni modo non sono totalmente equivalenti, perche' l'if-then-else e' una istruzione mentre ? : e' un espressione e puo' essere utilizzata in posti dove non potrebbe essere usata l'istruzione if-then-else.
__________________
MICROSOFT : Violating your privacy is our priority |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
quindi ? e :
così scritti possono poter essere covisti come una specie di if (?) e else (
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
Quote:
abbiam orisposto in contemporanea p.s. grazie a tutti, ma mi sto ambientando piano piano a questo c++
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Quote:
Codice:
char cin ;
cin = getchar() // leggi un carattere dallo standard input
if (cin=='a') printf("%c", 'A'); else printf("%c", '\n') ;
....
Codice:
char cin ;
printf ("%c", ( (cin=getchar()) == 'a') ? 'A' : '\n') ;
__________________
MICROSOFT : Violating your privacy is our priority |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
Quote:
il "%c" viene sempre visualizzato, giusto? visto che prima sia nell'if che nel else c'era quindi è un modo di scrivere abbreviato
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:36.




















