| V I S U A L I Z Z A D I S C U S S I O N E |
| Sinkler |
Inserito il - 09/07/2005 : 16:26:01 Qualcuno ha fatto questo esercizio: "Scrivere un programma Pascal che avendo in input un vettore di numeri interi calcoli la lunghezza massima tra le sotto-sequenze di elementi contigui uguali e visualizzi il risultato. ES: Dato [1,2,2,2,4,2,1,1] il risultato sarà 3 relativo alla sequenza [2,2,2]"
mi serve solo la procedura per calcolare la sottosequenza |
| 8 U L T I M E R I S P O S T E (in alto le più recenti) |
| Chilavert |
Inserito il - 10/07/2005 : 19:02:51 brava Sinka  |
| Sinkler |
Inserito il - 10/07/2005 : 16:50:06 Citazione: Messaggio inserito da genius
x sinkler: nella tua procedura crea_vett c'è un errore:
for i:= 1 to n <- deve essere fino a n-1 altrimenti ti da index out of bound perkè fai A[i] = A[i+1] e quindi all'ultima iterata hai A[n] = A[n+1]
ah ho capito, ma è la procedura calcola nn crea_vett, cmq grazie siccome mi usciva nn c'avevo fatto caso! riscrivo tutto:
//////////////////////////////////////////////////////////// program SottoSequenza(input,output); const size=50; type interi=array[1..size] of integer; var vettA : interi; num : integer;
(*Crea vettore di interi*) procedure crea_vett(var A:interi; K:integer); var i:integer; begin _for i:=1 to K do __begin ___writeln; ___writeln('Inserisci un numero intero nella posizione n.',i,':'); ___readln(A[i]); __end; end;
(* Stampa vettore *) procedure stampa(var A:interi; K:integer); var i:integer; begin _write('['); __for i:=1 to K do ___begin ____write(' ',A[i],' '); ___end; __write(']'); end;
(* Calcosa la massima sottosequenza *) procedure calcola(var A:interi; K:integer); var i,seq,max:integer; begin seq:=1; max:=0; _for i:=1 to K-1 do ___begin _____if (A[i]=A[i+1]) then _________begin ___________seq:=seq+1; _________end _____else _______if (max<seq) then ________begin _________max:=seq; _________seq:=1; ________end; ___end; __if (max<seq) then ___max:=seq; _writeln('La lunghezza della sottosequenza e'':',max); end;
(* MAIN *) begin writeln('Quanti elementi vuoi inserire nel vettore?'); read(num); crea_vett(vettA,num); writeln; writeln('Vettore in ingresso:'); stampa(vettA,num); writeln; writeln; calcola(vettA,num); readln; end. ////////////////////////////////////////////////////////////
prova6.zip
nella funzione di Chila manca un if alla fine:
function sottoseq(var a: vettore; k: integer): integer; var ___i, l, x, max: integer; begin ___l:= 1; ___x:= a[1]; ___max:= 0; ___for i:= 2 to k do ______if (x = a[i]) then _________l:= l + 1 ______else begin _________if (max < l) then ____________max:= l; _________l:= 1; _________x:= a[i] ______end; ___if (max<seq) then ____max:=seq; ___sottoseq:= max; end;
|
| genius |
Inserito il - 10/07/2005 : 13:20:01 x sinkler: nella tua procedura crea_vett c'è un errore:
for i:= 1 to n <- deve essere fino a n-1 altrimenti ti da index out of bound perkè fai A[i] = A[i+1] e quindi all'ultima iterata hai A[n] = A[n+1] |
| Chilavert |
Inserito il - 09/07/2005 : 17:32:22 sottoseq.zip
program sottosequenza; const DIM = 100; type vettore = array[1..DIM] of integer; var ___k: integer; ___a: vettore;
procedure insvett(var a: vettore; k: integer); var ___i, x: integer; begin ___writeln('Inserimento vettore'); ___writeln; ___for i:=1 to k do ______begin ______write('Inserisci elemento ', i, ': '); ______readln(x); ______a[i]:= x ___end end;
function sottoseq(var a: vettore; k: integer): integer; var ___i, l, x, max: integer; begin ___l:= 1; ___x:= a[1]; ___max:= 0; ___for i:= 2 to k do ______if (x = a[i]) then _________l:= l + 1 ______else begin _________if (max < l) then ____________max:= l; _________l:= 1; _________x:= a[i] ______end; ___sottoseq:= max; end;
begin ___write('Lunghezza del vettore: '); ___readln(k); ___insvett(a, k); ___writeln; ___writeln('La sottosequenza piu'' lunga e'' di ', sottoseq(a,k), ' elementi'); ___readln end. |
| Sinkler |
Inserito il - 09/07/2005 : 17:13:43 si è quello però nn funziona bene quella procedura che cerco io cmq grazie mille cerco di aggiustarlo |
| tremenda |
Inserito il - 09/07/2005 : 17:11:36 Forse è questo!Vedi se funziona xkè nn ho il pascal e nn mi ricordo!
Allegato: appgennaio02.zip 1,07 KB |
| Sinkler |
Inserito il - 09/07/2005 : 17:08:41 magari! è l'appello del 14/01/2004 |
| tremenda |
Inserito il - 09/07/2005 : 17:07:30 Ti ricordi l'appello?Forse ce l'ho io! |
|
|