modificatoOriginariamente inviato da pallinopinco
Potresti modificare il tuo post inserendo il codice indentato in un blocco [CODE]? COsì non si capisce un granché...![]()
![]()
modificatoOriginariamente inviato da pallinopinco
Potresti modificare il tuo post inserendo il codice indentato in un blocco [CODE]? COsì non si capisce un granché...![]()
![]()
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
Salento 12 !! Ultras Lecce !!
Sarà colpa del lunedì, riprova domani magari sarai più fortunato...nonostante l'esempio di king64 continuo a non capire
non è giornata oggi..
King64 ti ha fornito una soluzione funzionante, basta sostituire la funzione "Pari" con il confronto corretto e gestire l'inserimento di stringhe (read/readln) e la stampa dei risultati (write/writeln).
Puoi terminare il ciclo quando l'utente inserisce uno zero.
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
Prova a costruire qualcosa intorno a questo nucleo (rappresenta il 90% del programma).codice:numero := 42; positivi := 0; negativi := 0; while numero <> 0 do begin write('Inserisci un numero diverso da zero: '); readln(numero); if numero > 0 then inc(positivi) else if numero < 0 then inc(negativi); end;
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
VVoVe: Adesso mi sono accorto che il problema richiedeva numeri negativi e positivi , mentre ho postato una soluzione per pari e dispari . E ovvio che il confronto va fatto in base al segno . :master:
ciao raga...
grazie per le risposte...
oggi pomeriggio, dopo un bel pranzo e un caffè, son riuscito a "sbloccarmi" e a trovare una possibile soluzione...
che ne dite?
la soluzione mi sembra abbastanza efficace...e la sinstassi è corretta...codice:program numeri_positivi_e_negativi; uses crt; var cont,neg,pos,n,num1:integer; mpos,mneg:real; begin clrscr; cont:=0; neg:=0; pos:=0; writeln('numeri sequenza: '); readln(n); while cont<=n do begin writeln('dammi numero: '); readln(num1); if num1<>0 then begin pos:=pos+1; end else begin neg:=neg+1; end; cont:=cont+1; end; writeln('i numeri positivi sono: ' ,pos); writeln; writeln('i numeri negativi sono: ' ,neg); writeln; mpos:=pos*n/100; writeln('la media dei positivi è: ' ,mpos:5:2); writeln; mneg:=neg*n/100; writeln('la media dei negativi è: ' ,mneg:5:2); writeln; writeln('premi un tasto per tornare indietro...'); readkey; end.
che ne dite?
![]()
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
Salento 12 !! Ultras Lecce !!
Che ad occhio non funziona...che ne dite?
Dovresti prendere spunto dal codice di King64 per quanto riguarda il calcolo della percentuale e dal mio per l'incremento dei 2 contatori.
In particolare:
Cosa verifica la condizione "if num1<>0"?
Devi calcolare la media o la percentuale? In entrambi i casi il tuo codice è errato.
Bevi un altro paio di caffè...![]()
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
Con il test
incrementerai solo la variabile pos , perchè è la prima condizione verificata che il compilatore trova . Otteresti lo stesso risultato se al posto della variabile pos ponessi la variabile neg , ovvero un risultato errato . Il test corretto ècodice:if num1<>0
Per il calcolo delle percentuali devi sostituire le istruzioni:codice:if num1>0
rispettivamente concodice:mpos:=pos*n/100; mneg:=neg*n/100;
Saluticodice:mpos:=pos*100/n; mneg:=neg*100/n;![]()
per quanto riguarda la sintassi
è stato una errore "casuale", visto che avevo provato a cambiare quella condizione per una prova.codice:if n mum1<>0 ...
Nell'esercizio ho messo:
Per quanto riguardacodice:if num1>0 ...
correggo subito grazie...codice:mpos:=pos*n/100; mneg:=neg*n/100;
![]()
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
Salento 12 !! Ultras Lecce !!