Sunteți pe pagina 1din 16

m m

Ú  
       

     
 
      
 

   
   
    



        
   ! 

        
     "#$    ##

  ##%  
  ##&

   ##$
##'##() #
#* #+ 
  
    
##    ,-   
Romeo şi Julieta    
 


    
 


   


 
 
  

 
    
  
  


 

 
  



     

Clik pentru
.imagini
þpera începe într-o piaţă publică din Verona unde Sampsonsi Geson
poartă discuţii despre ura lor pentru familia Montague. Apoi îşi face apariţia şi
Benvolio care încearcă să-i despartă, dar lupta continuă o dată ce vine şi Tybalt.
Toţi aceştia au fost convinşi să renunţe la conflict de către copiii celor două familii.
Apoi Lady Montague întreabă de Romeo, iar Benvolio şi Montague îşi fac planuri
pentru a-l face să renunţe la iubirea care-l mistuie.
În scena a doua a actului 1, Paris îi spune lui Capulet că vrea să se însoare cu
Julieta, dar acesta nu renunţă usor. Romeo află de la servitorul lui Capulet că va
avea loc o petrecere la palat şi se hotărăşte să participe la aceasta. Julieta este
anunţată de mama sa că Paris doreşte să o ia în căsătorie, dar ea refuză. La
petrecerea organizată de Capulet, Romeo alături de Mercutio, Benvolio şi Tybalt
îşi fac apariţia. Purtând însă măşti, Romeo reuşeşte să vorbească cu aleasa inimii
sale şi chiar să o sărute. După acest moment, cei trei prieteni de care era însoţit
Romeo, află ca acesta s-a strecurat în grădina Capuletilor pentru a vorbi cu
Julieta. În urma acesteia, Romeo pleacă la părintele Lorenzo pentru a-l ruga să-i
cunune pe cei doi îndrăgostiţi.
Mai târziu, cei patru prieteni discută între ei, dar sunt întrerupţi de doica Julietei
care vrea să se asigure că planurile lui Romeo sunt cât se poate de sincere. După
ce află acest lucru, ea îi spune Julietei, care se duce la părintele Lorenzo pentru a
se spovedi. Aici, ea se întâlneşte cu alesul inimii sale cu care se şi cunună.

V     ...


ï   
 
          
  

 !
 " 
   "  
  
  # 
  
  

          "   ï  "     
 
$
%           


      &
  


  
 
'
   
 ( 

 (

  
 


)
 
*  

   # 
      

 
 
$(  
 
  
 "   & 
 
 
  '



  
 
 %  
+
     
 
 
    '
 ï  
'
        
  

   
 +
     

   # 
 
    
    
  
     


 ï   


 '
      
 
$(  

   
  +



 
   

 
 
 
  

       

        (
 ,-  
# (
 

  
   

   


 




  



 
 '
  
 
 

 
  
   
 






 
   
"     

   . ( 

 

        


  
    
    ï   "
'

  


      +
 
   # 
 
  $( 
 /   
   
         "   
. ( /   "(
 
   
 
   
 '
  ( 

("    
 

  

    

 


 

  


 
  
 
    $(       # 
    


   / "   (


        
  
 '


01
 
 



    
  


°      


   
 

 
 
   


  
   


 
  
 

Romeo si Julieta
In ultima ecranizare a celebrei piese shakespeariene Romeo si Julieta
traiesc intr-un oras modern, comunica prin e-mail si chiar invata sa programeze. Intr-
o secventa tulburatoare sunt prezentate framantarile interioare ale celor doi eroi
incercand fara succes sa scrie un program care sa determine un punct optim de
intalnire.
Ei au analizat harta orasului si au reprezentat-o sub forma unei matrice cu n
linii si m coloane, in matrice fiind marcate cu spatiu zonele prin care se poate trece
(strazi lipsite de pericole) si cu 'X' zonele prin care nu se poate trece. De asemenea,
in matrice au marcat cu 'R' locul in care se afla locuinta lui Romeo, iar cu 'J' locul in
care se afla locuinta Julietei.
Ei se pot deplasa numai prin zonele care sunt marcate cu spatiu, din pozitia
curenta in oricare dintre cele 8 pozitii invecinate (pe orizontala, verticala sau
diagonale).
Cum lui Romeo nu ii place sa astepte si nici sa se lase asteptat, ei au
hotarat ca trebuie sa aleaga un punct de intalnire in care atat Romeo, cat si Julieta,
sa poata ajunge in acelasi timp, plecand de acasa. Fiindca la intalniri amandoi vin
intr-un suflet, ei estimeaza timpul necesar pentru a ajunge la intalnire prin numarul
de elemente din matrice care constituie drumul cel mai scurt de acasa pana la
punctul de intalnire. Si cum probabil exista mai multe puncte de intalnire posibile, ei
vor sa il aleaga pe cel in care timpul necesar pentru a ajunge la punctul de intalnire
este minim.

pá   w 
á
 
   w  w 


á

    
w 



á
 w 
á
 

    Ô w 
   
      w  á

w    

ï ï 
°    
rj.in á  
Aww
   

] Ôá
w 

   wá 
á 


 á Ôw

w w

Aw á
  

]   

 á

á á
w  
'R'Ô'J'Ô'X' 

spatiuw 

 á

ï ï
°    rj.out 
á    
  wá
 á    


w

w á
w
tmin x yÔ

   á


Ax y w 
wá  
 x  
   Ôy  
á 
 
Atmin   w   á
  wá  


wá  
 
 

A„ < ] , ” „
A=   á 

 á   
 áw
á„
AV 
   
  

  
Aá
    
    

 
 
 á
 
wá   
 
  

á
 

 

    Ô

 
á
 á
á 

wá  
 
   

  
Kw á


   („,„), (2,2), (3,2)

   (5,3), (4,2), (3,2)
 ww
á  á   tmin=3Ôá   
  (3,2)
‡#include <iostream>
‡#include <fstream>
‡using namespace std;
‡
‡fstream f("rj.in", ios::in);
‡fstream g("rj.out", ios::out);
‡
‡int main()
‡{
‡ char a[101][101]; int dr[101][101] = {0}, dj[101][101] = {0}, c;
‡ int k, xp, yp, xf, yf, m, n, vb, lv, cv, dl[8] = {0, 1, 0, -1, -1, 1, -1, 1}, dc[8] = {1, 0, -1, 0, -1, 1, 1 ,-
1};
‡ //------------------------------//
‡ // Citire variabile
‡ //------------------------------//
‡ f >> n >> m; f.get();
‡ //------------------------------//
‡ // Citire hartă
‡ //------------------------------//
‡ for(int i=1; i<=n; i++)
‡ { f.getline(a[i], 101);}
‡ //------------------------------//
‡ // Deplasare spre dreapta (a matricei) şi citirea poziţiei initiale (R) şi cea finală (J)
‡ //------------------------------//
‡for(int i=0; i<=n; i++)
‡ { for(int j=m; j>0; j--)
‡ {
‡ a[i][j] = a[i][j-1];
‡ if(a[i][j] == 'R')
‡ {xp = i; yp = j;}
‡ else if(a[i][j] == 'J')
‡ {xf = i; yf = j;}
‡ }
‡ }
‡ //------------------------------//
‡ // Bordare matrice
‡ //------------------------------//
‡ for(int j=0; j<=m+1; j++)
‡ {a[0][j]='/'; a[n+1][j]='/';}
‡ for(int i=0; i<=n+1; i++)
‡ {a[i][0]='/'; a[i][m+1]='/';}
‡ //------------------------------//
‡ // Afişare matrice
‡ //------------------------------//
‡ /*for(int i=0; i<=n+1; i++)

‡ { for(int j=0; j<=m+1; j++)


‡ cout << a[i][j] << " ";
‡ cout << endl;
‡ }*/
‡ //------------------------------//
‡ // Determinare traseu R la J
‡ //------------------------------//
‡ k = 1; dr[xp][yp]=k;
‡ //cout << xp << " " << yp << endl << xf << " " << yf << endl;
‡ do
‡ {
‡
‡ vb=0;
‡ for(int i=1; i<=n; i++)
‡ { for(int j=1; j<=m; j++)
‡ {
‡ if(dr[i][j]==k)
‡ {
‡ for(int x=0; x<8; x++)
‡ {
‡ lv = i+dl[x]; cv = j+dc[x];
‡ if(dr[lv][cv]==0 && a[lv][cv]!='X')
‡ {
‡ dr[lv][cv]=k+1;
‡ if(lv==xf && cv==yf)
‡ { /*cout << dr[lv][cv] <<
endl;*/ }
‡ vb=1;
‡ }
‡ }
‡ }
‡ }
‡ }
‡ if(vb) k++;
‡ }while(vb);
‡ //------------------------------//
‡ // Determinare traseu J la R
‡ //------------------------------//
‡ k = 1; dj[xf][yf]=k;
‡ do
‡ {
‡ vb=0;
‡ for(int i=1; i<=n; i++)
‡ { for(int j=1; j<=m; j++)
‡ {
‡ if(dj[i][j]==k)
‡ {
‡ for(int x=0; x<8; x++)
‡ {
‡ lv = i+dl[x]; cv = j+dc[x];
‡ if(dj[lv][cv]==0 && a[lv][cv]!='X')
‡ {
‡ dj[lv][cv]=k+1;
‡ if(lv==xp && cv==yp)
‡ { /*cout << dj[lv][cv] << endl;*/ }
‡ vb=1;
‡ }
‡ }
‡ }
‡ }
‡ }
‡ if(vb) k++;
‡ }while(vb);
‡ //------------------------------//
‡ // Afişare trasee
‡ //------------------------------//
‡ /*for(int i=1; i<=n; i++)
‡ {
‡ for(int j=1; j<=m; j++)
‡ cout << dr[i][j] << " ";
‡ cout << endl;
‡ }cout << endl;
‡ for(int i=1; i<=n; i++)
‡ {
‡
‡ for(int j=1; j<=m; j++)
‡ cout << dj[i][j] << " ";
‡ cout << endl;
‡ }*/
‡ //------------------------------//
‡ // Determinarea punctului de întalnire prin
compararea celor două trasee
‡ //------------------------------//
‡ for(int i=1; i<=n; i++)
‡ {
‡ for(int j=1; j<=m; j++)
‡ {
‡ if(dr[i][j] == dj[i][j] && dr[i][j] != 0
&& dj[i][j] != 0)
‡ {
‡ g << i << " " << j << " " <<
dr[i][j];
‡ system("PAUSE"); // Pauză
‡ return 0; // Ieşire
‡ }
‡ }
‡ }
‡
‡ system("PAUSE"); // Pauză
‡ return 0; // Ieşire
 ï 
_(_ $/)01
_ ( &$)0
&(012$01

S-ar putea să vă placă și