Tastaturi



Yüklə 247,05 Kb.
səhifə4/4
tarix02.03.2018
ölçüsü247,05 Kb.
#43636
1   2   3   4

CAPITOLUL 12

Probleme

Problema nr. 1

Sa se prezinte sub forma de chema logicã şi instrucţiunea unui limbaj de programare sau pseudocod un algoritm eficient care sã determine pentru o matrice de n linii şi m coloane a cãrei elemente se citesc de la tastaturã urmãtoarele:

a) media aritmeticã a elementelor de pe fiecare linie

b) media aritmetica a elementelor de pe fiecare coloanã

c) valoarea elem. maxim şi locul în care acesta se aflã de pe fiecare linie

d) valoarea elem. maxim şi locul în care acesta se aflã de pe fiecare coloanã

e) valoarea elem. minim şi locul în care acesta se aflã de pe fiecare linie

f) valoarea elem. minim şi locul în care acesta se aflã de pe fiecare coloanã

g) elementul maxim la nivel de matrice

h) elementul minim la nivel de matrice

program matricea_de_la_curs;

type matrice=array[1..20,1..20] of integer;

var a:matrice;

max,max2,min,min2,w,z,i,p,maa,m,n,d,e,f,g,minn,maxx,j,s,ma,x,y:integer;

begin


writeln('dati nr de linii şi nr de coloane');

write('n=');

readln(n);

write('m=');

readln(m);

for i:=1 to n do

for j:=1 to m do

begin


writeln('a[',i,',',j,']=');

read(a[i,j]);

end;

a) for i:=1 to n do



begin

s:=0;


for j:=1 to m do

s:=s+a[i,j];

ma:=(s div m);

writeln('media aritmetica pe linia ',i ,'=',ma);

readln;

end;


b) for j:=1 to m do

begin


p:=0;

for i:=1 to n do

p:=p+a[i,j];

maa:=(p div n);

writeln('media aritmetica pe coloana ',j,'= ',maa);

readln;


end;

c) for i:=1 to n do

begin

max:=-3200;



for j:=1 to m do

if a[i,j]>max then

begin

max:=a[i,j];



x:=j;

end;


writeln('maximul liniei ',i,' este elementul a[',i,',',x,'] şi este egal cu ',max);

readln;


end;

d) for j:=1 to m do

begin

max2:=-3200;



for i:=1 to n do

if a[i,j]>max2 then

begin

max2:=a[i,j];



y:=i;

end;


writeln('maximul coloanei ',j,' este elementul a[',y,',',j,'] şi este egal cu ',max2);

readln;


end;

e) for i:=1 to n do

begin

min:=3200;



for j:=1 to m do

if a[i,j]

begin

min:=a[i,j];



w:=j;

end;


writeln('minimul liniei ',i,' este elementul a[',i,',',w,'] şi este egal cu ',min);

readln;


end;

f) for j:=1 to m do

begin

min2:=3200;



for i:=1 to n do

if a[i,j]

begin

min2:=a[i,j];



z:=i;

end;


writeln('minimul coloanei ',j,' este elementul a[',z,',',j,'] şi este egal cu ',min2);

readln;


end;

g) maxx:=-3200;

minn:=3200;

for i:=1 to n do

for j:=1 to m do

if a[i,j]>maxx then

begin

maxx:=a[i,j];



d:=i;

e:=j;


end;

h) for i:=1 to n do

for j:=1 to m do

if a[i,j]

begin

minn:=a[i,j];



f:=i;

g:=j;


end;

writeln('elementul maxim al matricei este a[',d,',',e,']=',maxx);

writeln('elementul minim al matricei este a[',f,',',g,']=',minn);

readln;


end.

SCHEMA LOGICÃ:









Problema nr. 2

Se dã un vector cu n elemente numere întregi. Sã se mute la sfârşitul vectorului elementele sale nule pãstrând ordinea celorlalte elemente.

program ddd;

type vector=array[1..20] of integer;

var v:vector;

n,i,j,k:integer;

begin


write('dati numarul de elemente');

readln(n);

for i:=1 to n do

begin


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

readln(v[i]);

end;

for i:=1 to n-1 do



for j:=i+1 to n do

if v[i]=0 then

begin

k:=v[i];


v[i]:=v[j];

v[j]:=k;


end;

for i:=1 to n do

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

readln;


end.

SCHEMA LOGICÃ:



Problema nr. 3

Să se realizeze un program pentru evaluarea expresiei:

A +B, dacă C≥0

E=

A-B, dacă C<0


Analizând problema dată, se observă că datele de intrare sunt A, B şi C. Algoritmul va testa pe C, şi, în funcţie de valoarea sa, va calcula pe E fie ca A+B, fie ca A-B.

program prg2_pagina_187;

var a,b,c:integer;

e:real;


begin

write('Introduceti valoarea pentru a= ');read(a);

write('Introduceti valoarea pentru b= ');read(b);

write('Introduceti valoarea pentru c= ');read(c);

e:=0;

if (c<0) then e:=(a*a)-b



else

if (c=0) then e:=sqrt((a*a)-b)

else e:=(1/(a*a))-b;

write('E:= ',e:8:2);

readln;

end.


SCHEMA LOGICÃ:

Problema nr. 4

Sa se verifice dacã 2 numere sunt prietene
Doua numere sunt prieten dacã primul numar este = cu suma divizorilor celui de-al doilea mai putin el insusi şi cel de-al doilea este egal cu suma divizorilor primului numar mai putin el insusi

n=220 1+2+4+5+10+11+20+22+44+55+110

m=284 1+2+4+71+142

s1 = suma divizorilor lui n mai putin el insusi

s2 = suma divizorilor lui m mai putin el insusi

n şi m prietene dacã s1=m şi s2=n

program lalala;

var m,n,s1,s2,i:integer;

begin

write('n=');



readln(n);

write('m=');

readln(m);

for i:=1 to n-1 do

if n mod i=0 then s1:=s1+i;

for i:=1 to m-1 do

if m mod i=0 then s2:=s2+i;

if (s1=m) and (s2=n) then writeln('aceste doua numere sunt prietene')

else writeln('din pacate nu sunt prietene');

readln;


end.

SCHEMA LOGICÃ:


Probleme de logicã:


Problema nr. 5:

În această vară, bătrânul Trică a murit, lăsând proprietăţile sale ca moştenire nepotului său Andi, prietenul meu. El a moştenit şi castelul Towertia, bântuit de fantome. Începând cu ora 12 noaptea până dimineaţa se aud în tot castelul două zgomote descifrabile: un cântat duios la vioară şi un râs puternic. Andi a observat anumite obiceiuri:



  • când el cântă la pian şi fantoma nu râde, fantoma care cântă la vioara îşi schimbă activitatea (dacă cânta-tace, dacã tăcea-cântă); altfel ea face în fiecare minut ce făcea în cel precedent;

  • când fereastra este închisă fantoma care râde face ce făcea cealaltă fantomă în minutul precedent (râde dacă cealaltă cântă, tace dacă cealaltă tăcea);

  • când fereastra este deschisă, fantoma care râde face opusul la ceea ce cealaltă făcea în minutul precedent.

Andi vrea să ştie cum să scape de fantome (să le facă să tacă)!
Rezolvare:

  • 3: când fereastra este deschisă, fantoma care râde face opusul la ceea ce cealaltă făcea în minutul precedent.

  • 1: când el cântă la pian şi fantoma nu râde, fantoma care cântă la vioara îşi schimbă activitatea (dacă cânta-tace, dacã tăcea-cântă); altfel ea face în fiecare minut ce făcea în cel precedent;

  • 2: când fereastra este închisă fantoma care râde face ce făcea cealaltă fantomă în minutul precedent (râde dacă cealaltă cântă, tace dacă cealaltă tăcea)

Problema nr. 6

Duminică, Marius şi Radu au fost să vadă la hipodrom cursa de cai. Mai întâi s-au dus să vadă caii. Au făcut pariuri pe primele cinci locuri.

Radu a crezut astfel:



  1. Doodoo; 2) Azur; 3) Elfy; 4)Candy; 5) Emily.

Marius a pariat astfel:

  1. Azur; 2) Emily; 3)Candy; 4)Doodoo; 5) Elfy

Rezultatele au arătat că nici unul nu a căştigat:

1)Marius nu a ghicit locul nici unui cal

2)Marius nu a ghicit nici măcar ordinea a câte doi cai unul după altul

Radu a fost mai aproape de realitate:

3)A ghicit locurile a doi cai;

4)A ghicit ordinea finala a două perechi de cai unul după altul.
Care a fost rezultatul ?





1

2

3

4

5

Radu

Doodoo

Azur

Elfy

Candy

Emily

Marius

Azur

Emily

Candy

Doodoo

Elfy

Urmărind tabelul de mai sus putem afirma că:

Pe locul I nu va fi Doodoo sau Azur

Pe locul II nu va fi Emily

Pe locul III nu va fi Candy

Pe locul IV nu va fi Doodoo

Pe locul V nu va fi Elfy

Deci Doodoo poate fi pe locurile II sau V.


Ordinea este:


1

2

3

4

5

Elfy

Doodoo

Azur

Candy

Emily

Problema nr. 7

Un batranel se duce la piaţã (mai bine statea acasa) sã vândã nişte ouã. Un tânãr neatent l-a îmbrâncit şi coşul a cãzut spãrgând ouãle. vinovatul vrând sã îşi rãscumpere greşeala l-a întrebat :

-Câte ouã au fost în coş?

-Nu-mi aduc aminte, dar ştiu cã dacã le scoteam câte 2,câte 3,câte 4,câte 5 sau câte 6, în coş rãmânea mereu un singur ou, iar dacã le scoteam câte 7 , nu rãmânea nici unul.

Dupã câteva minute de gândire, tânãrul a calculat câte ouã erau.

Tu poţi gãsi numãrul de ouã din coş?


Rezolvare:


  • batrânelul spune cã dacã scotea ouãle câte 7 nu mai rãmânea nici un ou un coş de unde tragem concluzia cã numãrul ouãlor trebuie sã fie un multiplu de 7

  • mai spune cã dacã le scotea câte 2,câte 3,câte 4,câte 5 sau câte 6, în coş rãmânea mereu un singur ou de unde rezultã cã din numãrul care este multiplu de 7 dacã scadem 1 trebuie sã rãmânã un numãr care sã fie divizibil şi cu 2 şi cu 3 şi cu 4 şi cu 5 şi cu 6

  • deci cãutãm un numãr care sã aibe ultima cifrã 1 sau 6

  • astfel 7, 14 sunt excluse

  • incercãm 21:7=3

21-1=20:2=10

20:3 nu este divizibil

- cãutãm în continuare...

- 28, 35, 42, 49 sunt excluse

- verificãm 56:7=8

56-1=55:2 nu este divizibil

- 63, 70, 77, 84 sunt excluse

- continuãm cu 91:7=13

91-1=90:2=45

:3=30


:4=25

:5=18


:6=15

Rezultã cã bãtrânelul avea în coş exact 91 de ouã.



Bibliografie

Manual „Algoritmi şi structuri de date: fundamente ale programãrii structurate” / Cezar Botezatu – Bucureşti : Editura Universitarã, 2004





Yüklə 247,05 Kb.

Dostları ilə paylaş:
1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin