Aiutino Pascal
Non riesco a risolvere questo problema:
Calcolare il MCD di due numeri a, b utilizzando l'algoritmo di Euclide..
Mi dareste una mano commentata??
Grazie in anticipo a tutti..
Calcolare il MCD di due numeri a, b utilizzando l'algoritmo di Euclide..
Mi dareste una mano commentata??
Grazie in anticipo a tutti..

Risposte
Dai che è facile
... intanto scriviti passo-passo le operazioni che fai nell'applicare l'algoritmo manualmente... poi prova a pensare, per ognuno di questi passi, a come sarebbe possibile tradurlo nel linguaggio di programmazione.
Semmai riporta qua le tue elucubrazioni...

Semmai riporta qua le tue elucubrazioni...
Esiste un metodo alternativo più semplice che permette di calcolare anche il mcm.
Ecco il codice:
program MCDmcm;
var a,b,a1,b1,x,y:integer;
begin
write('Primo nunero=');readln(a);a1:=a;
write('Secondo numero =');readln(b);b1:=b ;
if a=b then x:=a
else
repeat
if a>b then a:=a-b else b:=b-a;
until a=b ;
x:=b; y:=((a1*b1) div x);
writeln('MCD(',a1,',',b1,')','=',x);
writeln('mcm(',a1,',',b1,')','=',y);
readln;
end.
Ciao
Ecco il codice:
program MCDmcm;
var a,b,a1,b1,x,y:integer;
begin
write('Primo nunero=');readln(a);a1:=a;
write('Secondo numero =');readln(b);b1:=b ;
if a=b then x:=a
else
repeat
if a>b then a:=a-b else b:=b-a;
until a=b ;
x:=b; y:=((a1*b1) div x);
writeln('MCD(',a1,',',b1,')','=',x);
writeln('mcm(',a1,',',b1,')','=',y);
readln;
end.
Ciao
Sarebbe stato più utile ci fosse arrivata da sola, soprattutto visto il livello del problema.
Non ho suggerito la soluzione a Stellacometa ma piuttosto un altro metodo che può essere utile anche ad altri forumisti.
Scommetto che anche lore ha ora qualche argomento in più da utilizzare per il calcolo del MCD e del mcm.
Pur non avendone certo bisogno .O sì ?
Ciao
Scommetto che anche lore ha ora qualche argomento in più da utilizzare per il calcolo del MCD e del mcm.
Pur non avendone certo bisogno .O sì ?

Ciao
disegnati l'algoritmo con tutte le operazioni necessarie, se hai problemi chiedi pure

Sto provando a mettere in piedi questo programmino..lo so che è estramemente facile lore, ma forse ci sarà qualche errore...se continua a non funzionare lo posto qui così magari vediamo insieme gli errori..
A che ci siamo.. Ho da fare questo programma: "Scrivere un programma che, memorizzati in due vettori A e B della stessa lunghezza N valori interi, calcoli la somma incrociata degli elementi: a[1]+b[n], a[2]+b[n-1] ecc"
Io ho provato a fare così:
program Project;
const n=4;
type vettore= array[1..n] of integer;
var a, b, somma: vettore;
var i: integer;
begin
for i:=1 to n do
begin
writeln ('inserisci elemento del vettore');
readln (a);
end;
for i:=1 to n do
begin
writeln ('inserisci elemento del vettore');
readln (b);
end;
for i:=1 to n do
somma:= a+b[n-i+i];
for i:=1 to n do
writeln (somma, '');
readln
end.
Ho provato a fare la somma caricando per ogni vettore i numeri 1, 2, 3, 4; alla fine però quando mi stampa la somma ricevo in output 5, 6, 7, 8. Come mai? Cosa sbagliio?
Io ho provato a fare così:
program Project;
const n=4;
type vettore= array[1..n] of integer;
var a, b, somma: vettore;
var i: integer;
begin
for i:=1 to n do
begin
writeln ('inserisci elemento del vettore');
readln (a);
end;
for i:=1 to n do
begin
writeln ('inserisci elemento del vettore');
readln (b);
end;
for i:=1 to n do
somma:= a+b[n-i+i];
for i:=1 to n do
writeln (somma, '');
readln
end.
Ho provato a fare la somma caricando per ogni vettore i numeri 1, 2, 3, 4; alla fine però quando mi stampa la somma ricevo in output 5, 6, 7, 8. Come mai? Cosa sbagliio?
for i:=1 to n do
somma:= a+b[n-i+i];
credo dovrebbe essere
somma:=a+b[n-i+1]
somma:= a+b[n-i+i];
credo dovrebbe essere
somma:=a+b[n-i+1]
Giààà...Ecco l'errore..Mille grazie frodo!
"manlio":
Non ho suggerito la soluzione a Stellacometa ma piuttosto un altro metodo che può essere utile anche ad altri forumisti.
Scommetto che anche lore ha ora qualche argomento in più da utilizzare per il calcolo del MCD e del mcm.
Pur non avendone certo bisogno .O sì ?![]()
Ciao
Io ho sempre bisogno di nuovi metodi, ancorché su problemi banali

Comunque è sempre una soluzione, e penso sarebbe stato meglio postarla alla fine, anche se stellacometa ha abbastanza testa da non copiare.
Stellacometa: facile dipende ovviamente dal punto in cui sei. Intendevo nel senso che è bene imparare fin dall'inizio a risolvere questi problemi, per prendere subito la mano nella progettazione algoritmica.
lore non sai quanto pagherei per sapere com'è che sei così bravo in info...
Cmq, ho provato a fare il programmino..ditemi se può andare:
Program Euclide;
var a, b, m: integer;
Procedure scambia (var s,t:integer);
var aus:integer;
begin
aus:=s;
s:=t;
t:=aus;
end;
function MCD (x,y:integer):integer;
var r:integer;
begin
if x
scambia (x,y);
r:= x mod y;
while r<>0 do
begin
x:=y;
y:=r;
r:=x mod y;
end;
MCD:=y;
end;
begin
writeln ('inserisci il valore di A');
readln (a);
writeln ('inserisci il valore di B');
readln (b);
writeln ('il mcd fra',a,'e',b,'e''',MCD(a,b));
readln
end.

Cmq, ho provato a fare il programmino..ditemi se può andare:
Program Euclide;
var a, b, m: integer;
Procedure scambia (var s,t:integer);
var aus:integer;
begin
aus:=s;
s:=t;
t:=aus;
end;
function MCD (x,y:integer):integer;
var r:integer;
begin
if x
r:= x mod y;
while r<>0 do
begin
x:=y;
y:=r;
r:=x mod y;
end;
MCD:=y;
end;
begin
writeln ('inserisci il valore di A');
readln (a);
writeln ('inserisci il valore di B');
readln (b);
writeln ('il mcd fra',a,'e',b,'e''',MCD(a,b));
readln
end.
lore non sai quanto pagherei per sapere com'è che sei così bravo in info...
Non pagare, perché non sono bravo come dici

Solo che mi sto laureando in informatica, e queste cose (in realtà un po più complesse) ce le danno come pane e companatico.
L'algoritmo comunque sembra andar bene.
Ok...allora siamo colleghi (a distanza), solo che io sono ancora al primo anno...
Grazie dell'aiuto!
Grazie dell'aiuto!
Ok...allora siamo colleghi (a distanza), solo che io sono ancora al primo anno...
Mi fa piacere


Comunque mi sembra strano vi facciano usare Pascal... ma è un corso di programmazione diciamo "teorico" o uno di laboratorio?
Entrambi...in aula studiamo il linguaggio e in laboratorio, tramite Delphi, mettiamo in pratica..Perche, tu che hai studiato al primo anno??
"stellacometa2003":
Entrambi...in aula studiamo il linguaggio e in laboratorio, tramite Delphi, mettiamo in pratica..Perche, tu che hai studiato al primo anno??
Noi il PC lo abbiamo acceso solo il secondo semestre. Il primo seguimmo corsi a livello matematico, e un corso di programmazione teorico, con lo pseudocodice. E se vuoi saperlo, questa scelta non mi è disgarbata...
Più che altro, per quanto riguarda il tuo corso, mi sorprende ti facciano usare proprio Pascal invece di, che ne so, C, C++, o un Java un po semplificato... di solito il Pascal si usa alle superiori, mentre invece sarebbe meglio secondo me iniziaste all'uni con un qualcosa un po più al di sopra del semplice linguaggio di programmazione didattico (anche in vista dei corsi futuri)... non capisco perché questa scelta, insomma.
A chi lo dici..non sai quante assemble si sono tenute per modificare questo programma, eppure... Cmq, rieccomi con un programmino con qualche...ORRORE:
Program ricerca;
const m=2;
const n=2;
type matrice = array[1..n,1..m] of char;
var mat : matrice;
var i,j: integer;
var ele: char;
var flag: boolean;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln ('inserisci elemento della matrice di riga ',i,' e colonna ',j);
readln (mat[i,j]);
end;
writeln ('inserisci elemento da cercare');
readln (ele);
i:=0;
j:=0;
flag:=false;
while (i
begin
i:=i+1;
j:=j+1;
if mat[i,j]=ele then
flag:=true;
end;
if flag then
writeln ('elemento presente in riga', i,'e colonna', j)
else
writeln ('elemento non presente');
readln
end.
Devo cercare in pratica in questa matrice se è presente un carattere..Però sembra piu un cumulo di errori piuttosto che un prgramma.. Una mano per la correzione??
Program ricerca;
const m=2;
const n=2;
type matrice = array[1..n,1..m] of char;
var mat : matrice;
var i,j: integer;
var ele: char;
var flag: boolean;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln ('inserisci elemento della matrice di riga ',i,' e colonna ',j);
readln (mat[i,j]);
end;
writeln ('inserisci elemento da cercare');
readln (ele);
i:=0;
j:=0;
flag:=false;
while (i
i:=i+1;
j:=j+1;
if mat[i,j]=ele then
flag:=true;
end;
if flag then
writeln ('elemento presente in riga', i,'e colonna', j)
else
writeln ('elemento non presente');
readln
end.
Devo cercare in pratica in questa matrice se è presente un carattere..Però sembra piu un cumulo di errori piuttosto che un prgramma.. Una mano per la correzione??

ho provato a fare come dici tu ma non appena inserisco l'elemento da cerca e premo invio mi si chiude il programma..
OT:
cmq, il vero divertimento lo avrai quando programmerai in assembler.
cmq, il vero divertimento lo avrai quando programmerai in assembler.
"codino75":
OT:
cmq, il vero divertimento lo avrai quando programmerai in assembler.
Non vedo l'ora!!!
