Sie sind auf Seite 1von 16

Introducere

Un algoritm este o metod de rezolvare a unei probleme printr-un numr finit de pai. Printr-un pas se nelege o operaie executabil de ctre un operator. Putem spune c un algoritm seamn cu un proces de calcul (un complex de operaii), cu o reet. Nu orice proces de calcul este un algoritm. Un program de calculator este un complex de instruciuni scrise ntr-un anumit limbaj numit limbaj de programare ce transcriu operaiile dintr-un algoritm pentru operator. Instruciunile unui limbaj de programare trebui s fie neles att pentru programator ct i pentru operator. Proprietile algoritmilor generalitatea (pentru rezolvarea mai multor probleme din aceeai sfer) finitudinea determinismul (s cuprind toate cazurile posibile) unicitatea (la aceleai intrri s obin aceleai ieiri dar prelucrarea s fie unic) claritatea/precizia (la orice operaie executat s se tie ce operaie urmeaz) Din punct de vedere structural un algoritm cuprinde urm. etape: iniializarea prelucrarea furnizarea rezultatelor Un algoritm are 0 sau mai multe date de intrare. Aceste date se mai numesc i date iniiale. Operatori logici: AND, OR, NOT, >, <, <> Algoritmii, n principal cei pentru prelucrarea datelor, pot fi exprimai n diferite modaliti: text liber, pseudocod, schem logic, limbaj de programare. Algoritmii sunt n special pentru prelucrare automat a datelor. constante variabile Prezentarea unui algoritm: text schem logic pseudocod limbaj de programare Structuri de date Organizare datelor este un proces cu urm. activiti: identificarea datelor clasificarea i descrierea proprietilor sau caracteristicile datelor gruparea datelor n colecii de date destinate prelucrrii reprezentarea extern pe suportul tehnic al datelor identificarea, definirea i descrierea procedurilor de preluare i stocare a datelor

n calculator datele sunt memorate pe supori de memorie extern sub forma unor colecii de date uniform structurate, numite fiiere. Organizarea uniform se face prin nregistrri. De regul toate nregistrrile dintr-un fiier n aceeai zon: gsim acelai tip de dat. Modalitatea structurrii nregistrrilor o tie doar programatorul n cazul unui fiier. Tabela este un fiier care conine colecii de date dar i structura nregistrrilor. n funcie de obiectele pe care le reprezint datele se clasific: date elementare sau scalare (entiti indivizibile) colecii de date (mulime de date elementare ntre care se definesc i se descriu anumit relaii) I. Datele elementare pot fi tratate sub 2 aspecte: Nivelul fizic ce corespunde modului de organizare i reprezentare intern a datelor. O dat elementar se memoreaz ntr-o zon de memorie situat la o anumit adres. Ea poate conine date numerice, alfanumerice sau de un tip declarat fiind reprezentate n cod binar. n acest caz cea mai mic unitate de adresare fiind bitul. Nivelul logic ce corespunde modului de organizare i prelucrare a datelor de ctre utilizatori. Pentru identificarea unic a datelor utilizatorul va specifica pentru fiecare urm. elemente: identificatorul de dat sau numele asociat datei. mulimea valorilor pe care le poate lua data respectiv n procesul prelucrrii. verificarea ncadrrii n domeniul de valori (modelele de validare) atribute: tipul datei (numeric, simpl, vector,...), precizia de reprezentare intern a datei (pentru numere reale exist reprezentare cu simpl sau dubl precizie), alte caracteristici (alinierea, modalitatea de alocare a memoriei asociate datei,...) II. Se numete structur de date o colecie de date pentru s-a definit un mecanism de selectare i identificare a componentelor. Pe baza acestor mecanisme sau n ele se pot introduce relaii care s asigure ordonarea datelor dup criteriile dorite i s faciliteze n acest mod prelucrarea lor. ntre date exist relaii ce se pot grupa n 2 categorii: Apartenena datelor la entitate. Legturile dintre entitile de acelai tip sau de tipuri diferite Din alt punct de vedere o structur de date poate fi: Secvenial (localizarea unei componente se face prin parcurgerea tuturor componentelor care se afl naintea sa n ordinea existent) Cu acces direct (dac o component din structur poate fi localizat fr a ine cont de celelalte componente) Componentele unei structuri date pot fi: Date elementare Structuri de date Dup tipul componentelor structurile se pot grupa n: structuri de date omogene (conin componente de acelai tip) structuri de date eterogene (cu componente de tipuri diferite) La fel ca i datele elementare structuri de date pot fi reprezentate att n memoria intern ct i n memoria extern:

fiierul (colecie de date uniform structurat pe baza unor elemente de structur numite nregistrri) baz de date (colecie de fiiere i tabele mpreun cu un mecanism de gestionarea lor numit sistem de gestiune a bazelor de date- SGBD) banca de date (o colecie de baze de date mpreun cu toate elementele implicate n gestionarea ei constnd n echipamente, module soft, for de munc, suport financiar,...)

Din punct de vedere a modului de alocare a zonelor de memorie: structuri de date statice (alocarea zonei de memorie se face n momentul compilrii i nu se schimb) structurile de date dinamice (alocarea zonei de memorie se face numai n momentul executrii modulului care utilizeaz aceasta, aceste zone putnd fi modificate, eliberate, realocate pe toat durata de execuie a programului respectiv). Se numete tip de structur o mulime ordonat de date ntre care s-a stabilit o relaie (sau mai multe) i care folosete pentru realizarea operaiilor specifice structurii, un grup de operatori de baz cu o anumit semantic. Noiuni privind limbajele de programare Limbaj de programare este un ansamblu de simboluri, cuvinte, instruciuni si semnificaii atribuite acestora, utilizat pentru descrierea algoritmilor, inteligibil(accesibil) att operatorului uman cit si executantului. Transcrierea unui algoritm este un program. Programul este o succesiune de instruciuni, aparinnd unui limbaj de programare prin care se descriu operaiile si ordinea de executare a acestora pentru rezolvarea automata a unei probleme date(pentru transcrierea unui algoritm). Avem mai multe tipuri de limbaje de programare: Limbaje procedurale(limbaje universale) deoarece nu sunt limitate la un anumit tip de probleme, SGBD Limbaje de programare pe obiecte (orientate spre obiecte) Orice limbaj de programare presupune definirea urmtoarelor: Alfabetul Gramatica Vocabularul Punctuaia Semantica Alfabetul mulimea caracterelor alfabetice, numerice, speciale. Vocabularul dat de totalitatea cuvintelor folosite de limbajul de programare Cuvintele pot fi: 1. cuvinte rezervate acestea au o semnificaie prestabilita pentru limbajul de programare(funcii, proceduri etc.) Cuvintele rezervate se mai numesc si cuvinte cheie. Atunci cnd sunt obligatorii in cadrul unor elemente de limbaj (instruciuni, pri ale programului). Anumite limbaje mai utilizeaz si cuvinte rezervate opionale.

2. cuvinte utilizator - sunt de fapt identificatorii(nume pentru constante, variabile, fiiere, proceduri etc.) cuvintele utilizator trebuie sa respecte anumite reguli de constituire cum ar fi sa nceap cu o litera, sa nu conin anumite caractere speciale, fiecare limbaj precizeaz de regula ce caractere pot sa conin identificatorii. Spre exemplu: NR_CRT , nu NR-CRT. Gramatica - cuprinde sintaxa si morfologia 1. sintaxa - metoda de formare a propoziiilor si frazelor, instruciunilor 2. morfologia cuprinde ansamblul regulilor de modificare a formei cuvintelor. Punctuaia - reprezint un ansamblu de reguli privind utilizarea semnelor speciale numite de punctuaie conform prevederilor din sintaxa. Semantica definete sensul atribuit cuvintelor si instruciunilor. In general prima forma a unui program este obinuta prin intermediul unui modul al limbajului de programare numit EDITOR program sursa. Unele limbaje de programare accepta si alte editoare pentru realizarea programelor sursa.

Observaie : marea majoritate a programelor surse sunt sub forma unui fiier text. De la programul sursa, pentru executarea unui program se trece la o forma mult mai apropiata de sistemul de operare si de maina pe care se dorete sa se lucreze. Compilare procedura software care realizeaz traducerea programului sursa in cod intern rezultnd aa zisul program obiect. Elementele ale limbajului de programare Pascal. Pascalul face parte din categoria limbajelor de programare de nivel nalt, procedural, folosind cu succes recomandrile date de teoria programrii structurate. O mulime ordonata de instruciuni asociate unui algoritm de programare accesibile unui operator. Instruciunea reprezint exprimarea in forma riguroasa impusa de limbajul de programare a unei operaii si precizeaz funcia sau operaia si operatorii

S se determine un algoritm eficient prin care s se preia elementele unei matrice de n linii i m coloane de numere reale. S se determine minimul., maximul pentru fiecare linie i coloan i la nivel de matrice cu poziiile acestor valori. S se determine media elementelor nenule pentru fiecare linie, coloan i la nivel de matrice. OBS.: una din condiiile ca algoritmul s fie eficient este ca parcurgerea elementelor matricei s se fac de ct mai puine ori. n final se vor afia toate rezultatele obinute.
type inreg=record suma=record x,y:integer; end;

s:real; nr:integer; end; var n,m,i,j,t,p,nr:integer; a:array[1..50,1..50]of real; poz_xl,poz_xc,poz_nl,poz_nc:array[1..50,1..50]of integer; poz_max,poz_min:array[1..50]of inreg; max_l,max_c,min_l,min_c:array[1..50]of real; nrmax_l,nrmax_c,nrmin_l,nrmin_c,nrmax,nrmin:array[1..50]of integer; max,min,s:real; sl,sc:array[1..50]of suma; begin write('nr. linii:');readln(n); write('nr. coloane:');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']:');readln(a[i,j]);end; for i:=1 to n do begin max_l[i]:=a[i,1];min_l[i]:=a[i,1]; nrmax_l[i]:=1;nrmin_l[i]:=1; poz_xl[i,nrmax_l[i]]:=1;poz_nl[i,nrmin_l[i]]:=1; if a[i,1]<>0 then begin sl[i].s:=sl[i].s+a[i,1]; sl[i].nr:=sl[i].nr+1 end; for j:=2 to m do begin if max_l[i]<a[i,j] then begin max_l[i]:=a[i,j]; nrmax_l[i]:=1; poz_xl[i,nrmax_l[i]]:=j end else if max_l[i]=a[i,j] then begin nrmax_l[i]:=nrmax_l[i]+1; poz_xl[i,nrmax_l[i]]:=j end; if min_l[i]>a[i,j] then begin min_l[i]:=a[i,j]; nrmin_l[i]:=1; poz_nl[i,nrmin_l[i]]:=j end else if min_l[i]=a[i,j] then begin nrmin_l[i]:=nrmin_l[i]+1; poz_nl[i,nrmin_l[i]]:=j end; if a[i,j]<>0 then begin

end; end; for j:=1 to m do begin max_c[j]:=a[1,j];min_c[j]:=a[1,j]; nrmax_c[j]:=1;nrmin_c[j]:=1; poz_xc[j,nrmax_c[j]]:=1;poz_nc[j,nrmin_c[j]]:=1; if a[1,j]<>0 then begin sc[j].s:=sc[j].s+a[1,j]; sc[j].nr:=sc[j].nr+1 end; for i:=2 to n do begin if max_c[j]<a[i,j] then begin max_c[j]:=a[i,j]; nrmax_c[j]:=1; poz_xc[j,nrmax_c[j]]:=i end else if max_c[j]=a[i,j] then begin nrmax_c[j]:=nrmax_c[j]+1; poz_xc[j,nrmax_c[j]]:=i end; if min_c[j]>a[i,j] then begin min_c[j]:=a[i,j]; nrmin_c[j]:=1; poz_nc[j,nrmin_c[j]]:=i end else if min_c[j]=a[i,j] then begin nrmin_c[j]:=nrmin_c[j]+1; poz_nc[j,nrmin_c[j]]:=i end; if a[i,j]<>0 then begin sc[j].s:=sc[j].s+a[i,j]; sc[j].nr:=sc[j].nr+1 end; end; end; max:=max_l[1]; min:=min_l[1]; for i:=2 to n do begin if max<max_l[i] then max:=max_l[i]; if min>min_l[i] then min:=min_l[i]; end; t:=0;p:=0; for i:=1 to n do if max=max_l[i] then for j:=1 to nrmax_l[i] do begin t:=t+1; poz_max[t].x:=i; poz_max[t].y:=poz_xl[i,j] end; for i:=1 to n do

sl[i].s:=sl[i].s+a[i,j]; sl[i].nr:=sl[i].nr+1 end;

if min=min_l[i] then for j:=1 to nrmin_l[i] do begin p:=p+1; poz_min[p].x:=i; poz_min[p].y:=poz_nl[i,j] end; for i:=1 to n do begin writeln('maximul pe linia <',i,'> este:',max_l[i]:5:2,' // minimul pe linia <',i,'> este:',min_l[i]:5:2); write('pozitiile maximului: '); for j:=1 to nrmax_l[i] do if poz_xl[i,j]<>0 then write(poz_xl[i,j],' '); write('// pozitiile minimului: '); for j:=1 to nrmin_l[i] do if poz_nl[i,j]<>0 then write(poz_nl[i,j],' '); end; for i:=1 to m do begin writeln('maximul pe coloana <',i,'> este:',max_c[i]:5:2,' // minimul pe coloana <',i,'> este:',min_c[i]:5:2); write('pozitiile maximului: '); for j:=1 to nrmax_c[i] do if poz_xc[i,j]<>0 then write(poz_xc[i,j],' '); write('// pozitiile minimului: '); for j:=1 to nrmin_c[i] do if poz_nc[i,j]<>0 then write(poz_nc[i,j],' '); end; writeln('maximul pe matrice:',max:5:2); write('pozitiile maximului: '); for i:=1 to t-1 do write(poz_max[i].x,' ',poz_max[i].y,','); write(poz_max[t].x,' ',poz_max[t].y); writeln('minimul pe matrice:',min:5:2); write('pozitiile minimului: '); for i:=1 to p-1 do write(poz_min[i].x,' ',poz_min[i].y,','); write(poz_min[p].x,' ',poz_min[p].y); s:=0;nr:=0; for i:=1 to n do if sl[i].s<>0 then begin writeln('media pe linia <',i,'> este:',sl[i].s/sl[i].nr:5:2); s:=s+sl[i].s; nr:=nr+sl[i].nr end else writeln('nu exista elemente nenule pe linia <',i,'>'); for i:=1 to m do if sc[i].s<>0 then writeln('media pe coloana <',i,'> este:',sc[i].s/sc[i].nr:5:2) else if s<>0 then writeln('media elem nenule pe matrice este:',s/n:7:2) else writeln('nu exista elemente nenule in matrice'); readln

end.

Se citesc de la tastatur 2 vectori v1 de n elemente i v2 de m elemente. S se fac un algoritm eficient i structurat reprezentat printr-o schem logic i limbaj de programare, Care s rezolve urmtoarele operaii: sortarea vectorul v1 prin interschimbare (metoda bulelor), sortarea vectorului v2 prin metoda seleciei (minim, maxim i locurile lor). Interclasarea celor 2 vectori i afiarea att a vectorului v3 rezultat, ct i a poziiilor iniiale pentru fiecare valoare a acestuia n vectorii de provenien v1, v2., dup memorarea acestora. S se afieze de asemenea vectorul v1 n forma iniial i forma ordonat i v2 la fel.

type vector=record n,o,v,p:integer; end; var v1,v2,v3:array[1..50]of vector; n,m,i,j,k,x,p,u,tmp,min,max,nrmin,nrmax:integer; ok:boolean; pozmax,pozmin:array[1..50]of integer; begin write('nr elemente v1:');readln(n); for i:=1 to n do begin write('v1[',i,']=');readln(v1[i].n); v1[i].o:=v1[i].n;v1[i].p:=i end; write('nr elemente v2:');readln(m); for j:=1 to m do begin write('v2[',j,']=');readln(v2[j].n); v2[j].o:=v2[j].n;v2[j].p:=j end; ok:=true; while ok<>false do begin ok:=false; for i:=1 to n-1 do if v1[i].n>v1[i+1].n then begin tmp:=v1[i].n; v1[i].n:=v1[i+1].n; v1[i+1].n:=tmp; ok:=true end end; p:=1;u:=m; while (p<u) do begin for i:=p+1 to u do if min>v2[i].n then begin min:=v2[i].n; nrmin:=1; pozmin[nrmin]:=i end else if min=v2[i].n then begin nrmin:=nrmin+1; pozmin[nrmin]:=i

end; j:=1; for i:=p to p+nrmin-1 do begin tmp:=v2[i].n; v2[i].n:=v2[pozmin[j]].n; v2[pozmin[j]].n:=tmp; j:=j+1 end; p:=p+nrmin; max:=v2[p].n;nrmax:=1;pozmax[nrmax]:=p; for i:=p+1 to u do if max<v2[i].n then begin max:=v2[i].n; nrmax:=1; pozmax[nrmax]:=i end else if max=v2[i].n then begin nrmax:=nrmax+1; pozmax[nrmax]:=i end; j:=nrmax; for i:=u downto u-nrmax+1 do begin tmp:=v2[i].n; v2[i].n:=v2[pozmax[j]].n; v2[pozmax[j]].n:=tmp; j:=j-1 end; u:=u-nrmax; end; k:=0;i:=1;j:=1; while (i<=n)and(j<=m) do begin k:=k+1; if v1[i].n<v2[j].n then begin v3[k].n:=v1[i].n; v3[k].p:=i;v3[k].v:=1; i:=i+1 end else begin v3[k].n:=v2[j].n; v3[k].p:=j;v3[k].v:=2; j:=j+1 end end; if i>m then for tmp:=j to m do begin k:=k+1;v3[k].n:=v2[tmp].n; v3[k].p:=tmp;v3[k].v:=2; end else for tmp:=i to n do begin k:=k+1;v3[k].n:=v1[tmp].n; v3[k].p:=tmp;v3[k].v:=1; end; write('v1 ordonat : '); for i:=1 to n do write(v1[i].n,' '); writeln;write('v1 initial : '); for i:=1 to n do write(v1[i].o,' ');

write('v2 ordonat : '); for i:=1 to m do write(v2[i].n,' '); writeln;write('v2 initial : '); for i:=1 to m do write(v2[i].o,' '); write('v3 ordonat : '); for i:=1 to k do write(v3[i].n,' '); for i:=1 to k do writeln('elementul [',i,'] din v3 se afla in vectorul <<v',v3[i].v,'>> pe pozitia [',v3[i].p,']'); readln end.

Problema 3. S se calculeze suma elementelor de rang impar ale unui vector de dimensiune n dat. Elementele vectorului sunt numere reale i se introduc de la tastatur.
var x:array[1..100]of real; n,i:byte; s:real; begin write('dimensiunea vectorului ');readln(n); for i:=1 to n do begin write('x[',i,']=');readln(x[i]) end; s:=0; for i:=1 to n do if odd(i) then s:=s+x[i]; writeln('suma = ',s:10:2) end. schema logic

cod

START

citeste n

citeste x[i], i=1,n

s=0 i=1

NU i=impar

DA

s=s+x[i] i=i+1

DA i<=n

scrie s

STOP

Problema 4 Determinarea ultimei apariii a unei valori date ntr-un vector neordonat, de dimensiune n. cod
var x:array[1..100]of real; n,i,poz:byte; a:real; begin write('dimensiunea vectorului ');readln(n); for i:=1 to n do begin write('x[',i,']=');readln(x[i]) end; write('valoarea cautata ');readln(a); poz:=0; for i:=1 to n do if x[i]=a then poz:=i; if poz<>0 then writeln('pozitia = ',poz) else writeln('valoare negasita') end. schema logic

START

citeste n,v

citeste x[i], i=1,n

poz:=0 i:=1

i=n DA x[i]=v poz:=i

i=i+1 NU poz=0 scrie 'nu exista' scrie poz DA

STOP

Problema 5 Determinarea elementului maxim dintr-un vector i a tuturor apariiilor sale.


cod var x:array[1..100]of real; poz:array[1..100]of byte; n,i,poz:byte; max:real; begin write('dimensiunea vectorului ');readln(n); for i:=1 to n do begin write('x[',i,']=');readln(x[i]) end; max:=x[1];k:=1;poz[k]:=1; for i:=2 to n do if x[i]>max then begin max:=x[i];k:=1;poz[k]:=i end else if x[i]=max then begin k:=k+1;poz[k]:=i end; write('maximul este ',max:10:2,' pe pozitiile '); for i:=1 to k do write(poz[i],' ') end.

schema logic
START

citeste n

citeste x[i], i=1,n max:=x[1]; k:=1; poz[k]:=1; i:=2

DA i<=n NU x[i]>max NU NU x[i]=max DA max:=x[i]; k:=1 poz[k]:=i; DA

k:=k+1 poz[k]:=i;

i=i+1 scrie 'maximul este',max,'pe pozitiile',poz[i],i=1,k

STOP

Problema 6 Suma elementelor unei matrice dreptunghiulare, de dimensiune m*n. cod

var a:array[1..10,1..20]of real; m,n,i,j:byte; s:real; begin writeln('nr linii');readln(m); writeln('nr coloane');readln(n); for i:=1 to m do for i:=1 to n do begin write('a[',i,',',j,]='); readln(a[i,j]) end; s:=0; for i:=1 to m do for j:=1 to n do s:=s+1a[i,j]; writeln('suma',s) end.

schema logic

START scrie 'nr. linii'

citeste m scrie 'nr coloane'

citeste n

citeste a[i,j]; i=1,m; j=1,n

s:=0 i=1

DA i<=m j=1 NU DA j<=n s:=s+a[i,j] j:=j+1

NU i=i+1 scrie 'suma=',s

STOP

Problema 7 Determinarea elementelor maxim i minim dintr-o matrice dreptunghiulara, de dimensiune m*n. cod
var a:array[1..10,1..20]of real; m,n,i,j:byte; min,max:real; begin writeln('nr linii');readln(m); writeln('nr coloane');readln(n); for i:=1 to m do for i:=1 to n do begin write('a[',i,',',j,]='); readln(a[i,j]) end; max:=a[1,1];min:=max; for i:=1 to m do for j:=1 to n do if a[i,j]>max then max:=a[i,j] else if a[i,j]<min then min:=a[i,j]; writeln('maximul=',max:10:2); writeln('minimul=',min:10:2) end.

schema logic
START scrie 'nr. linii'

citeste m scrie 'nr coloane'

citeste n

citeste a[i,j]; i=1,m; j=1,n

max:=a[1,1]; min:=max; i:=1; DA i<=m j=1 NU DA j<=n NU NU a[i,j]<min NU min:=a[i,j] a[i,j]>max DA max:=a[i,j] DA

j=j+1 scrie max,min i=i+1

STOP

Problema 8 La o petrecere ntre prieteni, Alin sugereaz s-l sune la telefon pe Ctlin pentru a participa i el la acest ... eveniment. Alin a reuit s strng urmtoarele informaii: 1. numrul are 7 cifre 2. a doua jumtate a numrului (ultimile trei cifre) este de 4ori mai mare dect numrul format cu cifre de pe poziiile 2, 3, 4 3. dou cifre (a patra i a cincea) sunt identice 4. a treia cifr este dublul celei de-a doua, iar suma acestora este egal cu prima cifr 5. a patra cifr este dublu celei de-a treia sau a doua cifr mrit cu2. Care este numrul lui Ctlin? rezolvare 1. 7 cifre abcdefg 2. efg=4*bcd 3. d=e

4. c=2*b 5. c+b=a 6. d=2*c si d=2+c Din 6. rezulta c=2, d=4. Din 3. rezulta e=4. Din 4. rezulta b=1. Din 5. rezulta a=3. Numarul este 31244fg. Din 1. efg=4*bcd => efg=4*124 => efg = 496. Deci numarul este 3124496 Problema 9 ntr-o diminea patru biei Mircea, Dan, Cosmin si Rzvan jucau fotbal n curtea colii, dar dintr-o greeal mingea a spart un geam. A aprut directorul colii i a pus o serie de ntrebri la care a primit urmtoarele raspunsuri: Mircea : 1. Eu nu am lovit mingea cnd s-a spart fereastra. 2. A fost ideea lui Rzvan s jucam aici. 3. Cosmin este vinovat. Dan : 4. Eu nu am spart nici o fereastr. 5. Cosmin a fcut-o. 6. Joc mult mai bine fotbal dect Rzvan. Cosmin : 7. Nu este vina mea. 8. Dac tiam c va sfri aa, nu ncepeam jocul aici. 9. Nu am nimic de-a face cu Mircea. Rzvan : 10. Nu am fcut nici un ru ferestrei. 11. A fost Cosmin. 12. Cnd am ajuns aici, ei jucau deja. Directorul, punnd i alte ntrebri, a neles c bieii au spus cte o minciun. Cine a spart fereastra ? rezolvare

Cosmin nu a spart fereastra, altfel 5) i 11) sunt minciuni i deci 4)+6) i 10)+12) sunt adevrate ceea ce nseamn c Dan i Rzvan nu au spart fereastra. 2) este n contradicie cu 12) care era adevrat deci 2) este fals => 1) i 3) adevrate. Deci nici Mircea nu a spart fereastra. Singurul rmas este Cosmin, dar contradicie cu ipoteza fcut.

Das könnte Ihnen auch gefallen