Algoritmo - Risoluzione di una epsressione intera
Algoritmo espressione intera?
- Data un espressione composta da addizioni e sottrazioni (in cui si alternano con un numero e un operatore e che termina con il simbolo "=") calcola il risultato.
L'esercizio ci agevola dicendo:
1) E' possibile usare i costrutti iterativi "WHILE" e "DO-WHILE", ma NON "FOR";
3) Dopo aver scritto l'algoritmo, scrivere un analisi sul suo funzionamento.
4) Scriverlo in linguaggio di progetto, oppure C++, NO C o altri linguaggi.
5) Non è possibile usare variabili booleane;
6) Usare il ciclo con operatori di relazione (>,<,=,ecc..) e non con altre tecniche;
7) Non bisogna tener conto delle parentesi;
Io ne avevo pensato uno proprio usando i valori booleani e non usando operatori di relazione, e cioè:
Ma va contro alcuni punti.. mi sapreste aiutare a scriverne un altro, seguendo invece i punti dettati dal libro?
- Data un espressione composta da addizioni e sottrazioni (in cui si alternano con un numero e un operatore e che termina con il simbolo "=") calcola il risultato.
L'esercizio ci agevola dicendo:
1) E' possibile usare i costrutti iterativi "WHILE" e "DO-WHILE", ma NON "FOR";
3) Dopo aver scritto l'algoritmo, scrivere un analisi sul suo funzionamento.
4) Scriverlo in linguaggio di progetto, oppure C++, NO C o altri linguaggi.
5) Non è possibile usare variabili booleane;
6) Usare il ciclo con operatori di relazione (>,<,=,ecc..) e non con altre tecniche;
7) Non bisogna tener conto delle parentesi;
Io ne avevo pensato uno proprio usando i valori booleani e non usando operatori di relazione, e cioè:
#include <iostream> using namespace std; /** * Legge un numero * @param numero variabile in cui salvare il numero letto. * @return true, se la lettura ha avuto successo. false, altrimenti. */ bool leggi_numero (int& numero) { cin >> numero; return cin.good(); } int main() { int somma = 0; int n; cout << "Inserisci l'espressione da valutare, terminata dal simbolo =" << endl << "L'espressione NON deve contenere spazi" << endl; while (leggi_numero(n)) somma += n; cout << "Il risultato e' " << somma << endl; return 0; }
Ma va contro alcuni punti.. mi sapreste aiutare a scriverne un altro, seguendo invece i punti dettati dal libro?
Risposte
L'esercizio ci agevola dicendo:
1) E' possibile usare i costrutti iterativi "WHILE" e "DO-WHILE", ma NON "FOR";
3) Dopo aver scritto l'algoritmo, scrivere un analisi sul suo funzionamento.
4) Scriverlo in linguaggio di progetto, oppure C++, NO C o altri linguaggi.
5) Non è possibile usare variabili booleane;
6) Usare il ciclo con operatori di relazione (>,<,=,ecc..) e non con altre tecniche;
7) Non bisogna tener conto delle parentesi;
Meno male che ti agevola... Mi sembrano un mare di ca**ate senza senso. Ma pazienza.. Il punto 4 immagino voglia semplicemente dire di usare iostream perché poi molte altre funzionalità non possono essere utilizzate. Il codice che hai scritto non fa in ogni caso quello che ti è stato chiesto per cui preoccuparsi di andare contro i punti mi sembra prematuro.
Vediamo quindi che cosa devi fare. L'utente inserisce un'espressione intera tipo:
23 + 5 - 6 + 11 - 4 - 7 =
e il tuo programma deve calcolarne il risultato. Come puoi notare (c'è anche scritto nel testo dell'esercizio) si alternano numeri e operatori. Il tuo ciclo dovrà quindi leggere un numero e un operatore e calcolare l'operazione corrente. Il ciclo dovrà terminare quando l'operatore è uguale a '='. Puoi farlo senza problemi usando sia un ciclo while che do..while e la condizione sarà qualcosa tipo op != '='. Rispetterà quindi le richieste. Immagino che tu possa ignorare gli errori di lettura, almeno alla prima stesura di questo esercizio.