Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda Albesa81 » 25/01/2019, 15:51

Che cosa ti restituiscono stream tipo questi?

\( 23489 +@ 5 \)
\( 11 +- 123785134.26 \)

(Nota che il primo non è un'espressione aritmetica, il secondo sì).
Albesa81
Junior Member
Junior Member
 
Messaggio: 135 di 341
Iscritto il: 21/12/2010, 12:02

Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda SirDanielFortesque » 25/01/2019, 16:02

Risultati assurdi.

il primo fa 46978.00000
il secondo fa -123785134.26

Perché? Ci devo pensare.
Conoscete la storia del Conte Giacomo Ceconi?
Avatar utente
SirDanielFortesque
Advanced Member
Advanced Member
 
Messaggio: 529 di 2184
Iscritto il: 27/12/2016, 08:35
Località: Milano.

Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda Super Squirrel » 25/01/2019, 16:10

@Albesa81

Ovviamente si presuppone che lo stream rappresenti un'espressione "valida".

Il secondo stream ovviamente viene interpretato come 11+(−123785134.26), quindi non vedo quale sia il problema.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 340 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda Albesa81 » 25/01/2019, 16:36

Super Squirrel ha scritto:@Albesa81
Ovviamente si presuppone che lo stream rappresenti un'espressione "valida".

Assunzione quantomeno grossolana ma forse accettabile per un corso di informatica di base (spero non per un corso di laurea scientifico).
Super Squirrel ha scritto:Il secondo stream ovviamente viene interpretato come 11+(−123785134.26), quindi non vedo quale sia il problema.

Allora ci dev'essere un problema sulla mia macchina, che in output dà \( -123785128.000000 \).
Albesa81
Junior Member
Junior Member
 
Messaggio: 136 di 341
Iscritto il: 21/12/2010, 12:02

Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda vict85 » 25/01/2019, 18:52

Ho l'impressione che tu stia studiando da un libro un po' antiquato. C'è una eccessiva attenzione all'inserimento dei valori rispetto al risolvere materialmente il problema. Insomma imparare ad usare l'IO può essere importante, ma imparare a pensare nel modo giusto lo è di più.

Personalmente trovo che avrebbe più senso provare a risolvere lo stesso problema ma supponendo che la equazione sia passata alla funzione che devi implementare come stringa:
Codice:
float valuta_equazione( char const equazione[] );
In questo modo ti concentreresti maggiormente sul problema e non sull'uso di getchar e altre funzioni della libreria standard. Anche perché i computer hanno a disposizione una quantità di memoria abbastanza grande e ha più senso salvarti direttamente una intera riga (per esempio con fgets).

Inoltre ti conviene usare la libreria ctype.h.
vict85
Moderatore
Moderatore
 
Messaggio: 9474 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [C] Esercizio su diverse tipologie di dati.

Messaggioda SirDanielFortesque » 25/01/2019, 20:48

@AlbeSan81
Albesa81 ha scritto:$23489+@5$


Per quanto riguarda questo dovrei mettere un controllo di tutti i caratteri che stampa un messaggio di errore quanto viene inserito un carattere non valido (che non sia una cifra, un '.', un '/', un '*' un '-', un '+' o un '\n').

Albesa81 ha scritto:$11"+−"123785134.26$

Per quanto riguarda quest'altro bisogna dire che l'esercizio prevedeva che non ci fossero precedenze tra le operazioni, come avevo specificato (in quanto l'esercizio si trova in uno dei primi capitoli del libro). Pertanto non ci potevano stare parentesi in mezzo (ché appunto introdurrebbero una precedenza) e poi per le regole dell'aritmetica mettere un + e un - attaccati non ha molto senso su carta. Anche se gli elaboratori prendono +- come fosse un -. Pertanto anche in questo caso metterei un controllo che fa si che non appena vengono rilavati due operatori uno vicino all'altro mi stampa un messaggio di errore, vista la natura dell'esercizio.

Testo nascosto, perché contrassegnato dall'autore come fuori tema. Fai click in quest'area per vederlo.
Albesa81 ha scritto:spero non per un corso di laurea scientifico


Ebbene si, mi hai beccato. E' per un corso di laurea in ingegneria meccanica. Ho trascurato la materia fin dall'inizio in favore delle altre materie e adesso me ne pento dato che ho come prospettiva il dovermi trascinare dietro questo esame ancora per un po'. Come minimo fino agli appelli estivi.


@Vict85
vict85 ha scritto:In questo modo ti concentreresti maggiormente sul problema e non sull'uso di getchar e altre funzioni della libreria standard. Anche perché i computer hanno a disposizione una quantità di memoria abbastanza grande e ha più senso salvarti direttamente una intera riga (per esempio con fgets).Inoltre ti conviene usare la libreria ctype.h.


Per quanto scritto in questo messaggio penso a questo punto tu abbia capito che io sono ancora al livello 0 dell'informatica (il massimo utilizzo che facevo di un computer fino a ieri era il pacchetto office e i programmi di disegno CAD).

Il libro consigliato per il corso sarebbe "informatica arte e mestiere" di Mandrioli, Ceri, Sbattella, Cremonesi, Cugola. Ma per quanto in linea di massima possa anche risultare di piacevole lettura di fatto l'ho trovato poco adatto a seguire il corso "informatica di base" che si proponeva in soli 6 mesi di insegnarci a usare il C $&&$ Matlab. Quindi mi sono procurato un altro libro che avesse pure degli esercizi. Il risultato è stato che chi aveva già studiato un linguaggio di programmazione alle superiori si è trovato bene, e gli altri (tra cui anch'io) hanno fatto molta fatica.
Conoscete la storia del Conte Giacomo Ceconi?
Avatar utente
SirDanielFortesque
Advanced Member
Advanced Member
 
Messaggio: 538 di 2184
Iscritto il: 27/12/2016, 08:35
Località: Milano.

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite