» Utilizator
LAMP
» Parteneri» De citit» Recomandari» Taskuri securitate » Statistici
  • 64782 de mesaje.
  • 7635 de topicuri.
  • 1081 de utilizatori.
  •  
  • purcelllefevreo e ultimul utilizator inregistrat.
[Detalii]

 

| |
Pagini: [1]
Print

Ajutor la o problema Pascal... [1078 afisari]

BF Shell



Mesaje: 31
OfflineOffline


Salut!
De ceva vreme am reinceput sa studiez limbajul Pascal,si vreau sa fac un mic program cu matrice.
Asa pt inceput va  spun etapele programului:
Etapa 1.Intr-un fisier txt se gasesc o serie de matrice in felul urmator:
MATRICEA A
2.56
4.25
7.20

MATRICEA B
7.26
1.23
5.80

MATRICEA C
7.36
8.30
1.82

....Si lista poate continua.

Etapa 2.Programu va trebui sa calculeze toate comutarile posibile cu aceste matrice in grupuri de cate doua.
ex:Matricea A cu Matricea B
    Matricea A cu Matricea C
 ...etc.
Etapa 3.Programul va trebui sa inmulteasca Matrice A cu Matricea B

Matr. A      Matr. B
______      ______
A=1.9      D=3.30
B=3.40      E=3.30
C=3.60      F=2.1
______________________________
a*d=ad
a*e=ae
a*f=af
b*d=bd
b*e=be
b*f=bf
c*d=cd
c*e=ce
c*f=cf

Etapa 4.Progamul va imparti 100 cu fiecare produs al matrici.

100/ad=p1
100/ae=p2
100/af=p3
100/bd=p4
100/be=p5
100/bf=p6
100/cd=p7
100/ce=p8
100/cf=p9

Etapa 5.Dupa acest calcul fiecare rezultat se va aduna

p1+p2+p3+p4+p5+p6+p7+p8+p9=FIN

Etapa 6.Dupa ce am gasit rezultatul final,continua cam asa...

if FIN <99 then true
else false

Etapa 7.Maticele care sunt adevarate sa fie puse intru-un fisier,si cele false in alt fisier.

Nu este ceva greu,dar nu ma prea descurc cu structura programului.
Nu va cer ca voi sa imi faceti programul,dar unde nu ma descurc sa ma ajutati.

Logged
03-02-2009, 18:44 Twitt ::
BF Shell



Mesaje: 31
OfflineOffline


Daca stiti careva un algoritm mai usor va rog sa postati...eu ma pun la un film pana una alta sa imi limpezesc cerebelu si dupa 9:30 ma apuc de program si voi posta unde ma impotmolesc.
Logged
03-02-2009, 19:04 Twitt ::
Dieliric
*


Mesaje: 486
OnlineOnline


Cand te impotmolesti sa ne anunti...chiar sunt curios  hee hee  deaorece am si eu cateva programele care fac calcule cu matrici si poate te pot ajuta.
Logged



"Stii bine ca pe mine nimeni nu ma poate schimba
Nu ma mai intreba ce vreau sa fac cu viata mea
Pentru ca de pe acum iti spun asa raman
Pana cand va creste iarba la mine pe mormant"
03-02-2009, 21:40 Twitt ::
BF Shell



Mesaje: 31
OfflineOffline


Asa ...eram sigur ,aici cu matricile is varza:D

uite un inceput de cod:
Code:
procedure sort_matric ;
typetype mat=1..10;
var
b:array[1..24,1..24] of mat;
a:string;
f:text;
begin
clrscr;
textcolor(blue);
write('Numele Fisierului: ');
readln(a);
assign(f,a)
....
Fisierul care va fi incarcat (vezi fisier.txt)
Asa ..deci ce vreau eu sa iasa:
1.In fisierul respectiv sunt puse coloane cu un nume si 3 lini cu cate un numar,cea ce vreau eu este ca programu sa selecteze in felul urmator:
Code:

vladut        ionut
230           410
752           632
012           785
vladut        andrey
230           230
752           100
012           500
 
...toate comutarile posibile ,si sa le scrie in alt fisier sau daca datele aste se poate
folosii la alte proceduri din acel program sa nu mai fie scrise in alt fisier.
Cam atat deocamdata Tongue

Logged
03-02-2009, 22:25 Twitt ::
AdyX
*


Mesaje: 1253
OfflineOffline

WWW

Si daca folosesti un vector de record-uri (articole) ce are? Smile
Logged
03-02-2009, 23:44 Twitt ::
BF Shell



Mesaje: 31
OfflineOffline


AdyX nu stiu daca ai inteles dar eu vreau ca in procedura cu sortat matrici...sa fie luate dintr-un fisier,azi noapte am stat si m-am tot gandit si am mai navigat prin google si am citit mai multe despre lucru cu matrici.
Ma gandeam ca exista ceva mai usor decat cum am inceput eu,ceva de genu:
-in fisierul txt se gasesc urmatoarele lini:
Code:
nume1 34 1.2 12
nume2 45 7.65 11
nume3 74 1.5 4.55
nume4 5.6 8 21
Din cate am citit eu o linie din fisier este un vector?!
-cum sa fac toate premutarile posibile cu acesti vectori?,grupate 2 cate 2.
Code:
nume1 34 1.2 12
nume2 45 7.65 11

nume1 34 1.2 12
nume3 74 1.5 4.55

nume1 34 1.2 12
nume4 5.6 8 21

nume2 45 7.65 11
nume3 74 1.5 4.55

nume2 45 7.65 11
nume4 5.6 8 21

....etc.

Logged
04-02-2009, 08:14 Twitt ::
DarkByte



Mesaje:

Tu vrei combinari de N luate cate 2 Smile Cauta informatii in directia asta, sau, de ce nu, backtracking Winking
Logged
04-02-2009, 08:38 Twitt ::
BF Shell



Mesaje: 31
OfflineOffline


Bine metoda  backtracking,dar cum citesc vectorul "nume1 34 1.2 12 "care contine 4 elemente din fisier?...pentru a face o matrice cu 2 linii si 5 coloane.
E corect declararea asta:
Code:
type matrice=array[1..100,1..5] of string;
Logged
04-02-2009, 09:17 Twitt ::
BF Shell



Mesaje: 31
OfflineOffline


Am inceput un cod aveam asa:
Code:
uses crt;
type matrice= array[1..50,1..5] of string ;
var a:matrice;
i,j,m,n:integer;
f:text;
s:string;
begin
clrscr;
assign(f,'fisier.txt');
reset(f);
write('lini=');
readln(m);
write('coloane=');
readln(n);
for i:=1 to m do
for j:= 1 to n do
begin write('a[',i,',',j,']=');
readln(a[i,j]);
end; for i:=1 to m do
begin for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
readln;
end.

Vezi si fisier.txt

In fisier avem asa:
Code:
vladut 230 752 012
ionut 410 632 785
andrey 230 100 500
maria 711 911 320
alex 741 9.5 4.2
...si eu vreau sa iasa asa:
Code:
vladut 230 752 012
ionut 410 632 785

vladut 230 752 012
andrey 230 100 500

vladut 230 752 012
maria 711 911 320

vladut 230 752 012
alex 741 9.5 4.2
toate premutatile posibile grupate 2 cate 2
Logged
04-02-2009, 09:49 Twitt ::
emi



Mesaje:

nu incerc sa iti fac programelul, dar am citeva sugestii:

pune 2 spatii dupa begin:

begin
  writeln('My program');
  readln;
end;

si pentru celelalte instructiuni.
Logged
04-02-2009, 10:34 Twitt ::
AdyX
*


Mesaje: 1253
OfflineOffline

WWW

Code:
type om = record
  nume: string;
  a, b, c: real;
end;

var v: array[1..100] of om;

procedure citire;
var
  f: text;
  i: word;
begin
  assign(f, 'fisier.txt');
  reset(f);
  i:=0;
  while not(eof(f)) do begin
    inc(i);
    readln(f, v[i].nume);
    readln(f, v[i].a, v[i].b, v[i].c)
  end
end;
Cam asta ar fi procedura de citire. Am luat varianta de fisier in care fiecare element era pe o linie separata. In vectorul de articole v ai fiecare persoana cu numerele ei. Nu mai trebuie sa faci decat combinarile.
Code:
for i:=1 to n-1 do
  for j:=i+1 to n do
    scrie(i, j);
N-am mai scris si procedura scrie ca banuiesc ca e destul de usor de implementat.

BTW, nu stiu daca o sa mearga din prima la compilare, am scris direct in browser.
Logged
04-02-2009, 11:39 Twitt ::
Pagini: [1]
Print
SkullBox Forum  |  Development  |  Delphi & Pascal  |  Topic: Ajutor la o problema Pascal...