0
1

inserendo 10 prezzi, il prezzo che supera i 50 euro avra' uno sconto del 20% pertanto , stampa a schermo lo scontrino finale [svolgi l'algoritmo in maniera assoluta nel senso che senza verificare se i prezzi sono 10 , bisogna inserirne dieci e basta]
ragazzi io la codifica l'ho fatta cosi ma non capisco dove sta l'errore.

Program   
DIECIprodotti_sconto20_oltre50euro;  
Var SOM,IMP,SCONTO,SCONTRINO:real;   
Var CONT:real;    
BEGIN    
SOM:=0;   
CONT:=0;    
REPEAT BEGIN
         WRITELN('INSERISCI IL PREZZO DEL PRODOTTO');

         READLN(IMP);
         IF IMP<=0 THEN WRITELN('IMPORTO NULLO')
                   ELSE BEGIN
                        CONT:=CONT+1;
                        SOM:=SOM+IMP;
                        IF IMP>50 THEN BEGIN
                                       SCONTO:=IMP*0.2;
                                       SCONTRINO:=SOM-SCONTO;
                                       END
                                  ELSE SCONTRINO:=SOM;
                        END
         END    UNTIL CONT=10;   
WRITELN('TOTALE DA PAGARE ,
SCONTRINO');   
WRITELN('EURO',SCONTRINO:9:2);   
READLN();    
END.

chiesto 27 Mar '15, 18:42

danielepascucci1998's gravatar image

danielepascu...
15112

modificato 28 Mar '15, 09:50

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161

C'era un END in più credo (togliendolo a me gira) ma che problema ti da? Comunque continui a sommare al totale lo sconto del 20% del nuovo prezzo che supera i 50 e mi pare un pò in progressivo. Togli la cifra da scontare al totale scontrino non al singolo pezzo per poi aggiungerne al totale scontrino. Ma sicuro mi sbaglio, non uso Pascal da anni e anni e anni...

(27 Mar '15, 18:52) loucho loucho's gravatar image

@danielepascucci1998 non siamo sordi, per favore modifica il post e togli Bloc Maiusc quando scrivi.
E la prossima volta utilizza la formattazione per il codice quando scrivi codice, che sennò è illeggibile.

Per ora chiudo la domanda, quando la modificherai verrà riaperta.

(27 Mar '15, 19:31) dadexix86 ♦♦ dadexix86's gravatar image

@dadexix86 Scusate non era mio intento recarvi disturbo è solo che sul compilatore l'ho scritto in maiuscolo dato che le variabili vanno scritte in maiuscolo . Oltretutto ci sono modi e modi per dire le cose .

(27 Mar '15, 19:36) danielepascu... danielepascucci1998's gravatar image

Non parlo del codice, quello è Pascal e quindi va maiuscolo. Parlo del testo. Esattamente, ci sono modi e modi di dire le cose, ed urlare non è certamente il modo migliore.

(27 Mar '15, 19:40) dadexix86 ♦♦ dadexix86's gravatar image

@dadexix86 ma chi vuole urlare! lo avevo solo lasciato attivo ! illazioni prive di fondamento !

(27 Mar '15, 19:42) danielepascu... danielepascucci1998's gravatar image

Tornando in topic, esattamente qual è l'errore che ricevi?

(28 Mar '15, 09:57) dadexix86 ♦♦ dadexix86's gravatar image

E comunque non è assolutamente vero che il Pascal richieda il maiuscolo.

(28 Mar '15, 17:28) enzotib ♦♦ enzotib's gravatar image

@dadexix86 nessun errore ! ma quando lo eseguo non mi calcola lo sconto , me lo calcola solo se l'importo superiore ai 50 si trova in ultima posizione . @enzotib in laboratorio a scuola dicono cosi' , cmq non voglio fa un dibattito vorrei solo un aiuto !

(28 Mar '15, 18:47) danielepascu... danielepascucci1998's gravatar image

@enzotib mi hanno contato balle per 3 anni a scuola allora :O

(29 Mar '15, 11:50) dadexix86 ♦♦ dadexix86's gravatar image

È un palese caso di overengineering :D Hai usato troppe variabili e ti sei incartato da solo :D

In questa riga:

SCONTRINO:=SOM-SCONTO;

stai assegnando il risultato di [SOM-SCONTO] allo [SCONTRINO] ma non stai sottraendo lo [SCONTO] dalla somma totale [SOM]. Per tenere traccia del totale più gli sconti devi usare un'assegnazione con decremento sulla variabile [SOM] stessa:

SOM:=SOM-SCONTO;

e devi mettere la riga:

ELSE SCONTRINO:=SOM;

fuori da quel

IF IMP>50 THEN BEGIN

togliendo ovviamente l'ELSE davanti. Non so se per scopi didattici ti obbligano a usare tutte quelle variabili, ma il problema è risolvibile usandone 3 (IMP, CONT e SCONTRINO). In casi semplici come questo, dove non hai la necessità di richiamare procedure o passare parametri in giro, dovresti usare le variabili strettamente necessarie al problema. Solo nei casi in cui prevedi dei possibili ampliamenti al programma allora dovresti scomporre i passaggi usando più variabili del necessario.

La versione minima funzionante:

Program RegistratoreDiCassa;
var
   SCONTRINO,IMPORTO:real;
   CONTATORE:integer;
begin
   CONTATORE:=0;
   SCONTRINO:=0;
   repeat begin
      writeln('INSERISCI IL PREZZO DEL PRODOTTO');
      readln(IMPORTO);
      if IMPORTO <= 0 then writeln('IMPORTO NULLO')
      else begin
         CONTATORE:=CONTATORE+1;
         SCONTRINO:=SCONTRINO+IMPORTO;
         if IMPORTO > 50 then SCONTRINO:=SCONTRINO-IMPORTO*0.2;
      end;
   until CONTATORE = 10;   
   writeln('TOTALE DA PAGARE , SCONTRINO');   
   writeln('EURO',SCONTRINO:9:2);   
   readln();    
end.

Se invece per esigenze didattiche devi usare tutte quelle variabili:

Program RegistratoreDiCassa;
var 
   SCONTRINO,IMPORTO:real;
   CONTATORE:integer;
const
   LIMITEPRODOTTI:=10;
   SCONTO:=0.2;
   SOGLIASCONTO:=50;
begin
   CONTATORE:=0;
   SCONTRINO:=0;
   repeat begin
      writeln('INSERISCI IL PREZZO DEL PRODOTTO');
      readln(IMPORTO);
      if IMPORTO <= 0 then writeln('IMPORTO NULLO')
      else begin
         CONTATORE:=CONTATORE+1;
         SCONTRINO:=SCONTRINO+IMPORTO;
         if IMPORTO > SOGLIASCONTO then SCONTRINO:=SCONTRINO-IMPORTO*SCONTO;
      end;
   until CONTATORE=LIMITEPRODOTTI;   
   writeln('TOTALE DA PAGARE , SCONTRINO');   
   writeln('EURO',SCONTRINO:9:2);   
   readln();    
end.

Scusami eventuali errori di sintassi/formattazione, l'ultima volta che ho scritto in Pascal era l'87 :)

coll. permanente

ha risposto 29 Mar '15, 09:38

GioeleZ's gravatar image

GioeleZ
14535

modificato 29 Mar '15, 09:41

@GioeleZ grazie!!!

(29 Mar '15, 14:32) danielepascu... danielepascucci1998's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×103
×1

domanda posta: 27 Mar '15, 18:42

domanda visualizzata: 919 volte

ultimo aggiornamento: 29 Mar '15, 14:32

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.