View Full Version : da getch() a int
Ciao
in un programma rilevo la pressione del tasto ESC
così:
......
#include <conio.h>
#define ESC_KEY 27
.........
int tasto=0;
tasto = getch(); // tasto premuto
...ecc ecc
Il problema è che se effettivamente viene premuto il
tasto ESC della tastiera ho impostato un ciclo if che fa uscire
dalla funzione, ma non so come fare per assegnare un valore
numerico a questo punto a "tasto" in modo che a sua volta
sia assegnato ad un'altra variabile int che deve essere passata ad
una funzione.
Ho provato e riprovato ma produco sempre errori differenti
anche se molte volte il codice si compila (ma il programma ad un cero punto
si blocca)
che mi dite?
grazie
se mi rispieghi il tutto vedo se posso aiutarti, non ho capito molto bene il tuo problema....:(
A tasto è già assegnato un valore numerico...
ecco il codice:
....
#include <conio.h>
#define ESC_KEY 27
.........
else if (scelta == 10){
cout<<"Vuoi modificare i dati di quale libro?"<<endl;
cout<<"Numero posizione: ";
int tasto=0;
tasto = getch(); // tasto premuto
if ( tasto!=ESC_KEY ){
cin>>posmod;
modificaContatto (rubrica,contatto, posmod);
aggiungiModifica (rubrica,contatto, posmod);
}
devo praticamente inserire il numero posizione 2
volte.
ad esempio voglio passere il numero posizione 1 devo premere 2 volte 1 perchè la prima volta comunica che non si tratta del tasto ESC.
Vorrei che il valore di tasto (a meno che non sia proprio esc)
sia assegnato in questo caso a posmod.
Chiaro?
Grazie e ciao
Originariamente inviato da cionci
posmod = tasto - '0';
ciao e grazie
mi spieghi, per favore, perche - '0'?
che significa?
Perchè la tabella dei codici ASCII pone i numeri in questo modo:
0
1
2
3
4
5
6
In pratica sono codici consecutivi, quindi se togli dalla codifcia di un numero lo zero...hai il numero ;)
e se posmod fosse stato un char o char[] (oppure string)
come bisognava procedere?
grazie e ciao.
Se è char:
posmod = tasto;
Se è char[]:
posmod[i] = tasto;
con una variabile di tipo string non funziona.
string st;
....
st.push_back(tasto);
....
scusami ancora
ho provato a fare così
nel mio programma:
cout <<"Inserisci Titolo: ";
tasto = getch(); // tasto premuto
if (tasto!=ESC_KEY)
{
contatto.titolo.push_back(tasto);
......
......
else
{
return;
}
Se il tasto premuto non è esc
la stringa (titolo che fa parte di una struttura)
dovrebbe essere assegnata a contatto.titolo
ma esco fuori comunque dal ciclo
al primo tasto battuto.
Forse non mi sono spiegato bene e/o
non ho capito.
grazie
Fammi vedere un po' più codice...ad esempio non vedo cicli ;)
Originariamente inviato da cionci
Fammi vedere un po' più codice...ad esempio non vedo cicli ;)
ma praticamente il codice sopra è richiamato da questo che già conosci:
void modificaContatto (lstRubrica &rubrica,datiRubrica &contatto,int posmod){
cin.ignore();
int tasto=0;
int mod = 0;
int i = 0;
i = posmod-1;
cout << "Quale modifica vuoi apportare ai dati del libro?"<<endl;
cout << " 1. Al Titolo"<<endl<<" 2. All' Autore"<<endl<<" 3. All'Editore"<<endl;
cout << " 4. Al Prezzo"<<endl<<" 5. Tutti"<<endl<<" 6. Disponibilita'"<<endl;
cout <<"Scelta: ";
tasto = getch(); // tasto premuto
if ( tasto!=ESC_KEY){
mod=tasto - '0';cout<<mod;
}
else
{
return ;
}
Il codice dell'intero programma è troppo lungo.
Se ti serve fammi sapere?
ciao e grazie
Appunto dicevo che non vedevo cicli ;)
while (tasto!=ESC_KEY)
{
contatto.titolo.push_back(tasto);
......
......
else
{
return;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.