PDA

View Full Version : [C++]Help


Kleidemos
17-03-2003, 18:47
Ho fatto un prog in C++ per sapere il codice ASCII di un char ma mi da 1000 errori


// files : princ.cpp
#include <iostream.h>
#include <stdlib.h>
#include "funz.h"

void main()
{
char control;
do{
AsciiCode cod = new AsciiCode();
cod.alfabeto = "a", "b",
"c", "d",
"e", "f",
"g", "h",
"i", "l",
"m", "n",
"o", "p",
"q", "r",
"s", "t",
"u", "v"
cout <<"Sciegli tra le seguenti lettere quella di cui vuoi sapere l' ASCII e digitala"<<endl;
cod.stampa_tab();
char quale;
cin >> quale;
cod.stampa_car(quale);
cout <<"Premi X per uscire"<<endl;
cin >> control;
}while(control != "X" | control != "x");
}

//file: funz.h
#include <string>
class AsciiCode
{
private:
public:
char stampa_car(char car);
void stampa_tab();
static char alfabeto[] = new char[20];
}

char AsciiCode::stampa_car(char car)
{
int num = car;
cout << "Il codice ASCII di" << car <<" e' " << car <<endl;
return car;
}
void AsciiCode::stampa_tab()
{

for (int i=0;i<10;i++)
{
for (int j=0;j<10;j++)
{
cout <<alfabeto[i]<<"\t"<<alfabeto[j]<<endl;
}
}
}// funz

P.S: siate duri!anche se nn uso C++ da 7 mesi dovrei sapere di +

Kleidemos
17-03-2003, 18:47
ekko gli errori:
In file included from c:\documents and settings\admin\desktop\asciicode\princ.cpp:4:
c:\documents and settings\admin\desktop\asciicode\funz.h:8: ANSI C++ forbids in-class initialization of non-const static member `alfabeto'
c:\documents and settings\admin\desktop\asciicode\funz.h:8: field initializer is not constant
c:\documents and settings\admin\desktop\asciicode\funz.h:11: semicolon missing after declaration of `AsciiCode'
c:\documents and settings\admin\desktop\asciicode\funz.h:12: extraneous `char' ignored
c:\documents and settings\admin\desktop\asciicode\funz.h:12: new declaration `class AsciiCode AsciiCode::stampa_car(char)'
c:\documents and settings\admin\desktop\asciicode\funz.h:6: ambiguates old declaration `char AsciiCode::stampa_car(char)'
c:\documents and settings\admin\desktop\asciicode\funz.h:12: semicolon missing after declaration of `class AsciiCode'
c:\documents and settings\admin\desktop\asciicode\princ.cpp: In function `int main(...)':
c:\documents and settings\admin\desktop\asciicode\princ.cpp:10: conversion from `AsciiCode *' to non-scalar type `AsciiCode' requested
c:\documents and settings\admin\desktop\asciicode\princ.cpp:11: incompatible types in assignment of `const char[2]' to `char[1]'
c:\documents and settings\admin\desktop\asciicode\princ.cpp:21: parse error before `<'
c:\documents and settings\admin\desktop\asciicode\princ.cpp:25: no matching function for call to `AsciiCode::stampa_car (char &)'
c:\documents and settings\admin\desktop\asciicode\funz.h:12: candidates are: int AsciiCode::stampa_car(AsciiCode *, char)
c:\documents and settings\admin\desktop\asciicode\princ.cpp:28: ANSI C++ forbids comparison between pointer and integer
c:\documents and settings\admin\desktop\asciicode\princ.cpp:28: ANSI C++ forbids comparison between pointer and integer

soalle
17-03-2003, 21:09
dividi il file .h dal file .cpp;
header file solo dichiarazioni, file cpp definizioni...

gamma29
17-03-2003, 22:16
Premetto che non conosco il c++, ma in c per scrivere il codice ASCII di un carattere basta semplicemente scrivere la variabile char come variabile decimale.

Es.:

char a;
..................
..................
printf("Il codice ASCII di %c è %d",a,a);

Tutto qui.
Quindi inserendo, ad esempio, il carattere 'a' il programma visualizzerebbe questo messaggio:

Il codice ASCII di a è 97

P.S: Scegli si scrive senza i!!!!! :sofico:

cionci
17-03-2003, 23:56
Poi il char è a tutti gli effetti un intero...

Si può benissimo fare 'a' + 1...che diventa 'b' ;)

cionci
18-03-2003, 00:17
Mi sa che stai facendo un po' di confusione fra C# e C++ ;)

AsciiCode cod = new AsciiCode();

In C++ non ha senso...basta AsciiCode cod;

cionci
18-03-2003, 00:26
Con questo non so cosa tu ci voglia fare ;)

static char alfabeto[] = new char[20];

Dovrebbe bastare char alfabeto[20];

Magari questa inizializzazione poteva andare nel costruttore di default:
alfabeto = "a", "b",
"c", "d",
"e", "f",
"g", "h",
"i", "l",
"m", "n",
"o", "p",
"q", "r",
"s", "t",
"u", "v"
Ed in ogni caso non è corretta...
Questa forma la puoi usare solamente nell'inizializzazione...in questo modo:

char alfabeto[21] = {'a','b','c','d'......'v','z'};

Le lettere dell'alfabeto italiano sono 21...non 20 ;)

Per inizializzare quel vettore potevi semplicemente fare:

strcpy(alfabeto,"abcdefghilmnoprstuvz");

In questo caso lo avresti dovuto fare di 22 per contenere anche lo \0...

Kleidemos
18-03-2003, 06:16
Ora ma da:

In file included from c:\documents and settings\admin\desktop\asciicode\princ.cpp:4:
c:\documents and settings\admin\desktop\asciicode\funz.h:11: function body for constructor missing
c:\documents and settings\admin\desktop\asciicode\princ.cpp:24: `AsciiCode::stampa_car(char)' has already been declared in `AsciiCode'
c:\documents and settings\admin\desktop\asciicode\princ.cpp:31: `AsciiCode::stampa_tab()' has already been declared in `AsciiCode'
c:\documents and settings\admin\desktop\asciicode\princ.cpp:43: `AsciiCode::AsciiCode()' has already been declared in `AsciiCode'
c:\documents and settings\admin\desktop\asciicode\princ.cpp:46: parse error at end of input


Con

// files : princ.cpp
#include <iostream.h>
#include <stdlib.h>
#include "funz.h"

void main()
{
char control;
do{
AsciiCode cod;
cout << "Sciegli tra le seguenti lettere quella di cui vuoi sapere l' ASCII e digitala\n";
cod.stampa_tab();
cout << "\n";
char quale;
cin >> quale;
cout << "\n";
cod.stampa_car(quale);
cout <<"Premi X per uscire"<<endl;
cin >> control;
}while(control != 'X');
}

char AsciiCode::stampa_car(char car)
{
int num
num = (int)car;
cout << "Il codice ASCII di" << car <<" e' " << car <<endl;
return car;
}
void AsciiCode::stampa_tab()
{

for (int i=0;i<10;i++)
{
for (int j=0;j<11;j++)
{
cout <<alfabeto[i]<<"\t"<<alfabeto[j]<<endl;
}
}
}// funz

AsciiCode::AsciiCode()
{
strcpy(alfabeto,"abcdefghilmnoprstuvz");
}


//file: funz.h
#include <string>
class AsciiCode
{
private:
public:
void stampa_car(char car);
char stampa_tab();
static char alfabeto[20];
AsciiCode():
};