PASCAL aiuuuutoooo

akyra

Nuovo Utente
15
1
buona sera ragazzi non so se sia opportuno chiedere questa cosa ma a breve ho un esame di informatica e mi toccherà programmare con DEV PASCAL sto avendo difficoltà con un esercizio e mi chiedevo se potreste aiutarmi, questo è l'esercizio mi trovo solo con il primo esempio gli altri due alla 10 cifra l'exe si chiude, http://www.unisa.it/uploads/7512/pascal_13_-_media_10_pos_e_neg.pdf
io lho svolto cosìì ma non capisco dov'è l'errore potete aiutarmi perfavore çç

program med;

var k,x,somma_pos,somma_neg,conta_pos,conta_neg:integer;
media_pos,media_neg:real;
begin
for k:= 1 to 10 do
begin
write ('inserisci il primo numero: ');
read(x);
if x>0 then
begin
conta_pos:=conta_pos+1;
somma_pos:=somma_pos + x;
end;
if x<0 then
begin
conta_neg:=conta_neg+1;
somma_neg:=somma_neg + x;
end;
end;
media_pos:=somma_pos/conta_pos;
media_neg:=somma_neg/conta_neg;
writeln ('la media pos e'' : ',media_pos:5:2);
writeln ('la media dei neg e'' : ' ,media_neg:5:2);
readln;
readln;
end.
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Il programma funziona in linea di massima, ma c'è un caso in cui invece fallisce.
Se non inserisci sia numeri pari che negativi, alla fine farà una divisione per zero, che farà chiudere il programma alla riga dove calcola la media. Prova a inserire numeri sia negativi che positivi.
Per ovviare al problema dovresti scrivere:
Codice:
if conta_pos>0 then
   media_pos:=somma_pos/conta_pos;
if conta_neg>0 then
   media_neg:=somma_neg/conta_neg;
 

akyra

Nuovo Utente
15
1
Il programma funziona in linea di massima, ma c'è un caso in cui invece fallisce.
Se non inserisci sia numeri pari che negativi, alla fine farà una divisione per zero, che farà chiudere il programma alla riga dove calcola la media. Prova a inserire numeri sia negativi che positivi.
Per ovviare al problema dovresti scrivere:
Codice:
if conta_pos>0 then
   media_pos:=somma_pos/conta_pos;
if conta_neg>0 then
   media_neg:=somma_neg/conta_neg;


grazie mille ora va tutto come dovrebbe andare..ahah ero convinta che il problema fosse l'assenza dei pos o dei neg ma mai a pensare che andasse specificatoooo GRAZIE GRAZIEEE *-*:hihi:

- - - Updated - - -

scusami 1nd33d avrei un altra cosa da chiederti un esercizio mi chiede leggi una stringa lunga almeno 5 carat e sostituisci i primi 5 caratteri con * ora va fatto così o c'è un'altro modo senza scrivee tut e 5 le x

Codice:
program leggi;
var x:string;
begin
write ('inserisci una stringa: ');
read (x);
x[1]:='*';
x[2]:='*';
x[3]:='*';
x[4]:='*';
x[5]:='*';
writeln ('la stringa letta è: ',x);
read (x);
writeln ('premi invio x term');
readln;
readln;
end.

grazie :*
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Penso che vada bene come hai fatto tu, non mi pare sia possibile l'assegnamento multiplo in pascal (ma è da tanto che non lo uso...).
Al massimo puoi giocare un po' con le funzioni sulle stringhe ma non è molto utile.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili