Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[!!!] mi serve un aiuto!!![c/c++]

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[!!!] mi serve un aiuto!!![c/c++]

Messaggioda Codewriter90x » sab lug 07, 2007 6:05 pm

salve a tutti!!!

io ero dell idea di creare un programma che permetesse di sviluppare espressioni con frazioni!!
sto esagerando??
le espressioni nn conterranno parentesi!!
o se si puo svilupparle del tutto nn mi dispiacerebbe!!
qualcuno mi da una idea di pseudocodice da cui partire???
please [cry] [cry] [8)]
Code90x
Avatar utente
Codewriter90x
Neo Iscritto
Neo Iscritto
 
Messaggi: 18
Iscritto il: sab apr 14, 2007 10:03 pm
Località: Romano D'ezz.

Re: [!!!] mi serve un aiuto!!![c/c++]

Messaggioda M@ttia » sab lug 07, 2007 6:44 pm

Codewriter90x ha scritto:sviluppare espressioni con frazioni
Cosa intendi esattamente con questa frase? mettere assieme frazioni?
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [!!!] mi serve un aiuto!!![c/c++]

Messaggioda Codewriter90x » sab lug 07, 2007 8:24 pm

M@ttia ha scritto:
Codewriter90x ha scritto:sviluppare espressioni con frazioni
Cosa intendi esattamente con questa frase? mettere assieme frazioni?


intendo tipo:

(5/5+1/2-3/6)

riuscire creare un progr che le risolve!!!
nn so se mi sono spiegato?!?!
Code90x
Avatar utente
Codewriter90x
Neo Iscritto
Neo Iscritto
 
Messaggi: 18
Iscritto il: sab apr 14, 2007 10:03 pm
Località: Romano D'ezz.


Messaggioda M@ttia » sab lug 07, 2007 9:20 pm

Svolgere il calcolo mettendo tutto in una frazione sola appunto...

Io ne avevo scritto uno in C++ un po' più complesso, che trattava in generale equazioni algebriche, derivate ed integrali, ecc. (tipo "maple" a linea di comando per chi conosce, ma in versione "semplice")...

Per il tuo ti posso consigliare di

  • Creare una classe chiamata, ad es., rational
  • Ogni elemento di questa classe avrà due attributi (mi sfugge il nome giusto ora), diciamo int numeratore, int denominatore
  • Overloadare gli operatori (+ - * /) di C++ "istruendoli" sul come comportarsi con questo nuovo tipo "rational"...


Esempio concreto:

Codice: Seleziona tutto
#include <iostream>
#include <cassert>

namespace math {

  class Rational {
  public:
    Rational();

    Rational(int n, int d);
    // PRE: d != 0

    Rational(int n);

    int n();

    int d();
 
    Rational& operator*= (Rational s);

  private:
    int n_;  // numerator
    int d_;  // denominator; invariant: d_ != 0
  };

  Rational::Rational()
    : n_(0), d_(1)
  {}

  Rational::Rational(int n, int d)
    : n_(n), d_(d)
  {
    assert (d_ != 0);
  }

  Rational::Rational(int n)
    : n_(n), d_(1)
  {}

  int Rational::n() { return n_; }
  int Rational::d() { return d_; }


  Rational& Rational::operator*= (Rational s)
  {
    n_ *= s.n_;   
    d_ *= s.d_;
    return *this; 
  }

  Rational operator*(Rational r, Rational s)
  {
    Rational t = r;
    return t *= s;
  }

  bool operator==(Rational r, Rational s)
  {
    return r.n() * s.d() == r.d() * s.n();
  }

  std::ostream& operator<<(std::ostream& o, Rational r)
  {
    return o << r.n() << "/" << r.d();
  }
}

(num e denom. li ho fatti privati, solo per evitare che per sbaglio si modifichi denominatore=0 da una qualche parte...).

Ti lascio implementare il +, -, /, +=, -=, /=, ...
[inoltre puoi implementare anche una funzione simplify() che divide num. e denom. per il massimo comun divisore, così da ridurre la frazione ai minimi termini...)

Poi questo esempio lo usi così:

Codice: Seleziona tutto
int main()
{
  math::Rational r(3,4);
  math::Rational s(1,2);
  math::Rational t = r * s;

  assert (t == math::Rational (3,8));
  std::cout << t << "\n";

  return 0;
}
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Codewriter90x » dom lug 08, 2007 12:45 am

picolissimo problema nn conosco le classi perché nn le hanno ancora spiegate a scuola......
e possibile farlo senza classi
o magari qualcosa che spieghi da dio le classi!!!
nn so nemmeno perché si mettono i ""::""
Code90x
Avatar utente
Codewriter90x
Neo Iscritto
Neo Iscritto
 
Messaggi: 18
Iscritto il: sab apr 14, 2007 10:03 pm
Località: Romano D'ezz.

Messaggioda Xerex » dom lug 08, 2007 2:19 pm

Se non è un problema la bruttezza e l'inefficacia dell'inserimento dati, fai 2 cicli innestati che chiedono prima numeratore e poi denominatore, per n volte, magari mettendo il tutto in un array...Per le operazioni, usane un altro e poi risolvi a[1]/a[2]b[1]a[3]/a[4] eccecc
Fare la grigliata, è sempre una figata!
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda M@ttia » dom lug 08, 2007 3:36 pm

Codewriter90x ha scritto:picolissimo problema nn conosco le classi
Azz', è il blocco forte del C++, non puoi non usarle, DEVI impararle, lo dico per il tuo bene![;)]
Codewriter90x ha scritto:nn so nemmeno perché si mettono i ""::""
Servono a dirgli di cercare quello che viene dopo nel namespace math che abbiamo definito alla prima riga... Lascia via il "namespace math { e il } alla fine, e poi puoi sempre tralasciare il math:: (era solo per farlo un po' più "professional"). Quelli invece Rational::rational, ecc. fanno "parte" dela sintassi della classe (diciamo così va).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Codewriter90x » dom lug 08, 2007 8:12 pm

ma avete tempo qualcuno x spiegamrmi le classi perché mi hanno detto in tanti che sono comode!!ma nn so!!
qualcuno ha tempo di spiegarmi le classi ??o dispense!!!grazie in anticipo!!
Code90x
Avatar utente
Codewriter90x
Neo Iscritto
Neo Iscritto
 
Messaggi: 18
Iscritto il: sab apr 14, 2007 10:03 pm
Località: Romano D'ezz.

Messaggioda mortal_kombat » lun ago 27, 2007 11:36 am

Codewriter90x ha scritto:o dispense!!!


Prova questa:
http://dit.unitn.it/~dandrea/progogg/lu ... rcizi3.pdf
Più facile di così si muore [std]
Avatar utente
mortal_kombat
Senior Member
Senior Member
 
Messaggi: 458
Iscritto il: dom giu 24, 2007 5:36 pm
Località: Pisa


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising