Newsgroup: it.comp.lang.c
Titolo: sono disperato!!!!(esercizio da interi a romani)

Ragazzi salve, nn capisco piů dove sono!!!!!
l'ansia č troppa e non ragiono piů!!!!
vi prego mi potete passare il codice per poter fare questo  esercizio!!!!.
ho letto i vari post ma non riesco a ricavarci niente anche perche, ho
affrontato l'argomento partendo da zero.
Se avessi avuto piů tempo avrei potuto studiare di piů, ma ho la verifica
domani!!!!! e non riesco, credetemi ho provato notte e giorno!!!!
Esercizio
2) Leggere da tastiera un numero intero e scriverlo
sullo schermo come numero romano.
Si affronti il problema in forma semplificata:
- Il numero sia minore di 40
- Il 4 venga scritto IIII
- Il 9 venga scritto VIIII
non rieco a capire neppure che dichiarazioni fare....
credtemi avro tempo e modo di studiare il linguaggio per sostenere la prova
pratica l'esame finale č a maggio, quindi ho piů tempo!!!!
grazie di cuore!!!!!


il numero 14 e il 19 come dovrebbero essere? ho una vaga idea di come si
debba risolvere il problema

 - Il 9 venga scritto VIIII
#include <stdio.h>
int main()
{
    int n, decine, unita;
    while (1) {
      printf("Inserire un numero (0 < n < 40): ");
      scanf("%d", &n); while (getchar() != '\n') ;
      if ((n > 0) && (n < 40))
        break;
    }
    decine = n / 10;
    unita = n % 10;
    switch (decine) {
      case 1: printf("X"); break;
      case 2: printf("XX"); break;
      case 3: printf("XXX"); break;
      case 4: printf("XL"); break;
    }
    switch (unita) {
      case 1: printf("I"); break;
      case 2: printf("II"); break;
      case 3: printf("III"); break;
      case 4: printf("IIII"); break;
      case 5: printf("V"); break;
      case 6: printf("VI"); break;
      case 7: printf("VII"); break;
      case 8: printf("VIII"); break;
      case 9: printf("VIIII"); break;
    }
    return 0;
}

sei veramente gentile grazie di cuore a buon rendere!!!!!
prometto che studiero!!!!

 affrontato l'argomento partendo da zero.
Tommy

 - Il 9 venga scritto VIIII
4 dovrebbe essere IV
9 dovrebbe essere IX
per forma semplificata intendi avere 4 IIII e 9 VIIII ?!
ok......
Inizio con la forma non semplificata.....
<CODE>
#include<stdio.h>
int main()
{
     char *unita[]={"","I","II","III","IV","V","VI","VII","VIII","IX"};
     char *decine[]={"","X","XX","XXX"};
     int n = 0;
     puts("Scrivi il numero: ");
     scanf("%d",&n);  // leggi nota in fondo!
     if((n>=0)&&(n<40)){
          printf("%s%s\n",decine[n/10],unita[n%10]);
     }else{
          puts("Il numero non e' nell'intervallo 0-39\n");
     }
     return 0;
}
</CODE>
N.B. scanf non andrebbe mai utilizzata in sistemi di produzione!
per un esempietto cosi' la ho usata in quanto piu' comoda, ma ricorda che
quando produci un "vero" software non dovresti utilizzarla.
Ora per convertirlo nel modo semplificato basta cambiare:
char *unita[]={"","I","II","III","IV","V","VI","VII","VIII","IX"};
in:
char *unita[]={"","I","II","III","IIII","V","VI","VII","VIII","VIIII"};
e dopo tutto ti accorgi che e' semplificata SOLO se affronti il problema in
una certa maniera ma e' assolutamente identica se lo affronti come lo ho
affrontato io!
Sono sicuro il tuo prof. non gradira' il mio metodo lazy (pigro!)... d'altro
canto non posso davvero perdere tanto tempo per te!
Tommy

tommy ti rinfrazio per la tua gentilezza
ma mi trova errori nella stringhe char *decine
                                                 char *unità

E' un esercizietto da superiori ... anzi da prime classi di superiori: se
non riesci a fare questo piccolo esercizio dove vuoi arrivare nella vita ?
Andrea

                                                  char *unità
Che errori ti da?!? Ho appena provato a compilarlo e a me non ne da nemmeno
uno!
Sono curioso....
Tommy


E io prometto che saro' piu' buono ed ascoltero' la mamma.
Ma va .....

 non riesci a fare questo piccolo esercizio dove vuoi arrivare nella vita ?
Nato con la camicia...
Proprio non sei riuscito ad astenerti dal rispondere eh?
Marcello

Ciao Marcello,
Scusami ... non sono nato con la camicia e, ai miei tempi, l'aiuto veniva
dal compagno e non dai NG, però è un esercizietto banale, è stato risolto da
voi, e quindi non è servito al suo scopo (quello di far ragionare lo
studente).
Nella nostra ditta sono passati fior fiori di laureati e di fronte ad una
prova "banale" come questa, pur con la libertà dell'uso del linguaggio che
volevano, hanno lasciato il foglio (per non dire il monitor) vuoto.
Non avete dato nessun aiuto a Fabrizio, anzi lo avete privato
dell'opportunità di far lavorare un pochino (perchè, ripeto, banale come
esercizio) i suoi neuroni.
Ciao
Andrea

Allora volevo rigraziare prima di tutto a quelli che mi hanno dato
un'aiuto!!!!
Per rispondere a quelli che criticano:
allora!!!! io i neuroni ne ho anche abbastanza!!!! e sono tutti in funzione
!!!! ma se leggi i post capisci che è impossibile riuscire a porogrammare in
c!!!! non ho mai fatto nulla di simile e poi in una settimana sfido chiunque
a capire la programmazione!!!!
quindi ho solo chiesto la soluzione di questi esercizi da  poter passare la
verifica,( non l'esame!!!! voto!!! inteindes!!!!!!), svolgere la verifica !
poi se il prof mi boccia sono più contento!!!!!
vuol dire che devo fare di testa mia!!!!
quando le cose si sanno non si chiedono!!!!!
vuolevo poi dire che, si va bene sono di difficoltà bassa, come dice
qualquno:  di prima superiore!!
 non lo metto in dubbio però per me che sono alle prime armi è ha un livello
di scienza di programmazione!!!!
Cmq grazie a tutti!!!!
la verifica non è stata superata!!!
Ci sentiremo nei prossimi post!!!!!
magari sapendo e conoscendo qualcosa del C :" sono curioso di imparare".
Chi la dura la vince!!!!!

Come ho già scritto, forse in maniera aggressiva o poco educata,
risolvendoti il problema NON ti è stato dato alcun aiuto perchè gli esercizi
"banali" come questi servono proprio per esercitare il futuro professionista
a "ragionare".
Hai fatto più di un post sempre sullo stesso argomento e... non sono
contento che tu non abbia passato la verifica, non ci guadagno nulla e non
ci rimetto nulla, però mi domando perchè, se devi imparare un linguaggio
come il C (bello, a mio avviso, e lo conosco da anni anche se non benissimo
come vorrei !!!) di fronte ad un problemino come questo fatto proprio per
aiutarti a scoprire le difficoltà del linguaggio chiedi aiuto e quando ti
viene indicata la strada giusta (thread del 12/02/04), logicamente senza
forniti il codice, insisti per avere il codice ...
Insomma, non sono un professore, ho fatto molta (ma molta) scuola da
studente e tante ripetizioni da "insegnante" e mi sembra di essere di fronte
al ragazzetto che non vuole sforzarsi di risolvere il problemino per casa e
non accetta nemmeno di ragionare insieme.
A scuola ti avranno pur dato un testo su cui studiare e avrai un PC su cui
fare i tuoi esercizi ... dai tuoi post si direbbe che il libro non è stato
aperto ed il PC ti serve solo per navigare ...
Andrea

 a capire la programmazione!!!!
Allora, se č impossibile, perchč stai studiando il C ?
Si vede che l'impossibile č il mio pane dato che il C mi sta facendo
mangiare da anni ( e peso 115 kg ....).
Dai tuoi post, non riesci a fare neppure l'algoirtmo, quindi il problema non
č il C e un po' piů  a monte e, se vuoi credimi, qui, per questo esercizio,
non servono anni di esperienza ma un po' di carta e di prove prima di
passare alla tastiera
Andrea

-Allora, se è impossibile, perchè stai studiando il C ?-
Sei gentilissimo!!!!
sto studiando il c!!! perche me lo iompongono all'università!!!!! e poi mi
attira conoscere questo mondo!!!!
-Dai tuoi post, non riesci a fare neppure l'algoirtmo, quindi il problema
non
è il C e un po' più  a monte-
da dove devo partire allora!!! per avere una conoscenza sufficente per
riuscire a programmare.
ho tanta voglia di capire e riuscire nell'intento!!!!
quanto alla risoluzione dell'esercizio!!!
credimi non sto difendendomi ma ti giuro che ero in panne !!!! non riuscivo
più a ragionare ero troppo ansioso!!!!
comunque grazie dei tuoi consilgi !!!
anzi ne accetto altri!!!

 Sei gentilissimo!!!!
Non riesci proprio a scrivere con meno punti esclamativi?
grazie
Gian Leonardo


<cut>
Povera universita' .
Chi e' che ti ha imposto la facolta'?
Ha ragione phora al 100%.
Da uno studente di universita' si presuppone un approccio al problema
diverso da come lo stai affrontando tu.
La programmazione al computer e' solo l'ultimo dei passaggi necessari alla
creazione di un programma.
Prima viene l'analisi del problema e la stesura di una bozza dell'algoritmo
mediante l'ausilio di un metalinguaggio o dei diagrammi a blocchi.
Anche presso la ditta in cui lavoro, entrano (ed escono per fortuna)
laureati che di fronte a problemi banali come questo devono essere guidati
come bambini.
Se domani con il tuo bel pezzo di carta in mano devi realizzare qualche
cosa, cosa fai vai a dire al tuo capo che hai il cervello in panne ?
Quanto al C, spero che ti boccino perche' e' solo una vergogna che ti
presenti.
Giuseppe

ma vergognati tu!
a persone come te non vale la pena neppure di rispondere
devi capire prima
Ma poi tutta questa polemica!!!
mi hanno bocciato, ne sono orgolgioso , anche perche non conoscevo niente,
quindi non è una bocciatura per me!
Poi, in risposta a quello che dici! non è neppure colpa degli universitari è
colpa del metodo di studio di questa università di merda:
teoria 100%
pratica neppure ti fanno utilizzare i computer - pratica = 0
Poi parli parli ma quanto e da quanto tempo studi il c
da 1 o due anni ,24 ore al giorno,
 fanno:
 per un anno 8760 ore
contro
84 ore che mi sono messo a spulciarmi il libro per capirci qualcosa(non
avevo solo sta materia da darmi, caro mio, ben sai che all'università non si
studia solo il c)
ma fammi il piacere....
p.s Mi permetto di risponderti in questo modo, data la tua arroganza. Se
volevi farmi una romanzina, la facevi con più garbo, l'avrei accettata
volentieri!

 esercizio) i suoi neuroni.
Non so se lo hai notato, ma, almeno per quanti mi riguarda, ho postato 
quattro righe di codice all'ultimo momento.
Ad ogni modo, ripeto, non ho nulla da eccepire su quello che hai detto.
Sono disposto a riconoscere di avere, in un certo qual senso, sbagliato 
a postare una soluzione a farizio, ma ho pensato che fosse in difficoltà 
  ed ho cercato di aiutarlo.
Sono convinto anche io, come te, che fabrizio sia arrivato al giorno 
della verifica con l'acqua alla gola per sua colpa, ma, personalmente, 
non mi sento di giudicare nessuno.
La mia critica non era rivolta a quello che hai detto, ma al modo in cui 
lo hai detto.
Tutto qui.
Marcello


In sintesi: se vuoi programmare e farne un mestiere studia!
L'università forse e' carente in qualche cosa' ma di certo ti da' la
possibilita' di misurarti con te stesso e verificare le tue conoscenze.
Io ho dato fondamenti  senza seguire alcuna lezione eppure l'ho superato con
30 semplòicemente studiando e ristudiando.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.590 / Virus Database: 373 - Release Date: 16/02/2004

Ho voluto aiutarti ed ho fatto questo script...
Dovrebbe essere + o - funzionante... almeno fino a 3999
Eventualmente dacci un'occhiata e correggi i vari bachetti che
non ho trovato io.
Ad ogni modo ti consiglio prima di adoperarlo di cercare di capirlo
xkč quello dei numeri romani č veramente un bel esercizietto per allenare la
lodica.
Con DEV-C++ lo compila senza problemi
#include <stdio.h>
#define MINVALUE 0 //Valore minino inseribile
#define MAXVALUE 3000  //Valore massimo inseribile
////////////////////////////////////////////////////////////////////////////
///
#define I    0
#define V    1
#define X    2
#define L    3
#define C    4
#define D    5
#define M    6
#define OFFSETDECINE 2
////////////////////////////////////////////////////////////////////////////
///
const char simbol[7]  =  {'I','V','X','L','C','D','M'};
const int unit[7]  = { 1 , 5 , 10, 50, 100,500,1000};
////////////////////////////////////////////////////////////////////////////
///
int roman(int numero); //Prototipo funzione traduzione numero in formato
romano
////////////////////////////////////////////////////////////////////////////
///
int main()
{
 int input;        //variabile per contenere il numero inserito
 while(input<MINVALUE || input>MAXVALUE) //Fino a che "input" sfora i limiti
 {
  printf("\n Inserire un numero compreso tra %d e %d: ",MINVALUE,MAXVALUE);
//Stampo richiesta
  fflush(stdin);   //Svuoto buffer tastiera
  scanf("%d", &input); //Leggo un intero e lo appoggio su "input"
  fflush(stdin);   //Svuoto buffer tastiera
 }
 roman(input);   //Chiamo funzione di traduzione in numero romano
 getchar();
 return 0;
}
////////////////////////////////////////////////////////////////////////////
///
int roman(int numero) //Algoritmo di conversione in numero romano
{
 int index;
 for(index=M ; numero>0 ; index--)
 {
  //Arrivati al 9, si deve sottrarre dal "carattere di decina"
    //immediatamente superiore
  if(((index == X) || (index == C) || (index == M)) && ((numero /
(unit[index-OFFSETDECINE])) == 9))
     {
      printf("%c%c",simbol[index-OFFSETDECINE],simbol[index]);
      numero = numero - (unit[index]-(unit[index-OFFSETDECINE]));
  }
  else
  {
  //I simboli "I, X, C, M" non devono essere
     //usati per piů di 3 volte consecutivamente
  if(((index == I) || (index == X) || (index == C) /*|| (index == M)*/) &&
((numero / unit[index]) > 3))
  {
      printf("%c%c",simbol[index],simbol[index+1]);
      numero = (numero - (unit[index]*4));
  }
   while((numero>=(unit[index]-unit[I])) && (numero>0))
   {
    if(numero == (unit[index]-unit[I]))
    {
     printf("%c%c",simbol[I],simbol[index]);
     numero-=(unit[index]-unit[I]);
    }
    else
    {
     printf("%c",simbol[index]);
     numero-=unit[index];
    }
   }
  }
 }
 return 0;
}

Dovrebbe funzionare abbastanza bene... l'ho scritto un po in fretta.
Prima di adoperarlo studiatelo che č un ottimo esercizio per la lodica
Ciao


Studialo che è un buon esercizio di logica.
Dovrebbe funzionare abbastanza bene anche se lo ho scritto un po in fretta
Ciao
#include <stdio.h>




////////////////////////////////////////////////////////////////////////////
///

////////////////////////////////////////////////////////////////////////////
///



 getchar();
 return 0;
}
////////////////////////////////////////////////////////////////////////////
///



     //usati per più di 3 volte consecutivamente


 Dovrebbe funzionare abbastanza bene... l'ho scritto un po in fretta.
ma non era un post vecchio di parecchio tempo fa?
Tommy

 
Si.. almeno un mesetto..
-- 
                Roberto Nunnari -software engineer-
                     mailto:
ro...@nunnisoft.ch
   Residenza Boschetto 12           tel/fax: 
+41-91-6046511
   6935 Bosco Luganese        """    mobile: 
+41-76-3208561
   Switzerland               (o o)
========================oOO==(_)==OOo========================