Accedi per seguire   
Seguaci 0
Defected

Problema Con Un Algoritmo

17 messaggi in questa discussione

Mi scuso se ho sbagliato sezione ma il mio è un problema alquanto urgente. Ora vi spiego: io sono uno studente ancora alle superiori, in un istituto professionale aziendale e sono al quarto anno. Aui da noi abbiamo una bella materia di nome Informatica che, ultimamente, è alquanto difficile. In poche parole, la nuova prof ha assegnato un algoritmo che bisogna, oltre a scriverlo nel linguaggio di programmazione, dobbiamo anche scriverlo in Dev Pascal. Ecco l'esercizio:

Un gestore telefonico applica le seguenti tariffe:

0,30 € al minuto se il numero di minuti complessivo di telefonate effettuate è inferiore a 100 minuti;

0,20 € al minuto in caso contrario (superiori a 100).

Calcolare il costo delle telefonate effettuate dallputente, noto il numero di conversazioni effettuate!

Ripeto: Dev Pascale e algoritmo!

Ringazio in anticipo coloro che sono così gentili nel farmelo, perchè propio domani dovrei consegnarlo!^^ GRAZIE MILLE ANCORA! :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Mi scuso se ho sbagliato sezione ma il mio è un problema alquanto urgente. Ora vi spiego: io sono uno studente ancora alle superiori, in un istituto professionale aziendale e sono al quarto anno. Aui da noi abbiamo una bella materia di nome Informatica che, ultimamente, è alquanto difficile. In poche parole, la nuova prof ha assegnato un algoritmo che bisogna, oltre a scriverlo nel linguaggio di programmazione, dobbiamo anche scriverlo in Dev Pascal. Ecco l'esercizio:

Un gestore telefonico applica le seguenti tariffe:

0,30 € al minuto se il numero di minuti complessivo di telefonate effettuate è inferiore a 100 minuti;

0,20 € al minuto in caso contrario (superiori a 100).

Calcolare il costo delle telefonate effettuate dallputente, noto il numero di conversazioni effettuate!

Ripeto: Dev Pascale e algoritmo!

Ringazio in anticipo coloro che sono così gentili nel farmelo, perchè propio domani dovrei consegnarlo!^^ GRAZIE MILLE ANCORA! :)

Da quello che ho capito hai come dati in ingresso (per ogni utente):

- Numero di telefonate

- Durata di ogni telefonata in minuti

Se cosi' fosse...

L'algoritmo somma gli elementi di un vettore (che contiene i minuti di conversazione di ogni telefonata).

Se questa somma supera i 100 minuti, si da come risultato 0,2*SommaMinuti

Altrimenti si da come risultato 0,3*SommaMinuti.

Esempio:

L'utente esegue 7 telefonate:

1) 5 minuti

2) 15 minuti

3) 2 minuti

4) 1 minuto

5) 22 minuti

6) 13 minuti

7) 1 minuto

avrò, quindi, un vettore con queste telefonate. Ne eseguo la somma degli elementi: 59 minuti

essendo inferiore a 100 minuti, moltiplico per 0,3: 17,70 euro.

Se riesci a mettermi l'algoritmo così spiegato in maniera più "informatichese" poi vediamo di tradurlo in Pascal assieme ;-)

:P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Da quello che ho capito hai come dati in ingresso (per ogni utente):

- Numero di telefonate

- Durata di ogni telefonata in minuti

Se cosi' fosse...

L'algoritmo somma gli elementi di un vettore (che contiene i minuti di conversazione di ogni telefonata).

Se questa somma supera i 100 minuti, si da come risultato 0,2*SommaMinuti

Altrimenti si da come risultato 0,3*SommaMinuti.

Esempio:

L'utente esegue 7 telefonate:

1) 5 minuti

2) 15 minuti

3) 2 minuti

4) 1 minuto

5) 22 minuti

6) 13 minuti

7) 1 minuto

avrò, quindi, un vettore con queste telefonate. Ne eseguo la somma degli elementi: 59 minuti

essendo inferiore a 100 minuti, moltiplico per 0,3: 17,70 euro.

Se riesci a mettermi l'algoritmo così spiegato in maniera più "informatichese" poi vediamo di tradurlo in Pascal assieme ;-)

:)

Ci vorrei provare ma non so se riesco anche perchè informatica non è il mio forte!

ALGORTIMO TELEFONATE

INIZIO

SCRIVI("DAMMI IL NUMERO DI TELEFONATE")

LEGGI(NUMEROTELEFONATE)

SCRIVI("DAMMI LA DURATA DI OGNI TELEFONATA")

LEGGI(DURATATELEFONATA)

poi?xD Qui mi blocco (non so neanche se ho fatto bene!xD)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ci vorrei provare ma non so se riesco anche perchè informatica non è il mio forte!

ALGORTIMO TELEFONATE

INIZIO

SCRIVI("DAMMI IL NUMERO DI TELEFONATE")

LEGGI(NUMEROTELEFONATE)

SCRIVI("DAMMI LA DURATA DI OGNI TELEFONATA")

LEGGI(DURATATELEFONATA)

poi?xD Qui mi blocco (non so neanche se ho fatto bene!xD)

Diciamo che il trucco sta proprio nell'utilizzo di un vettore.

Un vettore è una variabile di tipo speciale. In pratica è una collezione di valori dello stesso tipo accessibili attraverso un'etichetta. E' come avere una cassettiera i cui cassetti sono etichettati, ad esempio, con dei numeri.

Anche se un vettore ci serve solo se non dobbiamo chiedere tutte le durate, ma le abbiamo già disponibili da qualche parte :)

Se, invece, dobbiamo chiedere tutte le durate, diventa ancora più semplice (e non utilizziamo nemmeno il vettore)

Il tuo algoritmo va bene fino a quando SCRIVI("DAMMI LA DURATA DI OGNI TELEFONATA").

Invece che una singola durata, devi fare in modo di ottenere le durate delle varie telefonate.

Potremmo modificare il tuo algoritmo così:

INIZIO
 SCRIVI("Dimmi il numero di telefonate eseguite: ")
 LEGGI(numeroTelefonate)
 Somma := 0
 INIZIO CICLO PER indice CHE VA DA 1 A numeroTelefonate
SCRIVI("Durata della "+indice+"a) telefonata: ")
LEGGI(durataTelefonata)
Somma := Somma + durataTelefonata
 FINE CICLO
 SE Somma > 100 ALLORA Risultato := Somma*0,2
 ALTRIMENTI Risultato := Somma*0,3
 SCRIVI(Risultato)
FINE

Diciamo che da questo "algoritmo" dovrebbe essere abbastanza semplice passare al Pascal :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Grazie mille ma un'ultima cosa....Non è che portrste farlo anche in Dev Pascal? :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se il pascal è un problema non fa niente ma almno mi dite quali sono i dati di input e di output?^^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

La traduzione dello pseudolinguaggio postato da Prozac è il presente....

Forse c'è qualche errore (non faccio Pascal dal terzo superiore...)

PROGRAM Telefonate

VAR numeroTelefonate,durataTelefonata,Somma:Integer;

risultato:Real;

BEGIN

WRITELN("Dimmi il numero di telefonate eseguite: ");

READLN(numeroTelefonate);

Somma := 0;

FOR i:= 1 TO numeroTelefonate DO

BEGIN

WRITELN("Durata della ", i ,"a) telefonata: ");

READLN(durataTelefonata);

Somma := Somma + durataTelefonata

END;

IF Somma > 100 THEN

Risultato := Somma*0,2

ELSE

Risultato := Somma*0,3;

WRITELN(Risultato);

END.

Provalo e dimmi se va bene....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se il pascal è un problema non fa niente ma almno mi dite quali sono i dati di input e di output?^^

Io non utilizzo Dev Pascal :P

Però ho Delphi... Non penso che il Pascal di Delphi sia tanto differente da quello di Dev Pascal...

Questa è la traduzione ;-)

Program Telefonate;

var
 indice, somma, durataTelefonata, numeroTelefonate: integer;
 risultato: double;

begin
 write('Dammi il numero di telefonate: ');
 readln(numeroTelefonate);
 somma := 0;
 for indice:=1 to numeroTelefonate do
 begin
	 write('Durata della '+IntToStr(indice)+'a) telefonata: ');
	 readln(durataTelefonata);
	 somma := somma+durataTelefonata;
 end;
 if somma>100 then
 begin
	risultato := somma*0.2;
 end
 else
 begin
	 risultato := somma*0.3;
 end;
 writeln('Hai speso: '+FloatToStr(risultato)+' Euro');
end.

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io non utilizzo Dev Pascal :P

Però ho Delphi... Non penso che il Pascal di Delphi sia tanto differente da quello di Dev Pascal...

Questa è la traduzione ;-)

Program Telefonate;

var
 indice, somma, durataTelefonata, numeroTelefonate: integer;
 risultato: double;

begin
 write('Dammi il numero di telefonate: ');
 readln(numeroTelefonate);
 somma := 0;
 for indice:=1 to numeroTelefonate do
 begin
	 write('Durata della '+IntToStr(indice)+'a) telefonata: ');
	 readln(durataTelefonata);
	 somma := somma+durataTelefonata;
 end;
 if somma>100 then
 begin
	risultato := somma*0.2;
 end
 else
 begin
	 risultato := somma*0.3;
 end;
 writeln('Hai speso: '+FloatToStr(risultato)+' Euro');
end.

:)

Se Dev-Pascal non lo compila probabilmente è perchè manca il richiamo alla Unit che contiene le funzioni IntToStr e FloatToStr:

Aggiungi

uses
 SysUtils;

sopra alla dichiarazione delle variabili ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Questo è scritto con Dev Pascal... :)

program Esempio1;

uses
 SysUtils;

var
  somma,numerotelefonate,durataTelefonata,indice:integer;
  risultato:double;
begin
 writeln('Dammi il numero di telefonate');
 readln(numeroTelefonate);
 somma := 0;
 for indice:=1 to numeroTelefonate do
 begin
	 writeln('Durata della '+IntToStr(indice)+'a) telefonata: ');
	 readln(durataTelefonata);
	 somma := somma+durataTelefonata;
 end;
 if somma>100 then
	risultato := somma*0.2
 else
	 risultato := somma*0.3;
 writeln(risultato);
end.

è identico al Delphi...

@Lillo85:

Potrebbe darti qualche problema qui...

	WRITELN("Durata della ", i ,"a) telefonata: ");

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Grazie un casino! Mi avete salvato da una brutta situazione!^^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Mi dite quali sono gli input e gli output cos' non rompo più!xD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non so se ho capito bene:

INPUT: numeroTelefonate, DurataTelefonate

OUTPUT: risultato

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ok grazie mille ancora a tutti per il contributo...Mi sa mi sa che domani un bel voto ed un copia-copia generale nella mia classe non sfugge!xD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Quando faccio il diagramma di flusso, la formula INIZIO CICLO PER indice CHE VA DA 1 A numeroTelefonate in quale figura geometrica va collocata?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

non faccio programmazione e struttura dalle superiori...praticamente 4 anni, ma dovrebbe essere un parallelogramma...le funzioni si dovrebbero inserire li mentre gli interfacciamenti nei rettangoli....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Essendo un programmatore molto discolo, non ho quasi mai fatto i diagrammi di flusso...ma mi pare che il rombo si usi per rappresentare la verifica di una condizione...quindi IF

Per un ciclo FOR si usa un rettangolo...

Il parallelogramma rappresenta un blocco di lettura/scrittura

Ecco qui tutte le delucidazioni del caso:

http://it.wikipedia.org/wiki/Diagramma_a_blocchi

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0