Defected

Sempre I Soliti Algoritmi...

50 messaggi in questa discussione

è questi due totalizzatori come li potrei scrivere?

scrivo tot:=|quantità| e tot:=quantità.

non con lo stesso nome...

totCaricati := 0;

totScaricati := 0;

...

...

...

if qt>=0 then begin

....

totCaricati := totCaricati+qt;

end

else begin

....

totScaricati := totScaricati+qt;

end;

...

...

...

P.S.

La somma a totScaricati ti risulterà negativa... Non so se hai già fatto la funzione abs(). Questa funzione restituisce il valore assoluto di un numero...

prova e facci sapere :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Mi da l'errore nell' ELSE!

Program merci;
var n, i, qt, totCaricati, totScaricati: integer;
cd, art, dt: string[30];
begin
 totCaricati:=0;
 totScaricati:=0;
 writeln('Inserisci il numero di movimenti nel magazzino');
 readln(n);
 for i:= 1 to n do
 begin
writeln('Inserisci il codice dell articolo');
readln(cd);
writeln('Inserisci il nome dell articolo');
readln(art);
writeln('Inserisci la data del movimento');
readln(dt);
writeln('Inserisci la quantità');
readln(qt);
if qt>0 then
writeln('La merce è un carico');
totCaricati:=totCaricati+qt;
else
writeln('La mercè è uno scarico');
totScaricati:=totScaricati+qt;
 end;
 readln;
end.

Va bene così!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Mi da l'errore nell' ELSE!

Program merci;
var n, i, qt, totCaricati, totScaricati: integer;
cd, art, dt: string[30];
begin
 totCaricati:=0;
 totScaricati:=0;
 writeln('Inserisci il numero di movimenti nel magazzino');
 readln(n);
 for i:= 1 to n do
 begin
writeln('Inserisci il codice dell articolo');
readln(cd);
writeln('Inserisci il nome dell articolo');
readln(art);
writeln('Inserisci la data del movimento');
readln(dt);
writeln('Inserisci la quantità');
readln(qt);
if qt>0 then
writeln('La merce è un carico');
totCaricati:=totCaricati+qt;
else
writeln('La mercè è uno scarico');
totScaricati:=totScaricati+qt;
 end;
 readln;
end.

Va bene così!

Ti da errore nell'ELSE perche' l'istruzione prima della parola ELSE deve essere senza ; finale

pero', devi aggiungere dei blocchi.

sia le istruzioni che ci sono nel blocco THEN che quelle che ci sono nel blocco ELSE sono piu' di una (nello specifico sono 2)... Per far capire al compilatore che fanno parte dello stesso blocco devi racchiuderle tra BEGIN ed END

if qt>0 then begin

writeln('La merce è un carico');

totCaricati:=totCaricati+qt;

end

else begin

writeln('La mercè è uno scarico');

totScaricati:=totScaricati+qt;

end;

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ti ringrazio Prozac!^^ Va benissimo!^^ Ringrazio anche Spiug per l'aiuto! Siete degli amici fidatissimi! Per qualsiasi cosa a livello videoludico, io sono qui!xD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Ti ringrazio Prozac!^^ Va benissimo!^^ Ringrazio anche Spiug per l'aiuto! Siete degli amici fidatissimi! Per qualsiasi cosa a livello videoludico, io sono qui!xD

:P:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Scusate ancora: stamattina la prof ha assegnato un esercizio abbastamza facile, che ho svolto, ma mi da alcuni problemi. Eccolo:

Un docente di informatica decide di sottoporre gli studenti a una prova test- Scrivere un algoritmo che visualizzi il voto riportato da ogni singolo studente, tendno conto che il voto scaturisc dalla seguente formula:

vt:=ei+(2*ec)-1:2s-1:4n dove ei: numero risp. esatte ma incomplete

ec: numero risposte esatte complete; S: numero risposte sbagliate; n: numero risposte non date.

Visualizzare la media della classe e il nome di ogni alunno se il voto è superiore a 6

eccolo:

Program test;
var i, np, ei, ec, s, n: integer;
st: string[30];
vt, vtm, tot: real;
begin
tot:=0;
writeln('Inserisci il numero di studenti che hanno effettuato il test');
readln(np);
For i:= 1 to np do
 begin
  writeln('Inserisci il nome dello studente');
  readln(st);
  writeln('Inserisci il numero di risposte esatee ma incomplete');
  readln(ei);
  writeln('Inserisci il numero di risposte esatte ma complete');
  readln(ec);
  writeln('Inserisci il numero di risposte sbagliate');
  readln(s);
  writeln('Inserisci il numero di risposte non date');
  readln(n);
  vt:= ei+(2*ec)-1/2*s-1/4*n;
  writeln('Il voto di: ',st,' e: ',vt:10:2);
  readln;
  if vt> 6 then
  begin
writeln('L alunno: ',st,' ha ottenuto un voto superiore a 6');
  end;
tot:=tot+vt;
 end;
 vtm:=tot/n;
 writeln('Il voto medio della classe e: ',vtm:10:2);
 readln;
end.

Però nella parte dell if, quando lo mando in esecuzione, esce sempre la stringa che dice "l'alunno ha ottenuto come un voto superiore a 6', anche se il risultato è iù basso, come mai? mi aiutate per paicere?^^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho provato il tuo programma e funziona... Infatti mi sembra scritto correttamente. Sinceramente non capisco quella formula... che razza di voti dia... Funziona solamente con 10 domande come somma, giusto?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Inviato (modificato)

Mi aiutereste in questo algoitmo per piacere? (Naturalmente in Pacal!xD)

"Scrivere un algoritmo che calcoli la potenza di un numero intero elevato a una base intera"

Vi dico subito che gli Array ancora non li abbiamo introdotti.

Grazie!^^

EDIT: La potenza è di un numero intero

Modificato da Def

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Inviato (modificato)

Ho iniziato così. Ditemi se va bene e come si continua, grazie!^^

"Scrivere un algoritmo che calcoli la potenza di un numero intero elevato a una base intera"

Program potenza;
var p, p1, bi: integer;
begin
 writeln('Inserisci il numero intero');
 readln(p1);
 writlen('Inserisci la base inter');
 readln(bi);
...

GRAZIE INFINITE!^^

Modificato da Def

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Partiamo dal concetto matematico di elevamento a potenza.

per fare ad esempio 3^5 cosa faresti manualmente (senza calcolatrice)?

e per fare 3^6?

e per fare 4^8?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

3^5=3*3*3*3*3

3^6=3*3*3*3*3*3

4^8=4*4*4*4*4*4*4*4

Giusto?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Qualcuno mi risponda, per piacere!^^ Dovrei portarlo per domani l'esercizio!^^ Grazie!^^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Forse è così?

Program potenza;
var p, a, b, contatore : integer;
begin
 writeln('Inserisci la base a');
 readln(a);
 writlen('Inserisci l esponente b');
 readln(b);

 p := 1;

 for contatore :=1 to b do
 begin
p := p * a;
 end
writlen(p);
end

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Forse è così?

Program potenza;
var p, a, b, contatore : integer;
begin
 writeln('Inserisci la base a');
 readln(a);
 writlen('Inserisci l esponente b');
 readln(b);

 p := 1;

 for contatore :=1 to b do
 begin
p := p * a;
 end
writlen(p);
end

Scusa se ti rispondo solo ora ma ero via...

Esatto... hai scritto l'algoritmo corretto :P Alla fine s'è solo trattato di mettere in "pascal" quello che eri riuscito a fare in "matematichese" ;-)

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao a tutti, è la prima volta che utilizzo un forum. Ho un grosso bisogno di aiuto il 20 devo consegnare un progetto in c e non so metterci mano. Ho visto che qui c'e' gente in gamba capace, forse, di darmi una mano.

progetto_labAlgoritmi.pdf

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

SCUSATE HO RIS ALLA DOM DI PRIMA perché NN HO VISTO che AVEVATE RIS.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

CMQ POSTO LO STESSO

function potenza(b,e:integer):integer;

Begin

if e=0 then potenza:=1

else potenza:=potenza(b,e-1)*b;

end;

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
CMQ POSTO LO STESSO

Sarà comunque d'aiuto per chi avrà lo stesso problema e leggerà questa discussione :up1:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Piccola digressione. In programmazione, quando possibile, evitare di utilizzare la ricorsione. Preferire sempre cicli a ricorsioni. Questo perchè attraverso l'utilizzo di cicli, si velocizza l'esecuzione del programma rispetto alle chiamate ricorsive (che obbligano il sistema operativo ad un sorplus di operazioni :P

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

CE CHI DICE IL CONTRARIO

NN DOVREBBE VELOCIZZARE

CHIEDO!!!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non velocizza perché ogni volta che si richiama ricorsivamente una funzione si va a creare il contesto per quella funzione: devo salvare lo stato delle variabili nello stack e fare un salto di programma nuovamente alla funzione. Questo, oltre ad inserire complessità nella gestione del flusso del programma, mi fa aumentare anche il consumo di ram che, se non si sta attenti, può far crashare l'applicazione stessa.

Io, di solito, utilizzo la ricorsione solo quando trasformarla in cicli iterativi diventa troppo complesso ed intricato...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io, di solito, utilizzo la ricorsione solo quando trasformarla in cicli iterativi diventa troppo complesso ed intricato...

O quando proprio NON si può (vedi il caso dei numeri primi)...ma questi sono casi speciali!

Non sempre la ricorsione è "migliore" (in termini di velocità...ma non sicuramente di comprensibilità) dell'utilizzo di semplici cicli, anzi spesso è vero il contrario, proprio a causa del grande utilizzo (e a mio giudizio uno spreco) delle risorse. <_<

Anch'io preferisco (quando non ne pregiudica il funzionamento) utilizzare semplici cicli. :P:)

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