Newsgroup: it.comp.programmare
Titolo: Problema da risolvere entro fine quadrimestre

Salve a tutti,
    avrei un problemino con un programma da presentare a scuola per la fine
di questo quadrimestre. Questo programma permetterebbe di convertire un
numero complesso scritto in forma algebrica (a+ib) in forma trigonometrica o
polare (ro(cos(teta)+isin(teta)).
Ora siccome il numero inserito dall'utente dovrebbe essere scomposto in due
numeri (appunto "a" e "b"), vorrei sapere come posso fare.
Potrei ricorrere a due semplici "cin" ma vorrei che quando chiedo all'utente
di inserire il numero questo scriva il numero completo a+ib (es.:12+i65) e
che il programma faccia poi tutto da solo. Potreste darmi una mano per
piacere ???
Un esempio potrebbe essere questo:
C\Myprog>Inserire il numero in forma algebrica. 4+i8
"Ora il programma dovrebbe memorizzare la cifra 4 in una variabile e la
cifra +8 in un'altra variabile. Importantissimo è anche il segno delle
variabili"
C\Myprog>Il numero in forma trigonometrica è: rò(cos(teta) + i sin(teta))
"Dove rò e teta sono rispettivamente: rò: sqrt((a*a)+(b*b)) ... quindi:
sqrt((4*4)+(8*8)) nel nostro esempio; cos(teta)=a/rò ; sin(teta)=b/rò;"
Ringrazio anticipatamente chi, gentilmente, deciderà di aiutarmi.
Un saluto a tutti !!! $!M0N? '86

 Un saluto a tutti !!! $!M0N? '86
Con il C++ sono un po' (troppo) arruginito. In C il problema e' banale.
- leggi da stdin con fgets();
- leggi tutto quello che e' diverso da "spazio" (devi fare un while
  controllando isspace());
- converti quanto trovato e lo metti in una variabile intera;
- cerchi il segno della parte immaginaria;
- cerchi la parte immaginaria, elimini la i (o la j), la converti
  e la metti in un'altra variabile;
trovate le due variabili ci fai quello che vuoi.
La cosa complicata e' la gestione delle schifezze immesse dall'utente:
- 1+i e' valido;
- 1 +i e' valido;
- 1 +10i e' valido;
- 1 +i10 e' valido???
- 1 +                 i e' valido;
- 1 +      30           i e' valido???
ecc... ecc... ecc...
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 La cosa complicata e' la gestione delle schifezze immesse dall'utente:
gli serve un vero e proprio parser; imho sto programmetto verrebbe bene in
Java, dove x il parser potrebbe usare la classe StreamTokenizer (mi pare
che si chiami così) che è praticamente un piccolo parser.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 che si chiami così) che è praticamente un piccolo parser.
Andiamo... "un vero e proprio parser" per fare il parsing di a+ib?
Potrei scrivere del codice con meno linee del mio post precedente.
:-)


> Andiamo... "un vero e proprio parser" per fare il parsing di a+ib?
Se č ammesso che "a" e "b" (come la matematica vuole) siano
espressioni qualsiasi, allora quello che ci vuole č un parser (e in
ogni caso, io, per completezza, lo realizzerei cosě).

 ogni caso, io, per completezza, lo realizzerei cosě).
A proposito di parser, il post cade a fagiolo...
Dovrei fare il parsing di un file con la seguente struttura
<header>
key1 = val_1
key2 = val_2
...
key_n = val_n
</header>
<dataSect>
...
</dataSect> [<datSect> ... </dataSect>]
key_1, ... key_n devono essere tutte presenti, ma mi piacerebbe che
potessero comparire in un ordine qualunque.
Qualche idea? Io mi sono bloccato ed e' un po' che giro a vuoto.
Tnx


 Qualche idea? Io mi sono bloccato ed e' un po' che giro a vuoto.
Scusa, uso Bison.


 Qualche idea? Io mi sono bloccato ed e' un po' che giro a vuoto.
Se puoi, ti consiglio caldamente di passare ad XML. Tutti i tuoi 
problemi termineranno all'istante. 
-- 
Luc

> Per una esercitazioncina di programmazione? Mi sembra un po'
troppo...
A me invece sembra sensato aspettarsi che un numero complesso non sia
scritto sempre nella forma (a + ib), ma sia, magari (-ib + a), ecc...
ecc...
D'altro canto, scrivere un parser per la sola espressione "a+ib" è
troppo banale.

 Per una esercitazioncina di programmazione? Mi sembra un po' troppo...
le possibilità sono due:
a) fare un piccolo "parserino" che riconosca l'operatore + e -, le lettere
"a", "i" e "b" e che dia errore negli altri casi.
b) creare una semplice interfaccia per Windows con tre caselle edit dove
inserire i parametri a, b e i in forma numerica.
comunque io ripeto, a sentimento userei il Java, non solo perché c'è la
classe già fatta (se mi ricordo bene il nome), ma perché mi suona bene: in
Internet ho visto un sacco di applet nei siti di fisica e matematica,
alcune molto carine e graficamente curate, anche se tecnicamente scadenti;
molte infatti erano troppo lente, ma d'altra parte queste applet vengono
create da studenti universitari che si preoccupano soprattutto della parte
scientifica, poco di quella tecnica...


 che si chiami così) che è praticamente un piccolo parser.
Esiste anche la versione convertita in c++.
l'avevo trovata qualche tempo fa con google.
--
Ciao!
Skunkguru

Ragazzi vi ringrazio tutti. Sto seguendo tutte le vie che mi avete
consigliato. Vi farò sapere il risultato. Nel frattempo vi "riringrazio
tutti". Simo Fux