Che cosa devo scrivere per accettare subito l'input da tastiera?
Se scrivo
cout << scelta;
Mi fa inserire la mia scelta ma devo digitare invio, per non farlo premere che devo scrivere?
Che cosa devo scrivere per accettare subito l'input da tastiera?
Se scrivo
cout << scelta;
Mi fa inserire la mia scelta ma devo digitare invio, per non farlo premere che devo scrivere?
Credo che comunque devi dire al sistema QUANDO prelevare la tua stringa, non ti sembra?
devi catturae la pressione del tasto.............. e poi fai quello che vuoi~
fai un ciclo tipo...............
do
{
option = _getch(); //questo è il codice tasto premuto
switch(option)
{
case 49: //ASCII codice il menu 1
funct1(); //chiama funct1()
break;
case 50: //ASCII codice il menu 2
funct2(); //chiama funct2()
break;
case 51: //ASCII codice il menu 3
funct3(); //chiama funct2()
break;
}
}
---------------------------------
Non mi avete capito....
Ecco il listato.
#include <stdio.h>
#include <fstream.h>
#include <iomanip.h>
double nome;
char c;
int scelta;
void inserisci_contatto(void);
void sfoglia_rubrica(void);
void uscita(void);
main()
{
cout << "\n*** Rubrica Telefonica ***\n";
cout << "1. Inserisci un nuovo contatto\n";
cout << "2. Sfoglia la rubrica\n";
cout << "3. Uscita\n";
cout << "\n\n Inserisci la tua selezione....";
cin >> scelta;
switch (scelta)
{
case 1:
inserisci_contatto();
break;
case 2:
sfoglia_rubrica();
break;
case 3:
uscita();
break;
default:
cout << "Errore, input errato: uscita dal programma";
}
}
void inserisci_contatto(void)
{
cout << "\n\n" << "Inserimento nuovo contatto\n";
cout << "\nInserisci il cognome dell'utente..";
while((nome = cin.get()) != \n')
{
fstream rubrica_w("c:/rubrica.txt",ios::app);
rubrica_w.put(nome);
rubrica_w.close();
}
cout << "Ho finito di memorizzare il cognome dell'utente" << endl;
cout << "\nInserisci il nome dell'utente" << endl;
cout << "\nInserisci il numero dell'utente" << endl;
}
void sfoglia_rubrica(void)
{
cout << "\n\n Grazie per aver utilizzato questa rubrica telefonica";
}
void uscita(void)
{
cout << "\n\n Grazie per aver utilizzato questa rubrica telefonica";
cout << "\n Copyright Marco Nuke76 Brainforce" << endl;
}
Purtroppo al momento dell'input della scelta bisogna premere 1 o2 e di seguito invio per confermare, beh quell'invio mi sta rompendo le palle letteralmente perche rimane in memoria e al momento del richiamo della funzione inserisci_nuovo_utente rimane nel buffer e mi esce dal while dato che nome lo dichiarato != da "\n".
Mi serve sapere come fare ad accettare l'input di 1 solo carattere senza confermare con l'invio.
La risposta che ti ho dato è perfetta per il tuo codice...........
ovvero utilizzare il ciclo do..............
se ti scarichi il progetto....... capirai!!
e comunque ci sono altri modi per ovviare al problema dell'invio
Nonostante fossi un pò scettico lo provato, ma come ipotizzavo non cambia nulla.
O prima o dopo esce sempre dal loop.
Perche' prende come input lo '\n' e quando arriva al while del (do-while) in fondo al listato esce.
Risultato continua a non immagazzinarmi il nome.
l'algoritmo è impostato male..................
il while lo devi utilizzare per il menu e basta, digitando 1 o 2 del menu vai a chiamare la routine specifica per poi tornare con return al menu:
void inserisci_contatto(void)
{
cout << "\n\n" << "Inserimento nuovo contatto\n";
cout << "\nInserisci il cognome dell'utente..";
cin >> nome; //fai quello che vuoi, registri ecc,ecc
// questa sotto non va bene
//while((nome = cin.get()) != \n')
return; // torni al main
{
No invece stà bene,l'algoritmo è impostato male..................
problema risolto, come già capitato a volte il gets non lo prende
bastava aggiungere un gets in più e gira....
Grazie lo stesso comunque..![]()