|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
[C++] Dato un testo risalire ai codici ASCII di ogni carattere
Salve a tutti,
avrei un problema che non riesco a risolvere. Preso un input da tastiera (un solo carattere), vorrei che questi venisse "analizzato" restituendomi il corrispettivo codice ASCII. Ad esempio inserendo 'A' il programma deve restituirmi 65. Questa è la parte del programma che ho scritto, ma che presenta un errore nella funzione "CodiceAsciiCarattere": Codice:
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int CodiceAsciiCarattere(string car){
int ascii;
char carattere[1000];
strcpy(carattere, car.c_str() );
ascii = (int)carattere;
return ascii;
}
main(){
string a;
cout<<"INSERIRE CARATTERE: ";
getline(cin,a);
cout<<"RISULTATO CONVERSIONE IN CARATTERI ASCII: "<<CodiceAsciiCarattere(a);
cout<<"\a\nFINE PROGRAMMA";
getch();
}
PS: preferirei usare la classe string per gestire il testo. Grazie mille. Ultima modifica di skeleton : 06-03-2011 alle 16:50. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Il problema è qui
Codice:
strcpy(carattere, car.c_str() );
ascii = (int)carattere;
ma nella seconda prendi l'entry point del vettore carattere e lo metti in una variabile int....quindi la conversione in ascii dov'è? quello che devi fare è ciclare con un for su tutta la stringa e fare la conversione carattere per carattere, ad esempio Codice:
for (i=0; i<strlen(carattere); i++) ascii[i] = int(carattere[i]); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
Hemm, ma siete PPPPAAZZI?!?
Codice:
#include <iostream>
using namespace std;
int main()
{
char a;
cin >> a;
cout << (int)a;
system("pause");
return 0;
}
Codice:
#include <iostream>
using namespace std;
int converti(char a)
{
return (int)a;
}
int main()
{
char a;
cin >> a;
cout << converti(a);
system("pause");
return 0;
}
Carattere è un vettore, mica lo puoi assegnare tutto ad una variabile
__________________
System Failure Ultima modifica di Perseverance : 05-03-2011 alle 23:42. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 267
|
Il tuo più che altro è un errore concettuale, visto che stai usando una stringa per prendere un singolo carattere.
Quello che devi fare è questo: Codice:
char c; cin >> c; cout << (int)c;
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
Codice:
int CodiceAsciiCarattere(string car){
int ascii;
char carattere[1000];
strcpy(carattere, car.c_str() );
ascii = (int)carattere;
return ascii;
}
Codice:
#include <blablabla>
int ascii[1000]; //Variabile vettoriale globale
void CodiceAsciiCarattere(string car){
char carattere[1000];
strcpy(carattere, car.c_str() );
for(int i=0; i<1000; i++)
ascii[i] = (int)carattere[i];
}
__________________
System Failure |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Scusate la mia ignoranza in tema di array, ma a scuola abbiamo appena cominciato e devo fare ancora un po'di pratica. Mi sorge spontanea una domanda, se io devo convertire solo una lettera alfabetica per esecuzione di programma, posso impostare la funzione in questo modo? perchè si o perchè no?
Codice:
int CodiceAsciiCarattere(string car){
int ascii[0];
char carattere[1];
strcpy(carattere, car.c_str() );
ascii[0] = (int)carattere[1];
return ascii[0];
}
Ultima modifica di skeleton : 06-03-2011 alle 11:30. |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 267
|
Così facendo crei un vettore "ascii" con 0 elementi (???). Non mi pare che la cosa abbia molto senso, tanto vale che crei una variabile normale.
Se vuoi estrarre il codice ASCII del primo carattere in una stringa basta fare così: Codice:
int CodiceAsciiCarattere(string car)
{
return (int)carattere[0];
}
|
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
a questo punto è obbligatorio chiedere: "ma l'input qual'è?"
perchè qui c'è chi come me ha capito che l'input è una stringa, chi invece ha capito che l'input è un singolo carattere a seconda della situazione la routine cambia profondamente se devi convertire una sequenza di caratteri in una sequenza di valori interi che rappresentano il codice ascii dei caratteri allora la soluzione è quella che ho detto io |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Perchè usi string per rappresentare un solo carattere?
__________________
iMac 27" 5K |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Mi scuso con tutti, ma per un mio errore ho affermato che il codice postato da Supdario era errato. Il programma, rivisto, invece sembra dare esiti positivi alle mie domande.
Ecco ciò che ne è risultato: Codice:
int CodiceAsciiCarattere(string car){
return (int)car[0];
}
main(){
string a;
cout<<"INSERIRE CARATTERE: ";
getline(cin,a);
cout<<"RISULTATO CONVERSIONE IN CARATTERI ASCII: "<<CodiceAsciiCarattere(a);
cout<<"\a\nFINE PROGRAMMA";
getch();
}
Grazie e a presto. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
Sinceramente se tu fossi un programmatore non vorrei mai usare i tuoi programmi.
Il mio prof a robe così, anche se funzionanti stioccava un bel 3.
__________________
System Failure |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:22.




















