Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Lucrare pentru atestat informatica - probleme speciale care se rezolva cu ajutorul vectorilor



Lucrare pentru atestat informatica - probleme speciale care se rezolva cu ajutorul vectorilor



CAPITOLUL I    Prezentarea lucrarii


Motivarea temei alese


In limbajul Pascal,am ales tema "Tablouri unidimensionale" sau "Vectori",deoarece pe langa celalalte lectii studiate la orele de informatica vectorii mi s-au parut cei mai interesanti si mi-au si placut cel mai mult.

De asemenea vectorii au aplicabilitatea si o diversitate larga in viata reala cum ar fi programe de diferite calcule sau prelucrari in anumite institutii.


CAPITOLUL I    Notiuni de teorie


Tabloul unidimensional-Vectorul



Tipurile structurale spre deosebire de cele simple sunt combinatii de alte tipuri definite prin decrierea tipurilor,componentelor si prin indicarea unor metode de structurare.

Tipul tablou

Un tip tablou este o structura care cuprinde un numar fix de componente de aceelas fel.

Tipul componentelor se numeste tipul de baza al tabloului,iar numarul de componente este determinat de numarul de valori al tipului indicelui.

Valorile indicelui identifica in mod unic,componentele.Datorita acesteii propietati,o variabiala de tip tablou poate fi privita ca o functie,definite pe multimea valorilor tipului de baza.

Indicele se mai numeste index,iar variabila de tip tablou,variabila indexata.

O declaratie de variabila de tip tablou denumeste intreaga structura de tip tablou.Deoarece doua specificatii diferite de tipuri anonime introduce tipuri distincte,va trebui ca variabilele de aceelas tip tablou sa aiba tipul specificat in TYPE sau sa apara in aceeas declaratie de tip.

Componenetele unei variabile de tip tablou sunt pastrate in memorie,una dupa alta,in zone contique,in ordine crescatoare a valorilor indicelui lor.Daca componentele unui tablou sunt structurate dupa valorile unui singur indice,tabloul se numeste unidimensional.Fiecare indice defineste o dimensiune.

Exemple:

Const n=0;

Type tablou=array[-3..3] of Boolean;

Var a,b:tablou;

c,d:array[1..n] of real;

f,g:array[1..n] of real;

x:array[Boolean] of 'a'..'z';

y:array['A'..'Z'] of byte;

a,b-doua variabile de aceelas tip tablou numit chiar tablou,cu sapte componente de tip Boolean identificate prin valorile -3 ,-2,-1,0,1,2,3 ale indicilor lor;

c,d-doua variabile de aceelas tip tablou,anonim,cu 10 componenete de tip REAL identificate prin valorile 1,2,,10 ale indicilor lor;

f,g-au aceelas tip tablou,anonim dar tipul este diferit de cel al variabilelor c si d,deoarece specificatiile lor de tip,desi identice,apar in declaratii diferite;

x-variabila de tip tablou,cu doua componente de tip CHAR din intervalul 'a'..'z',identificate prin valorile FALSE si TRUE ale indicelui ei;

y-variabila de tip tablou,cu componente de tip BYTE identificate prin valorile 'A'..'Z' ale indicelui ei.


Aceste tablouri definite in exemplul de mai sus sunt tablouri unidimensionale.

Operatiile care actioneaza la nivelul unei variabile de tip tablou luata in intregime sunt:

1.)         Atribuirea de valori -prin aceasta operatie,o variabila de tip tablou primeste valoarea unei alte variabile de aceelas tip tablou.Daca tipurile celor doua variabile nu coincide,la compilare se semnaleaza eroare de sintaxa.Posibilatea efectuarii atribuirilor la nivelul unui intreg tablou reprezinta o facilitate importanta oferita la limbajul Pascal.

Ex: a:array[1..3] of byte=(14,25,100)=>a= 14  25 100

-prin instructiunea de atribuire x,y:integer,x:=y;

Ex: var x,y:array[1..10] of byte;

z:array[1..10] of byte;

Avem nevoie:

x:=y;

y:=x;

NU      z:=x;


OBS:nu se poate atribui unei variabile a unui tablou,o valoare citita de la tastatura.

Ex: -prin citire:


Var x:array[1..10] of byte;

Begin

For i:=1 to 10 do begin

Writeln('Dati elementele de pe pozitia',i);

Read(x[i]);

End;

End.


2.)         Selectarea unei componente -se realizeaza prin specificarea variabilei de tip table,urmata intre paranteze drepte de o expresie indiceala sau de lista de expresii indiceale.

Ex: Sa se afiseze elemental din coloana 3 randul 4:

Writeln(x[4,3]);

OBS:Valoarea expresiei indiceale prin care se selecteaza componenta,trebuie sa apartina multimii valorilor indicelui carui ii apartine.Cu componentele unui tablou se pot face toate operatiile premise de tipul de baza al tabloului.


In Turbo Pascal,spre deosebire de Pascal Standard,exista posibilitatea declararii si initializarii variabilelor de tip tablou in sectiunea CONST.

3.)         Scrierea valorilor elementelor unui tablou

For i:=1 to 10 do write(a[i]:3);

Sau

Write (a[i],' ');

-prelucrarea se face element cu element;nu se poate scrie / afisa tablou de odata,intr-o comanda write(a) unde a este un tablou definit,deoarece operatiile de transfer generate de procedurile WRITE si WRITELN trebuie sa cunoasca numarul de elemente transferabile.Exceptii fiind la tablourile cu elemente de tip CHAR care se pot afisa de bloc.

Ex: var sir:array[1..8] of char;

Begin

For i:=1 to n do read(sir[i]);

Writeln(sir);

End.

4.)         Sortarea elementelor unui tablou unidimensional

-aranjarea elementelor intr-o ordine ceruta de catre utilizator(> sau < ).

Metoda selectiei directe

-strategie:la fiecare pas se plaseaza un element al vectorului pe pozitia  finala,adica il determina pe cel mai mic din sir/vector si il aseaza pe primul loc.In continuare,din sirul ramas,se determina urmatorul cel mai mic element si se plaseaza pe pozitia a doua,s.a.m.d.

Ex: n=5

5

3

0

1

2


53012

35012

05312

03512

01532

01352

01253

01235


ALGORITM:for i:=1 to n-1 do

For j:=i+1 to n do if a[i]>a[j] then begin

aux:=a[i];

a[i]:=a[j];

a[j]:=aux;

end.

Meetoda bulelor(buble-sort)

-strategie:se compara fiecare element x[i] cu elemental de pe pozitia succesoare,deci cu elemental x[i+1].Daca elementele nu sutn puse in ordine crescatoare,se vor schimba intre ele.Procesul se repeat pana cand la o traversare a lui x nu mai are loc nicio interschimbare.

5

4

0

1

2

3

Ex: fie A=

450123

405123

401253

401235-bula cea mai mare a ajuns la suprafata;

041235

014235

012435

012345

ALGORITM: var a:arry[1..10] of byte;

n,i,aux:byte;

vb:Boolean;

begin

read(n);

for i:=1 to n read(a[i]);

repeat

vb:=true;

for i:=1 to n-1 do

if a[i]>a[i+1] then begin

aux:=a[i];

a[i]:=a[i+1];

a[i+1]:=aux;

vb:false;

end;

until vb;

for i:=1 to n do write(a[i].' ');

end.


CAPITOLUL III - Descrierea programului


Meniul

Baza programului este meniul principal care contine toate cele 8 submeniuri.

Tastand una dintre cifrele de la '1' la '6' puteti intra intr-unul dintre submeniurile existente.Daca apasati tasta '7' intrati direct in meniul HELP iar daca apasati tasta '8' puteti iesi din program.


Vectori de siruri de caracater

Acest meniu este alcatuit din 4 probleme cu utilizarea vectorilor impreuna cu sirurile de caracter.Puteti intra in oricare din cele 4 probleme apasand cifra din dreptul problemei.

Vectori de articole

Acest meniu este alcatuit din 4 probleme cu utilizarea vectorilor impreuna cu tipul articol.(record). Puteti intra in oricare din cele 4 probleme apasand cifra din dreptul problemei

Vectori de numarare

Acest meniu este alcatuit din 3 probleme,una este sortare prin metoda bulelor,a doua sortare prin selectie si a treia sortare prin numarare. Puteti intra in oricare din cele 3 probleme apasand cifra din dreptul problemei.


Vectori ce sugereaza tipul multime

Acest meniu este format din 4 probleme toate fiind rezolvate cu ajutorul tipului multime set of. Puteti intra in oricare din cele 4 probleme apasand cifra din dreptul problemei.

Vectori caracteristici

Acest meniu este format din 3 tipuri de probleme fiecare utilizand vectorul characteristic. Puteti intra in oricare din cele 3 probleme apasand cifra din dreptul problemei.

Probleme cu fisiere rezolvate cu ajutorul vectorilor

Acest meniu este format din 3 probleme la rezolvarea carora se utilizeaza si fisierul. Puteti intra in oricare din cele 3 probleme apasand cifra din dreptul problemei.

Help

Acest  meniu este destinat pentru informarea utilizatorului despre program,acest meniu prezentand structura programului.



CAPITOLUL IV - Codului sursa

Listarea codului sursa

uses crt;

procedure meniu;

procedure meniu1;



procedure prob1;

var f:text;

aux,s,s1:string;

i,j,n:byte;

v:array [1..256] of string[20];

begin

clrscr;

assign(f,'input.txt');

reset(f);

i:=0;

writeln('Sa se adauge cuvintele din fisierul input.txt intr-un vector');

writeln('si sa se afiseze cuvintele din fisier cate unul pe fiecare linie.');

writeln;

writeln;

writeln('Fisierul este de forma: ana mereu cumpara mere mai ales mere rosii');

writeln('                        de asemenea ei ii plac si portocalele rosii.');

writeln;

writeln;

while not seekeof(f) do begin

readln(f,s);

s:=s+' ';

while s<>'' do begin

s1:=copy(s,1,pos(' ',s)-1);

delete(s,1,pos(' ',s));

i:=i+1;

v[i]:=s1;

end;

end;

n:=i;

for i:=1 to n do writeln('v[',i,']= ',v[i],' ');

close(f);

readln;

meniu1;

end;



procedure prob3;

var f:text;

aux,s,s1:string;

i,j,n:byte;

v:array [1..256] of string[20];

begin

assign(f,'input2.txt');

reset(f);

clrscr;

writeln('Se se citeasca cuvintele din fisierul input2.txt intr-un vector. Daca exista un');

writeln('cuvant de forma ''***'', sa se inlocuiasca cu un cuvant citit de la tastatura');

writeln('si sa se afiseze vectorul obtinut.');

writeln;

i:=0;

while not seekeof(f) do begin

readln(f,s);

s:=s+' ';

while s<>'' do begin

s1:=copy(s,1,pos(' ',s)-1);

delete(s,1,pos(' ',s));

i:=i+1;

v[i]:=s1;

end;

end;

n:=i;

for i:=1 to n do if v[i]='***' then begin

writeln('v[',i,']= ''***'', Dati un cuvant pentru a-l inlocui ');

read(v[i]);

end;

for i:=1 to n do write('v[',i,']= ',v[i],' ');

readln;


close(f);

readln;

meniu1;

end;


procedure prob4;

var f:text;

aux,s,s1:string;

i,j,n:byte;

v:array [1..256] of string[20];

begin

clrscr;

assign(f,'input.txt');

writeln('Sa se citeasca cuvintele dintr-un fisier si sa se introduca in vector. Sa se');

writeln('numere de cate ori apare cuvantul citi de la tastatua');

writeln;

writeln('Fisierul este de forma: ana mereu cumpara mere mai ales mere rosii');

writeln('                        de asemenea ei ii plac si portocalele rosii.');

writeln;

reset(f);

i:=0;

while not seekeof(f) do begin

readln(f,s);

s:=s+' ';

while s<>'' do begin

s1:=copy(s,1,pos(' ',s)-1);

delete(s,1,pos(' ',s));

i:=i+1;

v[i]:=s1;

end;

end;

n:=i;

writeln('Dati un cuvant pentru a-l testa');

writeln;

readln(s);

j:=0;

for i:=1 to n do if s=v[i] then j:=j+1;

writeln;

writeln('Cuvantul ',s,' apare de ',j,' ori');

close(f);

readln;

meniu1;

end;

var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('VECTORI DE SIRURI CARACTERE');

writeln;

gotoxy(25,23);

writeln('1. pentru afisarea cuvantului');

gotoxy(25,24);

writeln('2. pentru cuvintele sortate alfabetic');

gotoxy(25,25);

writeln('3. pentru inlocuire');

gotoxy(25,26);

writeln('4. pentru cautarea unui cuvant');

gotoxy(25,29);

writeln('5. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='6');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':prob4;

'5':meniu;

end;

end;

procedure meniu2;


procedure prob1;

type elev=record

nume:string[20];

media:real;

end;

var a:array[1..100] of elev;  n,i,j,k:byte; aux:elev;

begin

clrscr;

writeln(' Se citesc numele si media elevilor unei clase sa se afiseze elevii in ordine');

writeln('alfabetica');

writeln;

write('Dati nr de elevi: ');

readln(n);

writeln;

writeln('Dati numele si media elevilor ');

for i:=1 to n do begin

readln(a[i].nume);

readln(a[i].media);

end;

for j:=1 to i-1 do

for k:=j+1 to i do if a[j].nume>a[k].nume then begin

aux:=a[j];

a[j]:=a[k];

a[k]:=aux;

end;

writeln('Elevii in ordine alfabetica sunt:');

for i:=1 to n do write(a[i].nume,' ');

readln;

meniu2;

end;


procedure prob2;

type elev=record

nume:string[20];

media:real;

end;

var a:array[1..100] of elev;  n,i,j,k:byte; max:real;

begin

clrscr;

writeln(' Se citesc numele si media elevilor unei clase.Sa se afiseze elevul cu media');

writeln('cea mai mare.');

writeln;

write('Dati nr de elevi: ');

readln(n);

writeln;

writeln('Dati numele si media elevilor ');

for i:=1 to n do begin

readln(a[i].nume);

readln(a[i].media);

end;

max:=0;

for i:=1 to n do if a[i].media>=max then max:=a[i].media;

for i:=1 to n do if a[i].media=max then write(a[i].nume,' ',a[i].media:5:2);

writeln;

readln;

meniu2;

end;


procedure prob3;

type elev=record

nume:string;

media:real;

end;

var a:array[1..100] of elev;  n,i,j,k:byte; aux:real;

begin

clrscr;

writeln(' Se citesc numele si media elevilor unei clase.Sa se afiseze elevii');

writeln('in ordinea mediilor.');

writeln;

write('Dati nr de elevi: ');

readln(n);

writeln;

writeln('Dati numele si media elevilor ');

for i:=1 to n do begin

readln(a[i].nume);

readln(a[i].media);

end;

writeln('Elevii afisati in ordine mediilor sunt: ');

for i:=1 to n-1 do

for j:=i+1 to n do if (a[i].media>a[j].media) then begin

aux:=a[i].media;

a[i].media:=a[j].media;

a[j].media:=aux;

end;

for i:=n downto 1 do

writeln(a[i].nume,' ',a[i].media:5:2);


readln;

meniu2;

end;


procedure prob4;

type elev=record

nume:string[20];

media:real;

end;

var a:array[1..100] of elev;  n,i,j,k:byte; aux:real;

begin

clrscr;

writeln(' Se citesc numele si media elevilor unei clase.Sa se afiseze toti elevii');

writeln('promovati.');

writeln;

write('Dati nr de elevi: ');

readln(n);

writeln;

writeln('Dati numele si media elevilor ');

for i:=1 to n do begin

readln(a[i].nume);

readln(a[i].media);

end;

writeln('Elevii promovati sunt: ');

for i:=1 to n do if a[i].media>=5 then writeln(a[i].nume);

readln;

meniu2;

end;

var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('VECTORI DE ARTICOLE');

writeln;

gotoxy(25,23);

writeln('1. elevii in ordine alfabetica');

gotoxy(25,24);

writeln('2. elevul cu cea mai mare medie');

gotoxy(25,25);

writeln('3. elevii in ordinea mediilor');

gotoxy(25,26);

writeln('4. toti elevii promovati');

gotoxy(25,28);

writeln('5. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='5');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':prob4;

'5':meniu;

end;

end;

procedure meniu3;


procedure prob1;

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

i,n,aux:integer;

g:boolean;

begin

clrscr;

writeln('Sa se sorteze vectorul folosind metoda bulelor');

writeln;

writeln('Dati numarul de elemente ale vectorului');

write('n= ');

readln(n);

writeln;

writeln('Dati valori elementelor vectorului');

for i:=1 to n do begin

write('v[' ,i, ']= ');

readln(v[i]);

end;

repeat

g:=true;

for i:=1 to n-1 do if v[i]>v[i+1] then begin

aux:=v[i];

v[i]:=v[i+1];

v[i+1]:=aux;

g:=false;

end;

until g;

writeln;

writeln('Vectorul sortat este');

for i:=1 to n do write('v[',i,']=',v[i],' ');

readln;

meniu3;

end;



procedure prob2;

var a:array[1..100] of integer;

b:array[-500..500] of word;

x:array[1..100] of integer;

j:byte; i:integer; n:word;

begin

clrscr;

writeln('Sa se sorteze vectorul folosind sortarea prin numarare.');

writeln;

for i:=1 to n do readln(x[i]);

for i:=1 to n do

for j:=i+1 to n do

if x[i]>x[j] then inc(a[i])

else inc (a[j]);

for i:=1 to n do b[a[i]+1]:=x[i] ;

for i:=1 to n do x[i]:=b[i];

for i:=1 to n do writeln(x[i]);

readln;

meniu3;

end;



procedure prob3;

var x:array[1..100] of integer;

i,j:byte;aux,n:integer;

begin

clrscr;

writeln('Sa se sorteze vectorul folosind metoda sortarii prin selectie.');

writeln;

writeln('Dati numarul de elemente ale vectorului');

write('n= ');

readln(n);

writeln;

writeln('Dati valori elementelor vectorului');

for i:=1 to n do begin

write('v[' ,i, ']= ');

readln(v[i]);

end;


for i:=1 to n do

for j:=i+1 to n do

if x[i]<x[j] then begin

aux:=x[i];

x[i]:=x[j];

x[j]:=aux;

end;

for i:=1 to n do readln(x[i]);

meniu3;

end;

var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('VECTORI DE NUMARARE');

writeln;

gotoxy(25,23);

writeln('1. Sortare prin metoda bulelor');

gotoxy(25,24);

writeln('2. Sortare prin numarare');

gotoxy(25,25);

writeln('3. Sortare prin selectie');

gotoxy(25,27);

writeln('4. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='4');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':meniu;

end;

end;


procedure meniu4;

type vect=array[1..100] of integer;

procedure prob1;

var m,o:set of byte; v,w:vect;

n,p:word; i,j:byte;

begin

clrscr;

writeln('Sa se faca intersectia elementelor a doi vectori.');

writeln;

write('Dati dimensiunea vectorului v; n=');

readln(n);

write('Dati elemente pentru vector care se afla in intervalul [10,250]');

writeln;

for i:=1 to n do begin

write('v[',i,']=');

repeat

readln(v[i]);

until (v[i]>=10) and (v[i]<=250);

end;

write('Dati dimensiunea vectorului w; p=');

readln(p);

write('Dati elemente pentru vector care se afla in intervalul [10,250]');

writeln;

for i:=1 to p do begin

write('w[',i,']=');

repeat

readln(w[i]);

until (w[i]>=10) and (w[i]<=250);

end;

writeln;

writeln('Elementele comune ale celor doi vectori sunt ');

m:=[]; o:=[];

for i:=1 to n do m:=m+[v[i]];

for i:=1 to p do o:=o+[w[i]];

m:=m*o;

for i:=10 to 250 do if i in m then writeln(i,' ');

readln;

readln;

meniu4;

end;



procedure prob2;

type vect=array[1..100] of byte;

var m,o:set of byte; v,w:vect; vb:boolean;

n,p:word; i,j:byte;

begin

clrscr;

writeln('Sa se faca reuniunea elementelor a doi vectori.');

writeln;

write('Dati dimensiunea vectorului v; n=');

readln(n);

for i:=1 to n do begin

write('v[',i,']=');

repeat

readln(v[i]);

until (v[i]>=10) and (v[i]<=250);

end;

write('Dati dimensiunea vectorului w; p=');

readln(p);

for i:=1 to p do begin

write('w[',i,']=');

repeat

readln(w[i]);

until (w[i]>=10) and (w[i]<=250);

end;

m:=[];

o:=[];

for i:=1 to n do m:=m+[v[i]];

for i:=1 to p do m:=m+[w[i]];

for i:=10 to 250 do if i in m then writeln(i);

readln;

meniu4;

end;


p

rocedure prob3;

type vect=array[1..100] of byte;

var m,o:set of byte; v,w:vect; vb:boolean;

n,p:word; i,j:byte;

begin

clrscr;

writeln('Sa se faca diferenta a doi vectori.');

writeln;

write('Dati dimensiunea vectorului v; n=');

readln(n);

for i:=1 to n do begin

write('v[',i,']=');

repeat

readln(v[i]);

until (v[i]>=10) and (v[i]<=250);

end;

write('Dati dimensiunea vectorului w; p=');

readln(p);

for i:=1 to p do begin

write('w[',i,']=');

repeat

readln(w[i]);

until (w[i]>=10) and (w[i]<=250);

end;

m:=[];

writeln('Elementele care se gasesc in primul vector si nu se gasesc in cel de al doilea sunt ');

writeln;

for i:=1 to n do m:=m+[v[i]];

for i:=10 to 250 do if i in m then begin

vb:=true;

for j:=1 to p do if i=w[j] then vb:=false;

if vb then writeln(i);

end;

writeln;

writeln;

readln;

meniu4;

end;


procedure prob4;

type vect=array[10..250] of byte;

var o,m:set of byte; v:vect;

i:byte;

n:word;

begin

clrscr;

writeln('Se citeste un vector cu n elemente.Sa se citeasca un element de la tastatura');

writeln('si sa se afle daca acesta apartine vectorului.');

writeln;

write('Dati n= ');

readln(n);

for i:=1 to n do begin

write('v[',i,']=');

readln(v[i]);

end;

for i:=1 to n do m:=m+[v[i]];

write('Dati elementul ');

readln(i);

writeln;

if i in m then write('Da,elementul ',i,' exista in vector')

else write('Nu,elementul ',i,' nu exista in vector');

readln;

meniu4;

end;

var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('VECTORI CE SUGEREAZA TIPUL MULTIME');

writeln;

gotoxy(25,23);

writeln('1. intersectia a doi vectori');

gotoxy(25,24);

writeln('2. reuniunea a doi vectori');

gotoxy(25,25);

writeln('3. diferenta a doi vectori');

gotoxy(25,26);

writeln('4. apartenenta unui element la vector');

gotoxy(25,29);

writeln('6. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='6');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':prob4;

'5':meniu;

end;

end;

procedure meniu5;


procedure prob1;

var a:array[1..100] of integer;

b:array[-500..500] of word;

j:byte; i:integer; n:word;

begin

clrscr;

writeln('Sa se afiseze numerele distincte din vectorul sortatate.');

writeln;

write('Dati nr de elemente ale vectorului n= ');

readln(n);

for i:=-500 to 500 do b[i]:=0;

for i:=1 to n do begin

repeat

write('a[',i,']=');

readln(a[i]);

until (a[i]>-500) and (a[i]<500);

inc(b[a[i]]);

end;

for i:=-500 to 500 do if b[i]<>0 then writeln(i);

readln;

meniu5;

end;



procedure prob2;


var a:array[1..100] of integer;

b:array[-500..500] of word;

j:byte; i:integer; n:word;

begin

clrscr;

writeln('Sa se afiseze ordinul de aparitie al fiecarui element.');

writeln;

write('Dati nr de elemente ale vectorului n= ');

readln(n);

for i:=-500 to 500 do b[i]:=0;

for i:=1 to n do begin

repeat

write('a[',i,']=');

readln(a[i]);

until (a[i]>-500) and (a[i]<500);

inc(b[a[i]]);

end;

for i:=-500 to 500 do if b[i]<>0 then writeln(i,' apare ',b[i],' ori ');

readln;

meniu5;

end;


procedure prob3;

var a:array[1..100] of integer;

b:array[-500..500] of word;

j:byte; i:integer; n:word;

begin

clrscr;

writeln('Sa se afiseze care numar apare o singura daca in vector.');

writeln;

write('Dati nr de elemente ale vectorului n= ');

readln(n);

for i:=-500 to 500 do b[i]:=0;

for i:=1 to n do begin

repeat

write('a[',i,']=');

readln(a[i]);

until (a[i]>-500) and (a[i]<500);

inc(b[a[i]]);

end;

writeln('Numerele care apar o singura daca in vector sunt: ');

for i:=-500 to 500 do if b[i]=1 then writeln(i);

readln;

meniu5;

end;


var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('VECTORI CARACTERISTICI');

writeln;

gotoxy(25,23);

writeln('1. numerele distincte din vector');

gotoxy(25,24);

writeln('2. ordinul de aparitie al elementelor');

gotoxy(25,25);

writeln('3. elementele care apar o singura data in vector');

gotoxy(25,27);

writeln('4. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='4');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':meniu;

end;

end;

procedure meniu6;


procedure prob1;

var a:array[1..100] of integer;

val:integer;

f:text;

i,j:byte; n:integer;

begin

clrscr;

writeln('Sa se sorteze un fisier apoi sa se afiseze.');

writeln;

assign(f,'numere.txt');

reset(f);

writeln;

i:=0;

while not seekeof(f) do begin

inc(i);

read(f,val);

a[i]:=val;

end;

n:=i;

for i:=1 to n-1 do

for j:=i+1 to n do if a[i]>a[j] then begin

val:=a[i];

a[i]:=a[j];

a[j]:=val;

end;

writeln('Fisierul sortat este ');

for i:=1 to n do write(a[i],' ');

rewrite(f);

for i:=1 to n do write(f,a[i],' ');

close(f);

readln;

writeln;

writeln;

writeln('Dupa vizualizare apasati ENTER');

meniu6;

end;



procedure prob2;

var a:array[1..100] of integer;

val:integer;

f:text;

i,j,k:byte; n:integer;

begin

clrscr;

writeln('Sa se afiseze cele mai mici k numere din fisier.');

writeln;

assign(f,'numere.txt');

reset(f);

writeln('Dati numarul de numere care doriti sa fie afisate ');

readln(k);

gotoxy(1,3);

writeln;

i:=0;

while not seekeof(f)do begin

inc(i);

read(f,val);

a[i]:=val;

end;

n:=i;

for i:=1 to n-1 do

for j:=i+1 to n do if a[i]>a[j] then begin

val:=a[i];

a[i]:=a[j];

a[j]:=val;

end;

for i:=1 to k do writeln(a[i]);

close(f);

readln;

writeln;

writeln;

writeln('Dupa vizualizare apasati ENTER');

meniu6;

end;


procedure prob3;

var a:array[1..100] of integer;

val:integer;

f:text;

i,j,k:byte;aux, n:integer;

x:longint;

begin

clrscr;

writeln(' Se citeste un numar.Sa se afiseze cel mai mare numar');

writeln('care se poate forma din cifrele sale.'


assign(f,'numere2.txt');

reset(f);

read(f,x);

writeln;

i:=0;

while x<>0 do begin

if x mod 10<>0 then begin

inc(i);

a[i]:=x mod 10;

end;

x:=x div 10;

end;

n:=i;

writeln('Numarul din fisier este de forma ');

for i:=1 to n do write(a[i]);

for i:=1 to n-1 do

for j:=i+1 to n do if a[i]>a[j] then begin

aux:=a[i];

a[i]:=a[j];

a[j]:=aux;

end;

writeln;

writeln;

writeln('Cel mai mare numar care se poate forma este ');

for i:=n downto 1 do write(a[i]);

readln;

meniu6;

end;

var c:char;

begin

clrscr;

gotoxy(24,20);

writeln('PROBLEME FISIERE');

writeln;

gotoxy(25,23);

writeln('1. sortare fisier');

gotoxy(25,24);

writeln('2. cele mai mici numere din fisier');

gotoxy(25,25);

writeln('3. cel mai mare numar din cifrele unui numar');

gotoxy(25,27);

writeln('4. Intoarcere la meniul principal');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='4');

case c of

'1':prob1;

'2':prob2;

'3':prob3;

'4':meniu;

end;

end;

procedure help;

begin

clrscr;

textcolor(white);

writeln;

writeln;

writeln;

writeln('   Acesta este meniul Help,un meniu cu date exacte despre componenta');

writeln('programului.Acest meniu va poate ajuta in cazul in care doriti o privire');

writeln('de ansamblu asupra intregului program,de asemenea acesta contine si toate');

writeln('indicatiile necesare pentru a ajunge in orice loc din program.');

writeln('   Programul Probleme speciale rezolvate cu ajutorul vectorilor ,scris in');

writeln('limbajul Borland Pascal,este format dintr-o multitudine de probleme,impartite');

writeln('in mai multe categorii,fiecare categorie continand un minimum de 3 probleme.');

write('   Meniu principal');

textcolor(green);

write(' MENIU');

textcolor(white);

writeln(' este format din 8 submeniuri fiecare putand fi accesat executand urmatoarele instructiuni:');

writeln;

writeln;

write('   Apasati tasta ');

textcolor(green);

write('1');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' VECTORI CU SIRURI DE CARACTER');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('2');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' VECTORI DE ARTICOLE');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('3');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' VECTORI DE NUMARARE');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('4');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' VECTORI CE SUGEREAZA TIPUL MULTIME');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('5');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' VECTORI CARACTERISTICI');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('6');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' PROBLEME CU FISIERE REZOLVATE');

writeln('                                                      CU AJUTORUL VECTORILOR');

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('7');

textcolor(white);

write(' pentru a intra in meniul');

textcolor(green);

write(' HELP');

writeln;

writeln;

textcolor(white);

write('   Apasati tasta ');

textcolor(green);

write('8');

textcolor(white);

write(' pentru ');

textcolor(green);

write('IESIRE DIN PROGRAM ');

textcolor(white);

writeln;

writeln;

writeln('  Primul submeniu contine 4 probleme cu siruri de caracatere');

writeln('acestea putand fi accesate prin tastarea cifrei corespunzatoare.');

writeln(' Al doilea submeniu contine 4 probleme cu vectori de articole');

writeln('acestea putand fi accesate prin tastarea cifrei corespunzatoare.');

writeln(' Al treilea submeniu contine 3 probleme cu 3 tipuri diferite de ');

writeln('sortare a vectorilor.');

writeln(' Al patrulea submeniu este format din 4 probleme de tipul set of');

writeln('acestea putand fi accesate prin tastarea cifrei corespunzatoare');

writeln(' Al cincicelea submeniu are in compozitie 3 probleme cu vectorul ');

writeln('caracteristic si pot fi accesate tastand cifra corespunzatoare.');

writeln(' Al saselea submeniu contine 3 probleme cu fisiere care se rezolva');

writeln('cu vectori si pot fi accesate prin tastarea cifrei corespunzatoare.');

readln;

meniu;

end;

var c:char;

begin

clrscr;

textcolor(7);

gotoxy(37,20);

writeln('MENIU');

writeln;

gotoxy(23,23);

writeln('1. Vectori cu siruri de caractere');

gotoxy(23,24);

writeln('2. Vectori de articole');

gotoxy(23,25);

writeln('3. Vectori de numarare');

gotoxy(23,26);

writeln('4. Vectori ce sugereaza tipul multime');

gotoxy(23,27);

writeln('5. Vectori caracteristici');

gotoxy(23,28);

writeln('6. Probleme cu fisiere rezolvate cu ajutorul vectorilor');

gotoxy(23,29);

writeln('7. Help');

gotoxy(23,31);

writeln('8. Iesire');

writeln;

repeat

c:=readkey;

until (c>='1') and (c<='8');

case c of

'1':meniu1;

'2':meniu2;

'3':meniu3;

'4':meniu4;

'5':meniu5;

'6':meniu6;

'7':help;

'8':halt;

end;

end;

Programul principal

begin

meniu;

readln;

end.





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright