PDA

View Full Version : Help per un programma in C++


Mitsuo
02-12-2002, 14:47
Ciao raga, avrei bisogno dell'urgente aiuto da parte vostra (mi serve per domani).

In pratica il testo dice: Dato un numero minore di 4 mila, convertirlo in cifre romane. E poi c'è la tabella:
1000 - M
200 - CM
500 - D
400 - CD
100 - C
90 - XC
50 - L
40 - XL
10 - X
9 - IX
5 - V
4 - IV
1 - I


Qualcuno di voi sa darmi una mano? :(

cionci
02-12-2002, 20:32
Ma lo vuoi fare in C++ per bene ? Con le classi e tutto il resto ? E con la STL ?

Mitsuo
02-12-2002, 21:00
Io vorrei un programma in C++ funzionante, nel senso che se lo copio in Visual Studio e compilo, mi gira. :)

Cmq mi accontento anche del corpo del programma, però almeno quello mi serve. :(

misterx
02-12-2002, 21:07
ma santa pazienza:

se digiti su www.google.it la seguente chiave di ricerca

"c++ number roman converter"

ne trovi quanti ne vuoi di sorgenti;)

Mitsuo
02-12-2002, 21:13
Originariamente inviato da misterx
[B]ma santa pazienza:

se digiti su www.google.it la seguente chiave di ricerca

"c++ number roman converter"

ne trovi quanti ne vuoi di sorgenti;)


Mi hai salvato la pelle, sono in debito con te. :cool:

Grazie mille. :)

cionci
02-12-2002, 21:22
Nooo...caspita... L'avevo fatto ;)

#include <string>
#include <iostream>

using namespace std;

string inRomani(int num)
{
if(num <= 0 && num >= 4000)
return "";

string ret = "";
while(num > 0)
{
if(num >= 1000)
{
ret += "M";
num -= 1000;
}
else if(num >= 900)
{
ret += "CM";
num -= 900;
}
else if(num >= 500)
{
ret += "D";
num -= 500;
}
else if(num >= 400)
{
ret += "CD";
num -= 400;
}
else if(num >= 100)
{
ret += "C";
num -= 100;
}
else if(num >= 90)
{
ret += "XC";
num -= 90;
}
else if(num >= 50)
{
ret += "L";
num -= 50;
}
else if(num >= 40)
{
ret += "XL";
num -= 40;
}
else if(num >= 10)
{
ret += "X";
num -= 10;
}
else if(num >= 9)
{
ret += "IX";
num -= 9;
}
else if(num >= 5)
{
ret += "V";
num -= 5;
}
else if(num >= 4)
{
ret += "IV";
num -= 4;
}
else if(num >= 1)
{
ret += "I";
num -= 1;
}
}
return ret;
}

void main()
{
int i;
cin >> i;
cout << inRomani(i);
}

Mitsuo
02-12-2002, 21:31
Non ti preoccupare, prendo il tuo. :)

Quelli che ho trovato con Google erano troppo lunghi e complessi, professore sospetterà di certo. :D


In ogni caso grazie a tutti i due, soprattutto per la disponibilità. :)

Mitsuo
02-12-2002, 21:40
Ultima cosa, il comando "ret" a cosa serve? Non l'abbiamo fatto, come del resto non so il significato di "using namespace std" (quel using)?
E' che non vorrei fare una figuraccia...:cool:

cionci
03-12-2002, 02:44
E' per quello che ti chiedevo come lo volevi fatto...
Fanno parte di una definizione successiva dello standard del C++...

ret non è un comando... E' l'istanza di una classe string (della Standard Template Library)...


#include <iostream.h>
#include <string.h>

int inRomani(int num)
{
if(num <= 0 && num >= 4000)
return -1;

char ret[] = "";
while(num > 0)
{
if(num >= 1000)
{
strcat(ret, "M");
num -= 1000;
}
else if(num >= 900)
{
strcat(ret, "CM");
num -= 900;
}
else if(num >= 500)
{
strcat(ret, "D");
num -= 500;
}
else if(num >= 400)
{
strcat(ret, "CD");
num -= 400;
}
else if(num >= 100)
{
strcat(ret, "C");
num -= 100;
}
else if(num >= 90)
{
strcat(ret, "XC");
num -= 90;
}
else if(num >= 50)
{
strcat(ret, "L");
num -= 50;
}
else if(num >= 40)
{
strcat(ret, "XL");
num -= 40;
}
else if(num >= 10)
{
strcat(ret, "X");
num -= 10;
}
else if(num >= 9)
{
strcat(ret, "IX");
num -= 9;
}
else if(num >= 5)
{
strcat(ret, "V");
num -= 5;
}
else if(num >= 4)
{
strcat(ret, "IV");
num -= 4;
}
else if(num >= 1)
{
strcat(ret, "I");
num -= 1;
}
}
return 0;
}

void main()
{
int i;
char str[100];
cin >> i;
inRomani(i, str);
cout << str;
}

Mitsuo
03-12-2002, 06:54
Cosi mi è un po' più chiaro, grazie mille. :)

sandropallini
03-12-2002, 11:42
azzio era facile :D in effetti nn è fatto male, putroppo noi all'uni nn siamo stati abituati ad usare le funzioni di libreria quindi la cosa si fa + lunga, presumo che si facciano in fondamenti di informatica 2 ;), ma anche senza le funzioni di libreria era corto...e visto che sono coll'acqua alla gola d'ora in poi chiederò aiuto qui :D:D abituatevi alle mie domande apparentemente prive di senso che denotano una certa impreparazione di base :D:D


SCIAO

cionci
03-12-2002, 11:55
Ho fatto un paio di errori... L'ho modificato al volo a partire da quello iniziale ;)

#include <iostream.h>
#include <string.h>

int inRomani(int num, char *ret)
{
if(num <= 0 && num >= 4000)
return -1;

ret[0] = '\0';
while(num > 0)
{
if(num >= 1000)
{
strcat(ret, "M");
num -= 1000;
}
else if(num >= 900)
{
strcat(ret, "CM");
num -= 900;
}
else if(num >= 500)
{
strcat(ret, "D");
num -= 500;
}
else if(num >= 400)
{
strcat(ret, "CD");
num -= 400;
}
else if(num >= 100)
{
strcat(ret, "C");
num -= 100;
}
else if(num >= 90)
{
strcat(ret, "XC");
num -= 90;
}
else if(num >= 50)
{
strcat(ret, "L");
num -= 50;
}
else if(num >= 40)
{
strcat(ret, "XL");
num -= 40;
}
else if(num >= 10)
{
strcat(ret, "X");
num -= 10;
}
else if(num >= 9)
{
strcat(ret, "IX");
num -= 9;
}
else if(num >= 5)
{
strcat(ret, "V");
num -= 5;
}
else if(num >= 4)
{
strcat(ret, "IV");
num -= 4;
}
else if(num >= 1)
{
strcat(ret, "I");
num -= 1;
}
}
return 0;
}

void main()
{
int i;
char str[100];
cin >> i;
inRomani(i, str);
cout << str;
}

Mitsuo
03-12-2002, 17:54
E che vi devo dire, grazie ancora. :D

Qualcuno di voi usa .NET?
Come si fa a scrivere un programma in C++, compilarlo e eseguirlo (soprattutto quest'ultima)? :confused:

cionci
03-12-2002, 18:01
Se non usi finestre o comunque qualche funzione della piattaforma .Net...Visual C++ .NET è un compilatore per console come la versione 6...

Mitsuo
03-12-2002, 18:21
Cioè? :confused:

Faccio New-->File-->C++File, scrivo il codice, e poi?

cionci
03-12-2002, 18:45
New -> Project -> Console project
Oppure anche New -> File -> C++ file... Poi al momento della cmpilazione dovrai creare il progetto...

Mitsuo
03-12-2002, 21:18
Ma si chiama proprio Console Project? :confused:

Non lo trovo...

sandropallini
03-12-2002, 23:46
io uso il Dev c++ versione 4, quello che abbiamo in facoltà, e nn mi ci trovo male, a parte una volta che mi sono setnito un deficiente, dovevo inizializzare una lista......nulla, faccio il menù e poi nn va...azz tutti scrivevano e a me dava 12 errori...panico...poi ho fatto copia e ho incollato in un nuovo progetto, allora mi dava 31 errori, lì mi sono perso del tutto, poi ho visto che si era sputtanata la iostream.h!!! :eek:
Ma mi chiedo io....ma chi ci va a smanettare nelle librerie?!?!?! :D:D:D


sciao ciao

cionci
04-12-2002, 15:40
Originariamente inviato da Mitsuo
[B]Ma si chiama proprio Console Project? :confused:

Non lo trovo...
Win32 Console Application c'è ?
Ci deve essere scritto Console...