| Autore |
Discussione  |
|
|
Chilavert
admin
    

Regione: Puglia
Prov.: BA
Città: Bari
|
Inserito il - 11/07/2005 : 19:30:13
|
Posto la soluzione del laboratorio di oggi. Chiedeva di inserire una matrice di nxm caratteri, stamparla e calcolare per ogni riga il carattere minimo.
matrici.zip
program esame;
const dimen = 50; type matrice = array[1..dimen, 1..dimen] of char; _____vettore = array[1..dimen] of char; var a: matrice; ____v: vettore; ____n, m: integer;
procedure inserisci(var a: matrice; n, m: integer); var i, j: integer; begin ___writeln; ___for i:=1 to n do ______begin ______for j:=1 to m do _________repeat ____________write('Inserisci l''elemento (', i, ', ', j, '): '); ____________readln(a[i, j]) _________until (a[i, j] >= 'a') and (a[i, j] <= 'z'); ______writeln ______end end;
procedure stampamat(var a: matrice; n, m: integer); var i, j: integer; begin ___writeln; ___writeln('La matrice inserita e'' la seguente'); ___writeln; ___for i:=1 to n do ______begin ______write('[ '); ______for j:=1 to m do _________write(a[i, j], ' '); ______writeln(']') ______end end;
procedure calcola(var a: matrice; n, m: integer; var v: vettore); var i, j: integer; ____min: char; begin ___for i:=1 to n do ______begin ______min:= a[i, 1]; ______for j:=2 to m do _________if (a[i, j] < min) then ____________min:= a[i, j]; ______v[i]:=min ______end end;
procedure stampavet(var v: vettore; n: integer); var i: integer; begin ___writeln; ___writeln('Questo e'' il vettore dei minimi di ogni riga'); ___writeln; ___write('[ '); ___for i:=1 to n do ______write(v[i], ' '); ___writeln(']'); end;
begin ___repeat ______write('Inserisci numero di righe: '); ______readln(n); ___until ((n > 0) and (n <= dimen)); ___repeat ______write('Inserisci numero di colonne: '); ______readln(m); ___until ((m > 0) and (m <= dimen)); ___inserisci(a, n, m); ___stampamat(a, n, m); ___calcola(a, n, m, v); ___stampavet(v, n); ___readln end.
|
E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare. Pensa a studiare e non agli esempi, o ad altre strade per così dire, che questa volta mi sa che non attacca. [cit.]
Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.] |
|
|
Sinkler
Croce & Delizia
   

Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 11/07/2005 : 22:11:36
|
io invece nn capisco perkè ho fatto esattamente come stava scritto sulle dispense http://www.di.uniba.it/~lops/programmazione/Matrici.pdf e nn mi è uscito:
/////////////////////////////////////////////////// program esame(input,output); const a=50; ______b=50; type matrice=array[1..a,1..b] of char;
var mA:matrice; ______n,m:integer;
procedure crea(var a:matrice ; k,h:integer); var i,j:integer; begin __for i:=1 to k do ___begin ____for j:=1 to h do _____begin ______writeln('Inserisci un numero nella riga ',i,'colonna ',j,': '); ______readln(a[i,j]); _____end; ___end; end;
procedure stampa(var a:matrice ; k,h:integer); var i,j:integer; begin _for i:=1 to k do __begin ___for j:=1 to h do ___begin ____write(' ',a[i,j],' '); ___end; __end; end;
(*MAIN*) begin writeln('Quanti elementi vuoi inserire nelle righe?'); read(n); writeln('Quanti elementi vuoi inserire nelle colonne?'); read(m); crea(mA,n,m); readln; stampa(mA,n,m); readln; end. //////////////////////////////////////////////////////
poi a casa ho scoperto che non è uscito perkè non mettevo un writeln nella procedura di stampa prima del secondo end...
procedure stampa(var a:matrice ; k,h:integer); var i,j:integer; begin _for i:=1 to k do __begin ___for j:=1 to h do ___begin ____write(' ',a[i,j],' '); ___end; __writeln; __end; end;
il problema è : a che serve quel writeln?? questo non ho capito!!se qualcuno me lo spiega per favore... cmq un'altra cosa strana che non capisco è che questo programma(corretto con i writeln) eseguito da Chila esce, eseguito da me, esce sta schifezza esattamente come al laboratorio:

mi salta il primo elemento!
poi perkè proprio oggi ha messo le matrici?? quando ho visto la traccia mi veniva da  lo so, sono facili ma su tutti gli appelli che abbiamo scaricato dal sito del prof per esercitarci non ce ne sta uno con le matrici... e noi scemi a esercitarci su file e array... vabbè sulla traccia c'era scritto :"ci rivediamo a settembre"
|
Modificato da - Sinkler in data |
 |
|
|
n/a
deleted
  
Prov.: Bari
|
Inserito il - 11/07/2005 : 23:07:59
|
Il writeln serve a farti tornare a capo a ogni ciclo del primo for quindi a ogni "riga" della matrice
sicuro che questo c'e' scritto nelle prime 10 pagine del Bishop
Altra cosa, usa readkey anziche' readln quando devi premere solo un tasto. Altra cosa, se non ricordo male a volte per motivi mistici l'input stream si mantiene un carattere, che nel tuo caso e' un ritorno a capo che viene letto quando chiede il primo elemento della matrice e quindi lo salta, aggiungendo un readkey all'inizio della procedura crea dovresti aver risolto |
Modificato da - n/a in data |
 |
|
|
n/a
deleted
  
Prov.: Bari
|
Inserito il - 11/07/2005 : 23:28:31
|
da appuntilinux:
Le procedure Read() e Readln() permettono di leggere dallo standard input dei valori per le variabili che vengono indicate come parametri della chiamata. I dati inseriti, vengono distinti in base all'inserimento di spaziature, così come avviene di solito con gli argomenti di un comando del sistema operativo.
La differenza tra le due procedure sta nel fatto che Readln() dovrebbe restituire l'eco del codice di interruzione di riga, quando si preme [Invio] per concludere l'inserimento dei dati, mentre Read() no. In pratica, può darsi che il compilatore non riesca a distinguere tra le due procedure, e si comporti sempre nello stesso modo.
ecco l'arcano motivo |
Modificato da - n/a in data |
 |
|
|
Sinkler
Croce & Delizia
   

Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 11/07/2005 : 23:29:31
|
Citazione: Messaggio inserito da KernelFolla Altra cosa, se non ricordo male a volte per motivi mistici l'input stream si mantiene un carattere, che nel tuo caso e' un ritorno a capo che viene letto quando chiede il primo elemento della matrice e quindi lo salta, aggiungendo un readkey all'inizio della procedura crea dovresti aver risolto
a saperla sta cosa... il bello è che solo a me si manteneva il carattere perciò ho cominciato a pensare che era il progr che nn andava... vabbè pazienza ora lo so la prox volta mi porto una bella dozzina di readln |
Modificato da - Sinkler in data |
 |
|
| |
Discussione  |
|
|
|