Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Programmazione
 Laboratorio di oggi 11/07/2005
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 11/07/2005 : 19:30:13  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato  Rispondi Quotando
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

gattino


Regione: Puglia
Prov.: Bari
Città: Molfetta


Inserito il - 11/07/2005 : 22:11:36  Mostra Profilo  Visita l'Homepage di Sinkler  Clicca per vedere l'indirizzo MSN di Sinkler Invia a Sinkler un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

n/a
deleted

Prov.: Bari


Inserito il - 11/07/2005 : 23:07:59  Mostra Profilo  Visita l'Homepage di n/a Invia a n/a un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

n/a
deleted

Prov.: Bari


Inserito il - 11/07/2005 : 23:28:31  Mostra Profilo  Visita l'Homepage di n/a Invia a n/a un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

Sinkler
Croce & Delizia

gattino


Regione: Puglia
Prov.: Bari
Città: Molfetta


Inserito il - 11/07/2005 : 23:29:31  Mostra Profilo  Visita l'Homepage di Sinkler  Clicca per vedere l'indirizzo MSN di Sinkler Invia a Sinkler un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,21 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000