Jump to content

RayoK

Donator
  • Posts

    1585
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by RayoK

  1. =)))))) de asta nu ai luat lider, aa
  2. da frt, dar nu am mai făcut caterincă de mult, până îmi reviin :)))
  3. acel moment când joci minecraft. check taskbar
  4. A fost o glumă, ce cauţi aici dacă nu simţi gustul unei glume?
  5. eu i-am trimis-o junimei..
  6. Poza a fost pusă şi pe Junimea, deci mz <3
  7. "Vechiul meu nou blur"
  8. Se scrie urmatorul cod in Eclipse si se compileaza. Fisierul se numeste Minge.java (vezi aici utilizare Eclipse pentru dezvoltarea aplicaţiilor Java) Atentie! Numele clasei declarate public, coincide cu numele fisierului java (fara extensie) import java.applet.Applet ; import java.awt.Color ; import java.awt.Graphics ; public class Minge extends Applet implements Runnable{ private int x=7, xChange=7; private int y=2, yChange=2; private int diameter=20; private int rectLeftX=0, rectRightX=200; private int rectTopY=0, rectBottomY=200; private boolean ok; public void intt(){ ok=true; } public void paint(Graphics g){ super.paint(g); g.drawRect(rectLeftX, rectTopY, rectRightX-rectLeftX+10, rectBottomY-rectTopY+10); /*desenam cu culoarea fundalului pentru a acoperi mingea anterior desenata*/ g.setColor(getBackground()); //se sterge mingea g.fillOval(x, y, diameter, diameter); //daca se intalneste peretele, se schimba directia de miscare if(x+xChange<=rectLeftX) xChange=-xChange; if(x+xChange>=rectRightX) xChange=-xChange; if(y+yChange<=rectTopY) yChange=-yChange; if(y+yChange>=rectBottomY) yChange=-yChange; //se modifica noua pozitie a mingii x=x+xChange; y=y+yChange; //se stabileste culoarea rosie pentru desenare g.setColor(Color.red); //se deseneaza mingea g.fillOval(x, y, diameter, diameter); } /*se apleleaza la distrugerea appletului si are ca efect terminarea metodei paint ()*/ public void destroy(){ ok=false; } public void start(){ ok=true; new Thread(this).start(); } public void stop(){ ok=false; } public void run(){ while (ok){ repaint(); try{ Thread.sleep(100); }catch (InterruptedException e){} } } } Fisierul cu extensia .class se construieste automat in urma compilarii codului de mai sus, in: C:\Documents and Settings\numecomputer\workspace\numeproiect\bin\Minge.class Alaturi de el se face un TextDocument care se salveaza cu extensia .html in care se scrie urmatorul cod: <html> <head> <title>Minge animata</title> </head> <body> <applet code=Minge.class width=400 height=400> </applet> </body> </html> Pentru a rula appletul trebuie accesat html-ul facut mai sus sau din Eclipse cu run si se deschide intr-un applet viewer, ca-n exemplul alaturat. Pentru a vedea cum ruleaza appletul faceti click aici. Pentru a downloada appletul faceti click aici.
  9. JavaScript and Vbscript are often used in a HTML page code to give more interactivity to the page, or just for one of the many applications of these scripts. Using these scripts you can create interactiv animations for images, animated menus with amazing effects and so on. Also, one of the most important applications is that of validating a form before sending it. This will make the user spend considerably less time in the case the user has wrongly completed the fields, and a reload of the page being needed. In this part we will only talk about the method of inserting the script into HTML Note: Most of the time it is much easier to just download from the internet than to write these scripts. Of course, that is possible only if the author has given his/her agreement for personal and/or comercial use. There are also a variety for javascript libraries that are free to use. Inserting JavaScript in HTML Inserting a javascript code is done very easily using the script tag. Here is an example: HTML<script type="text/javascript"> /* Here will be the the javascript code */ </script> For the javascript codes the 'text/javascript' value will be given to the type attribute. Inserting Vbscript in HTML Inserting a vbscript code is done in the same way as the javascript code is done, only that you replace the 'text/javascript' with 'text/vbscript'. Here is the example: HTML<script type="text/vbscript"> /* Here will be the the javascript code */ </script> It is always recommended to insert a comment along with the javascript and vbscript codes. That will warn the browsers that do not support that kind of script, or browsers that have javascript and vbscript disabled.
  10. The main HTML elements are <html>, <head>, <title> and <body>. Below is a simple example of how to build a website. HTML <html> <head> <title>My first website using html codes!</title> </head> <body> Hi guys! Here I put the contents of the HTML page. </body> </html>
  11. HTML <p>This is a simple HTML paragraph.</p> <p align="left">This is a left aligned paragraph.</p>
  12. Bgcolor is used to set the background color. Here I leave a few examples of how to use it: HTML <body bgcolor="#efefef"> <div bgcolor="#888888"> <table bgcolor="#000000"> - etc.
  13. Below are a few examples of HTML text fields. HTML <input type="text" size="10" maxlength="40" name="name"> --> regular text field <input type="password" size="10" maxlength="10" name="pass"> --> password field <input type="radio" name="color" value="red"> --> radio button <input type="checkbox" name="check" value="yes"> --> checkbox <select name="select"> --> simple select list / drop-down list <option>Html 4.1</option> <option>Html 5</option> </select>
  14. This is just one example of html code used to create a form. It is what a user might use to enter information. But to process such information you need a php file (for example) that sends the info to the database, mailed, etc. HTML <form method="post" name="myform" action="process.php"> <!--text fields used to enter information--> <input type="submit" value="Send"> <input type="reset" value="Delete" /> </form>
  15. 1) Sa se realizeze un program care creeaza o anumita clasa putere, ce calculeaza rezultatul dat de ridicarea unui numar la o putere (presupunem exponentul puterii un întreg pozitiv), folosind pointerul this (rezolvare...) 2) Folosindu-se o clasa cu membrii: un vector de 3 elemente, iniaializat printr-un constructor sa se implementeze operatorul de indexare. Se cere a se efectua o indexare sigura a unei marice, in caz contrar, se cere parasirea programului (rezolvare...) 3) Sa se realizeze un program care foloseste supraincarcarea operatorului "=" (rezolvare...) 4) Sa se dezvolte un tip abstract de date pentru prelucrarea unei matrice bidimensionate, si realizarea principalelor operatii pe aceasta, prin operatori supraincarcati (rezolvare...) Rezolvari 1) Sa se realizeze un program care creeaza o anumita clasa putere, ce calculeaza rezultatul dat de ridicarea unui numar la o putere (presupunem exponentul puterii un întreg pozitiv), folosind pointerul this. #include <iostream> using namespace std; #include<conio.h> class putere { double b; int e; double val; public: putere(double baza, int exp); double calculeaza() {return this->val ;} }; putere::putere(double baza, int exp) { this->b=baza; this->e=exp; this->val=1; if(exp==0) return; for(;exp>0;exp--) this->val=this->val*this->b; } void main() { putere x(4,3); putere y(2.5,1); putere z(5.7,0); cout<<x.calculeaza()<<endl; cout<<y.calculeaza()<<endl; cout<<z.calculeaza()<<endl; getch(); int k; cin>>k; } 2) Folosindu-se o clasa cu membrii: un vector de 3 elemente, iniaializat printr-un constructor sa se implementeze operatorul de indexare. Se cere a se efectua o indexare sigura a unei marice, in caz contrar, se cere parasirea programului. #include <iostream> using namespace std; #include<conio.h> #include<stdlib.h> class index{ int a[3]; public: index(int i,int j,int k) { a[0]=i; a[1]=j; a[2]=k; } int& operator[](int i); }; int& index::operator[](int i) { if(i<0 || i>2) { cout<<endl<<"Eroare la limita."<<'\n'; exit(1); } return a[i]; } void main() { index ob(1,2,3); for(int i=0;i<3;i++) cout<<ob[i]<<endl; ob[2]=25; //aceasta atribuire este posibila doar datorita valorii returnate ca referinta cout<<ob[2]; getch(); ob[3]=30; int k; cin>>k; } 3) Sa se realizeze un program care foloseste supraincarcarea operatorului "=". #include <iostream> using namespace std; #include<conio.h> #include<string.h> class sir { char* a; public: //constructor sir (char b[]); //constructor de copiere sir (sir &x); void operator=(sir &x); void afis(char *); }; inline sir::sir(char b[]) { a=new char[strlen(b)+1]; strcpy(a,b); } inline sir::sir(sir &x) { a=new char[strlen(x.a)+1]; strcpy(a,x.a); } void sir::operator=(sir& x) { delete a; a=new char[strlen(x.a)+1]; strcpy(a,x.a); } void sir::afis(char *z) { cout<<"Sirul "<<z<<" este: "<<a<<endl; } void main() { sir a("un sir "); cout<<"Dati un sir dorit: "; char s[256]; cin.getline(s,sizeof(s),'\n'); sir b(s); sir c=a; a.afis("a"); b.afis("b"); c.afis("c"); a=b; a.afis("a"); b.afis("b"); getch(); int k; cin>>k; } 4) Sa se dezvolte un tip abstract de date pentru prelucrarea unei matrice bidimensionate, si realizarea principalelor operatii pe aceasta, prin operatori supraincarcati. #include <iostream> using namespace std; #include<conio.h> #include<string.h> class matrice { int m,n; // m - numarul de linii, n - numarul de coloane int* mat; // matricea, pentru se va aloca memorie in zona de memorare HEAP public: matrice(int=1,int=1); // constructor de initializare cu parametri int* operator()(int,int); /* supraincarcarea operatorului special 'apel de functie' pentru determinarea unui element al matricei dintr-o anumita pozitie, pozitie data ca parametru*/ friend istream& operator>>(istream&,matrice&); /* supraincarcarea operatorului 'extragere din flux' pentru citirea elementelor unei matrice*/ friend ostream& operator<<(ostream&,matrice); /* supraincarcarea operatorului 'insertie in flux' pentru afisarea elementelor unei matrice*/ friend matrice operator+(matrice&,matrice&); /* supraincarcarea operatorului '+' pentru adunarea a doua matrice*/ friend matrice operator-(matrice&); /* supraincarcarea operatorului '-' pentru determinarea opusei unei matrice*/ friend matrice operator-(matrice&,matrice&); /* supraincarcarea operatorului '-' pentru diferenta a doua matrice*/ friend matrice operator~(matrice&); // transpusa unei matrice }; // constructor de initializare cu parametri inline matrice::matrice(int i,int j) { m=i; n=j; mat=new int[m*n]; /*alocam memorie suficienta in zona HEAP pentru pastrarea unui tablou m*n elemente intregi*/ } /*supraincarcarea operatorului special 'apel de functie' pentru determinarea unui element al matricei dintr-o anumita pozitie, pozitie data ca parametru*/ int* matrice::operator()(int i,int j) { return mat+i*n+j; // elementul de pe pozitia de linie i si coloana j a unei matrice } // supraincarcarea operatorului 'extragere din flux' pentru citirea elementelor unei matrice istream& operator>>(istream& x,matrice& a) { for(int i=0;i<a.m;i++) for(int j=0;j<a.n;j++) { cout<<"\telem["<<i+1<<"]["<<j+1<<"]= "; x>>*a(i,j); // apel al operatorului '()' supraincarcat } return x; } // supraincarcarea operatorului 'insertie in flux' pentru afisarea elementelor unei matrice ostream& operator<<(ostream& x,matrice a) { for(int i=0;i<a.m;i++) { for(int j=0;j<a.n;j++) x<<'\t'<<*a(i,j); x<<endl; } return x; } // supraincarcarea operatorului '+' pentru adunarea a doua matrice matrice operator+(matrice& a,matrice& b) { matrice c; c.m=a.m; //sau, c.m=b.m; c.n=a.n; //sau, c.n=b.n; for(int i=0;i<c.m;i++) for(int j=0;j<c.n;j++) *c(i,j)=*a(i,j)+*b(i,j); return c; } // supraincarcarea operatorului '-' pentru determinarea opusei unei matrice matrice operator-(matrice& a) { matrice c; c.m=a.m; c.n=a.n; for(int i=0;i<c.m;i++) for(int j=0;j<c.n;j++) *c(i,j)=-*a(i,j); return c; } // supraincarcarea operatorului '-' pentru diferenta a doua matrice matrice operator-(matrice& a,matrice& b) { return a+(-b); } // supraincarcarea operatorului '~' pentru transpusa unei matrice matrice operator~(matrice& a) { matrice c; c.m=a.m; c.n=a.n; for(int i=0;i<c.m;i++) for(int j=0;j<c.n;j++) *c(j,i)=*a(i,j); return c; } void main() { int m,n; // m - nr de linii, n - nr de coloane cout<<"Dati dimensiunea matricelor:\n"; cout<<"\tnumarul de linii: "; cin>>m; cout<<"\tnumarul de coloane: "; cin>>n; matrice a(m,n),b(m,n); // apel al constructorului de initializare cu parametri cout<<"Citim matricea A:\n"; cin>>a; // apel al functiei ce supraincarca operatorul '>>' cout<<"Citim matricea B:\n"; cin>>b; cout<<"Afisam matricea A:\n"; cout<<a; // apel al functiei ce supraincarca operatorul '<<' cout<<"Afisam matricea B:\n"; cout<<b; cout<<endl<<"Dati o tasta ptr. a continua..."<<endl; getch(); cout<<"Afisam A+B:\n"; cout<<a+b; // apel al functiilor ce supraincarca operatorii '+' si '<<' matrice c(m,n); c=(-a)-(~b); // apel al functiilor ce supraincarca operatorii '- unar', '- binar' si '~' cout<<"Afisam expresia -A - ~B:\n"; cout<<c; int k; cin>>k; }
  16. 1) Sa se construiasca o functie generica (template) care sa poata determina valoarea maxima a elementelor unui array numeric, oricare ar fi tipul standard al elementelor acestuia. Sa se scrie functia main() care sa apeleze functia construita, pentru 2 array-uri, de tipuri diferite. Elmentele array-urilor vor fi citite de la tastatura in tehnica OOP (rezolvare...) 2) Sa se construiasca o functie generica (template) care sa poata determina suma elementelor unui array numeric, oricare ar fi tipul standard al elementelor acestuia. Sa se scrie functia main() care sa apeleze functia construita, pentru 2 array-uri, de tipuri diferite. Elmentele array-urilor vor fi citite de la tastatura in tehnica OOP (rezolvare...) 3) Sa se construiasca o functie generica ce inverseaza între ele valorile celor doua variabile cu care este apelata (rezolvare...) 4) Sa se construiasca un program care creeaza o functie generica cu doua tipuri generice (rezolvare...) 5) Sa se construiasca o functie generica ce inverseaza între ele valorile celor doua variabile cu care este apelata, folosind supraîncarcarea explicita a unei functii generice (rezolvare...) 6) Sa se realizeze o clasa generica pentru lucrul cu stiva statica (rezolvare...) 7) Se va dezvolta o aplicatie pentru implementarea unei liste înlantuite cu elemente fiind numere întregi. Cerinta este a adapta aceasta aplicatie astfel încât tipul de date al elementelor listei sa fie unul universal (rezolvare...) Rezolvari 1) Sa se construiasca o functie generica (template) care sa poata determina valoarea maxima a elementelor unui array numeric, oricare ar fi tipul standard al elementelor acestuia. Sa se scrie functia main() care sa apeleze functia construita, pentru 2 array-uri, de tipuri diferite. Elmentele array-urilor vor fi citite de la tastatura in tehnica OOP. #include<iostream> using namespace std; template<class T> void citire(T a[], int* n, char c) { cout<<"Citim sirul "<<c<<endl; cout<<"\tdati dimensiunea: "; cin>>*n; cout<<"\tintroduceti elementele:\n"; for(int i=0;i<*n;i++) { cout<<"\t\telementul ["<<i+1<<"]= "; cin>>a[i]; } } template<class T> void afisare(T a[], int n, char c) { cout<<"Sirul "<<c<<" este: "; for(int i=0;i<n;i++) cout<<a[i]<<' '; cout<<endl; } template<class T> T maxim(T a[], int n) { T max; max=a[0]; for(int i=1;i<n;i++) if(a[i]>max) max=a[i]; return max; } void main() { int a[20]; double b[20]; int m,n; citire(a,&m,'A'); citire(b,&n,'B'); afisare(a,m,'A'); afisare(b,n,'B'); cout<<"\nMaximul sirului A este: "<<maxim(a,m); cout<<"\nMaximul sirului B este: "<<maxim(b,n); int var; cin>>var; } 2) Sa se construiasca o functie generica (template) care sa poata determina suma elementelor unui array numeric, oricare ar fi tipul standard al elementelor acestuia. Sa se scrie functia main() care sa apeleze functia construita, pentru 2 array-uri, de tipuri diferite. Elmentele array-urilor vor fi citite de la tastatura in tehnica OOP. #include<iostream> using namespace std; template<class T> void citire(T a[], int* n, char c) { cout<<"Citim sirul "<<c<<endl; cout<<"\tdati dimensiunea: "; cin>>*n; cout<<"\tintroduceti elementele:\n"; for(int i=0;i<*n;i++) { cout<<"\t\telementul ["<<i+1<<"]= "; cin>>a[i]; } } template<class T> void afisare(T a[], int n, char c) { cout<<"Sirul "<<c<<" este: "; for(int i=0;i<n;i++) cout<<a[i]<<' '; cout<<endl; } template<class T> T suma(T a[], int n) { T sum; sum=0; for(int i=0;i<n;i++) { sum=a[i]+sum; } return sum; } void main() { int a[20]; double b[20]; int m,n; citire(a,&m,'A'); citire(b,&n,'B'); afisare(a,m,'A'); afisare(b,n,'B'); cout<<"\nSuma sirului A este: "<<suma(a,m); cout<<"\nSuma sirului B este: "<<suma(b,n); int var; cin>>var; } 3) Sa se construiasca o functie generica ce inverseaza între ele valorile celor doua variabile cu care este apelata. //Exemplu de functie sablon #include<iostream> using namespace std; template <class X> void schimba(X &a, X &b) { X temp; temp=a; a=b; b=temp; } void main() { int i=0, j=10; float x=10.3, y=4.8; char a='A', b='B'; cout<<"Valorile intregi originale :"<<i<<' '<<j<<endl; schimba(i,j); //inverseaza intregii cout<<"Valorile intregi inversate :"<<i<<' '<<j<<endl<<endl; cout<<"Valorile reale originale :"<<x<<' '<<y<<endl; schimba(x,y); //inverseaza float cout<<"Valorile reale inversate :"<<x<<' '<<y<<endl<<endl; cout<<"Valorile caracter originale :"<<a<<' '<<b<<endl; schimba(a,b); //inverseaza intregii cout<<"Valorile caracter inversate :"<<a<<' '<<b<<endl<<endl; int var; cin>>var; } 4) Sa se construiasca un program care creeaza o functie generica cu doua tipuri generice. #include<iostream> using namespace std; template <class tip1, class tip2> void f (tip1 x, tip2 y) //merge si pe doua linii cu conditia ca intre aceste doua linii sa fie trecuta vreo instructiune { cout<<x<<' '<<y<<endl; } void main() { f(10, "hi"); f(0.3, 12L); int var; cin>>var; } 5) Sa se construiasca o functie generica ce inverseaza între ele valorile celor doua variabile cu care este apelata, folosind supraîncarcarea explicita a unei functii generice. #include<iostream> using namespace std; //Exemplu de functie sablon template <class X> void schimba(X &a, X &b) { X temp; temp=a; a=b; b=temp; } void schimba(int &a, int &b) { int temp; temp=a; a=b; b=temp+1; cout<<"Functie suprascrisa."<<endl; } void main() { int i=0, j=10; float x=10.3, y=4.8; char a='A', b='B'; cout<<"Valorile intregi originale :"<<i<<' '<<j<<endl; schimba(i,j); //inverseaza intregii cout<<"Valorile intregi inversate :"<<i<<' '<<j<<endl<<endl; cout<<"Valorile reale originale :"<<x<<' '<<y<<endl; schimba(x,y); //inverseaza float cout<<"Valorile reale inversate :"<<x<<' '<<y<<endl<<endl; cout<<"Valorile caracter originale :"<<a<<' '<<b<<endl; schimba(a,b); //inverseaza intregii cout<<"Valorile caracter inversate :"<<a<<' '<<b<<endl<<endl; int var; cin>>var; } 6) Sa se realizeze o clasa generica pentru lucrul cu stiva statica. #include<iostream> using namespace std; template <class X> class Stiva_Vector { X *memorie; int dimensiune; int vf; public: Stiva_Vector(int); ~Stiva_Vector(){delete memorie;} virtual int push(X); virtual int pop(X&); virtual int varf(X&); virtual int goala() { vf=-1; return vf; } virtual int plina() { vf=dimensiune-1; return vf; } }; template <class X> Stiva_Vector<X>::Stiva_Vector(int dim) { dimensiune=dim; memorie=new X[dimensiune]; vf=-1; } template <class X> int Stiva_Vector<X>::push(X v) { if(vf<dimensiune-1) { memorie[++vf]=v; return 1; } else return 0; } template <class X> int Stiva_Vector<X>::pop(X& v) { if(vf!=-1) { v=memorie[vf--]; return 1; } else return 0; } template <class X> int Stiva_Vector<X>::varf(X& t) { if(vf!=-1) { t=memorie[vf]; return 1; } else return 0; } void main() { int c; Stiva_Vector<int>*a=new Stiva_Vector<int>(255); cout<<"Introduceti un numar (-1 face oprirea): "; cin>>c; while(c!=-1) { a->push(c); cout<<"Introduceti un numar (-1 face oprirea): "; cin>>c; } cout<<endl; while(a->pop(c)) { cout<<c<<" "; } cout<<endl; delete a; int var; cin>>var; } 7) Se va dezvolta o aplicatie pentru implementarea unei liste înlantuite cu elemente fiind numere întregi. Cerinta este a adapta aceasta aplicatie astfel încât tipul de date al elementelor listei sa fie unul universal. #include<iostream> using namespace std; #include<stdio.h> #include<conio.h> struct nod { int inf; struct nod* next; }; typedef struct nod nod; class stiva { nod *vf; public: stiva(); ~stiva(); void init(int); void push(int); //adaugarea unui element in stiva void afisare(); int pop(); //extragerea unui element din stiva int goala(); }; stiva::stiva() { vf=NULL; } void stiva::init(int val) { vf=new nod; vf->next=NULL; vf->inf=val; } void stiva::push(int val) { nod* aux=new nod; aux->inf=val; aux->next=vf; vf=aux; } int stiva::pop() { nod *aux=vf; int n; if (vf) { n=vf->inf; vf=vf->next; delete(aux); } else cout<<"Lista goala!"; return n; } void stiva::afisare() { nod *aux=vf; while(aux) { cout<<aux->inf<<" "; aux=aux->next; } cout<<endl; } stiva::~stiva() { nod *aux=vf; while(vf) { aux=vf; vf=vf->next; delete(aux); } } int stiva::goala() { if(vf!=NULL) return 1; else return 0; } void optiune() { getch(); cout<<"1.Initializare 4.Afisare stiva"<<endl; cout<<"2.Introducere element 5.Distrugere stiva"<<endl; cout<<"3.Scoatere element 0.STOP"<<endl; cout<<endl<<endl<<"Introduceti optiunea: "; } void main() { stiva s,s1; cout<<"Acest program foloseste lista pe post de stiva, implementand "; cout<<"operatiile de baza de pe stiva."; optiune(); int opt,initVal; cin>>opt; while (opt) { switch(opt) { case 0:break; case 1:cout<<"Dati o valoare:"; cin>>initVal; s.init(initVal); break; case 2:cout<<"Dati noul element:"; cin>>initVal; s.push(initVal); break; case 3:cout<<"Elementul din varf a fost:"<<s.pop(); getch(); break; case 4:cout<<"Elementele aflate in stiva sunt:"; s.afisare(); getch(); break; case 5:s.~stiva(); cout<<"Lista a fost distrusa!"; getch(); break; default:cout<<"OPTIUNE GRESIT ALEASA!"; getch(); } optiune(); cin>>opt; } cout<<"La revedere."; getch(); int var; cin>>var; }
  17. 1) Declarare a unui şir (tablou sau matrice unidimensionată) cu iniţializare de valori. #include<stdio.h> void main() { int a[]={2,91,0,-45}; /*un sir de elemente intregi, variabila matrice initializata la declarare. Memoria alocata pentru aceasta matrice vine direct din numarul de elemente cu care este initilizata */ // afisarea sirului ce contine numere intregi for(int i=0; i<4; i++) printf("%d", a[i]); getchar(); int k; scanf("%d", k); } 2) Memorarea informaţiei într-un tablou unidimensional prin citire. #include<stdio.h> void main() { int a[20]; /*am declarat un sir de max 20 de elem. de tipul int cu numele a */ // INTRODUCEM DATE IN SIR // introducem numarul de elemente din sir int n; printf("Dati nr de elemente din sir (<=20): "); scanf("%d", &n); //introducem elementele din sir printf("Introduceti elementele: \n"); for(int i=0; i<n; i++) { printf("\t elem %d: ", i+1); scanf("%d", &a[i]); } //AFISAM ELEMENTELE DIN SIR printf("Elementele sirului sunt: "); for(int i=0; i<n; i++) printf("%d", a[i]); getchar(); int k; scanf("%d", k); } 3) Sa se scrie funcţii de citire şi afişare ale şirului de numere întregi, după ce acesta a fost în prealabil declarat. #include<stdio.h> void citire(int a[], int* n) { printf("Dati numarul de elemente ale sirului: "); scanf("%d",n); printf("\nIntroduceti elementele sirului:\n"); for(int i=0;i<*n;i++) { printf("\tIntroduceti elem %d: ",i+1); scanf("%d",&a[i]); } } void afisare(int a[], int n) { printf("\nElementele sirului sunt: "); for(int i=0;i<n;i++) printf("%d ",a[i]); } void main() { int a[20],n; citire(a,&n); afisare(a,n); getchar(); int k; scanf("%d", &k); } 4) Sa se scrie funcţii de citire şi afişare ale şirului de numere întregi, după ce acesta a fost în prealabil declarat. Se cere construcţia unui tip propriu pentru reţinerea şirurilor de elemente întregi. #include<stdio.h> typedef int vector[20]; /*vector de tip propriu creat pt retinerea sirurilor, cu o dimensiune max de 20 elemente*/ void citire(vector a, int* n) { printf("Dati numarul de elemente ale sirului: "); scanf("%d",n); printf("Introduceti elementele sirului:\n"); for(int i=0;i<*n;i++) { printf("\telem %d: ",i+1); scanf("%d",&a[i]); } } void afisare(vector a, int n) { printf("Elementele sirului sunt: "); for(int i=0;i<n;i++) printf("%d ",a[i]); } void main() { vector a; int n; citire(a,&n); afisare(a,n); getchar(); int k; scanf("%d", &k); } 5) Alocare de memorie dinamică a unui şir. Se va citi şi ulterior, afişa, un şir de numere întregi, pentru care spaţiul ocupat se va determina la rulare şi nu la compilare. #include<stdio.h> #include<stdlib.h> //functie de alocare de memorie pentru nr de elemente citite in sir int* alocare(int* a, int* n) { printf("Dati numarul de elemente ale sirului: "); scanf("%d",n); a=(int*)malloc(*n*sizeof(int)); /* alocam memorie dinamica (in zona Heap) pentru memorarea unui sir in mod dinamic de n elemente */ if(!a) { printf ("Eroare de alocare."); return 0; } return a; } //functie ptr introducerea elementelor in sir void citire(int* a, int n) { printf("Introduceti elementele sirului:\n"); for(int i=0;i<n;i++) { printf("\telem %d: ",i+1); scanf("%d",&a[i]); } } //functie ptr afisarea elementelor din sir void afisare(int* a, int n) { printf("Elementele sirului sunt: "); for(int i=0;i<n;i++) printf("%d ",a[i]); } void main() { int* a, n; a=alocare(a,&n); //apel al functiei de alocare de memorie citire(a,n); //apel al functiei de citire afisare(a,n); //apel al functiei de afisare getchar(); int k; scanf("%d", &k); } 6) Se va dezvolta o aplicaţie pentru reprezentarea şirurilor de numere întregi, şi anume: - se va determina un tip de date pentru astfel de reprezentari - se va citi un sir de numere întregi - se va afisa un sir de numere întregi - se vor aduna componentele sirului (vom prezenta doua metode: una cu transfer rezultat prin tipul rezultat si alta cu transfer prin linia de parametri) - se va realiza operatia de înmultire a componentelor sirului - media elementelor din sir - numarul de componente negative si numarul de componente pozitive din sir - minimul si maximul dintre elementele sirului - sortarea ascendenta a sirului - cautarea unui anumit element în sir cu returnarea pozitiei pe care se gaseste; în cazul în care elementul se afla de mai multe ori în pe pozitii diferite, vom avea ca rezultat prima pozitie pe care acesta se gaseste. Functiile vor fi descrise cu zona declarativa explicita, adica, cu prototip de functie. #include<stdio.h> #include<stdlib.h> typedef int* vector; //functie de alocare de memorie in zona Heap pentru un sir declarat vector alocare(vector,int*); /*primul parametru este sirul, iar al doilea dimensiunea sa (numarul de elemente ce vor fi citite)*/ //functia de citire a elementelor unui sir void citire(vector,int); //afisarea unui sir de numere intregi void afisare(vector,int); //sumarea elementelor din sir - cu transfer prin tipul rezultat int suma1(vector,int); //sumarea elementelor din sir - cu transfer prin linia de parametri void suma2(vector,int,int*); //al 3-lea parametru va retine rezultatul suma //produsul elementelor din sir int produs(vector,int); //media elementelor din sir float media(vector,int); //numarul de elemente negative, respectiv pozitive, din sir void nr_neg_poz(vector,int,int*,int*); //minimul si maximul valorilor din sir void min_max(vector,int,int*,int*); //functie de sortare a sirului void sortare(vector,int); /* cautarea unui anumit element, cu returnarea pozitiei pe care se gaseste in sir (in cazul in care respectivul element se gaseste de mai multe ori in sir, se va returna prima pozitie la care se afla) */ int cautare(vector,int,int); void main() { vector v; int n; v=alocare(v,&n); //apelul functiei de alocare citire(v,n); //apelul functiei de citire afisare(v,n); int s1=suma1(v,n); printf("\n\nSuma elementelor: %d",s1); int s2; suma2(v,n,&s2); printf("\nSuma elementelor: %d",s2); int p=produs(v,n); printf("\nProdusul elementelor: %d",p); float m=media(v,n); printf("\nMedia elementelor: %.2f",m); int neg,poz; nr_neg_poz(v,n,&neg,&poz); printf("\nNr. de elem. negative: %d; Nr. de elem. pozitive: %d",neg,poz); int min,max; min_max(v,n,&min,&max); printf("\nMinimul din sir: %d; Maximul din sir: %d",min,max); sortare(v,n); afisare(v,n); int elem; printf("\nDati un element ce se doreste a fi cautat: "); scanf("%d",&elem); if(cautare(v,n,elem)) //rezultat diferit de 0 printf("\tElementul se gaseste pe pozitia %d", cautare(v,n,elem)); else printf("\tElementul nu se afla in sir"); getchar(); int k; scanf("%d", &k); } vector alocare(vector a, int* n) { printf("Dati numarul de elemente: "); scanf("%d",n); a=(int*)malloc(*n*sizeof(int)); return a; } void citire(vector a, int n) { printf("Introduceti elementele:\n"); for(int i=0;i<n;i++) { printf("\telem %d= ",i+1); scanf("%d",&a[i]); } } void afisare(vector a, int n) { printf("\nSirul este: "); for(int i=0;i<n;i++) printf("%d ",a[i]); } int suma1(vector a, int n) { int s=0; for(int i=0;i<n;i++) s+=a[i]; //s=s+a[i]; return s; } void suma2(vector a, int n, int* s) { *s=0; for(int i=0;i<n;i++) *s+=a[i]; } int produs(vector a, int n) { int p=1; for(int i=0;i<n;i++) p*=a[i]; return p; } float media(vector a, int n) { return (float)suma1(a,n)/n; } void nr_neg_poz(vector a, int n, int* neg, int* poz) { *neg=*poz=0; for(int i=0;i<n;i++) if(a[i]>=0) (*poz)++; else (*neg)++; } void min_max(vector a, int n, int* m, int* M) { *m=*M=a[0]; /*mergem de la premiza ca primul element va fi atat element minim cat si maxim in sir*/ for(int i=1;i<n;i++) if(a[i]<*m) *m=a[i]; else if(a[i]>*M) *M=a[i]; } void sortare(vector a, int n) { int aux; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(a[i]>a[j]) //sortare ascendenta { aux=a[i]; a[i]=a[j]; a[j]=aux; } } int cautare(vector a, int n, int e) { for(int i=0;i<n;i++) if(a[i]==e) return i+1; return 0; } 7) Citirea si afisarea unui sir de numere, prin constructia unui tip propriu pentru retinerea sirului de numere intregi. Funcţia va fi descrisa cu zonă declarativă explicită, adică, cu prototip de funcţie. #include<stdio.h> #include<malloc.h> typedef int* vector; vector alocare (vector a, int* n) { printf("Dati numarul de elemente: "); scanf("%d",n); a=(int*)malloc(*n*sizeof(int)); return a; } void citire(vector a, int n) { printf("Introduceti elementele:\n"); for(int i=0;i<n;i++) { printf("\telem %d= ",i+1); scanf("%d",&a[i]); } } void afisare(vector a, int n) { printf("\nSirul este: "); for(int i=0;i<n;i++) printf("%d ",a[i]); } void main() { vector x; //sirul de nr. intregi int n; //nr. de elemente ce vor fi citite in sir x=alocare(x,&n); citire(x,n); afisare(x,n); getchar(); int k; scanf("%d",k); } 8) Fie declaraţiile : int a[20]; int n; float e; Să se determine valoarea expresiei e în fiecare din cazul: e = x1+x2+x3+…+xn; #include<stdio.h> void citire(int a[], int* n) { printf("\nIntroduceti nr de elemente: "); scanf("%d", n); printf("\nIntroduceti elementele: "); for(int i=0; i<*n; i++) { printf("\nElem %d: ", i+1); scanf("%d", &a[i]); } } int expresie(int a[20],int n) { int e=0; for(int i=0; i<n; i++) { e=e+a[i]; } return e; } void main() { int a[20], n, e; citire(a, &n); printf("\nRezultatul este: %d", expresie(a,n)); getchar(); int var; scanf("%d", &var); } 9) Alocare dinamica sir. #include <stdio.h> #include <stdlib.h> void main() { int n , *a, i; printf ("Dati numarul de elemente ale sirului: "); scanf ("%d", &n); //alocare memorie pt memorarea unui sir in mod dinamic de n elemente a=(int*) malloc(n*sizeof(int)); //introducere elementelor in sir printf ("Introduceti elementele in sir: \n"); for (i=0; i<n; i++) { printf ("element %d: ", i+1); scanf ("%d", &a[i]); } //afisarea elementelor printf ("Elementele intregi ale sirului sunt: \n"); for (i=0; i<n; i++) { printf ("element %d = %d\n", i+1, a[i]); } int j; scanf("%d", &j); } 10) Fie declaraţiile : int a[20]; int n; float e; Să se determine valoarea expresiei e în fiecare din cazurile: a) e = x1+x2+x3+…+xn; b) e = x1*x2*x3*…*xn; c) e = media aritmetica a componentelor din vector; d) e = suma patratelor componentelor din vector; e) e = suma cuburilor componentelor negative din vector; f) e = x1-x2+x3-x4+…±xn #include<stdio.h> //introducere date in sir void citire(int b[], int* n) { printf("\nIntroduceti numarul de elemente: "); scanf("%d", n); printf("\nIntroduceti elementele:\n "); for(int i=0; i<*n; i++) { printf("\nElem %d:", i+1); scanf("%d", &b[i]); } } int expresie1 (int a[20], int n) { int e=0; for(int i=0; i<n; i++) e=e+a[i]; return e; } int expresie2 (int a[20], int n) { int e=1; for(int i=0; i<n; i++) e=e*a[i]; return e; } float expresie3 (int a[20], int n) { float e=0; for(int i=0; i<n; i++) e=e+a[i]/(float)n; return e; } int expresie4 (int a[20], int n) { int e=0; for(int i=0; i<n; i++) e=e+a[i]*a[i]; return e; } int expresie5 (int a[20], int n) { int e=0; for(int i=0;i<n;i++) { if(a[i]<0) e=e+a[i]*a[i]*a[i]; } return e; } int expresie6 (int a[20], int n) { int e=0,semn=1; for(int i=0;i<n;i++) { if (i%2==0) semn=1; else semn=-1; e=e+a[i]*semn; } return e; } void main() { int b[20], n, i; float e; citire(b, &n); printf("\n\tSuma elementelor este: %d",expresie1(b,n)); printf("\n\tProdusul este: %d",expresie2(b,n)); printf("\n\tMedia aritmetica este: %.2f",expresie3(b,n)); printf("\n\tSuma patratelor este: %d",expresie4(b,n)); printf("\n\tSuma cuburilor negative este: %d",expresie5(b,n)); printf("\n\tExpresia este: %d",expresie6(b,n)); getchar(); int var; scanf("%d", &var); } 11) Să se realizeze un program care interclasează doi vectori într-un al treilea vector. Primii doi vor fi iniţial sortaţi. #include<stdio.h> #include<stdlib.h> void main() { int n , m, *a, *b, i, j, gasit, aux, k, *c; //--------------------------------------------------------------------------------- printf ("Dati numarul de elemente ale sirului1: "); scanf ("%d", &n); //alocare memorie pt memorarea unui sir in mod dinamic de n elemente a=(int*) malloc(n*sizeof(int)); //introducere elementelor in sir printf ("Introduceti elementele in sir1: \n"); for (i=0; i<n; i++) { printf ("element %d: ", i+1); scanf ("%d", &a[i]); } //--------------------------------------------------------------------------------- printf ("Dati numarul de elemente ale sirului2: "); scanf ("%d", &m); //alocare memorie pt memorarea unui sir in mod dinamic de n elemente b=(int*) malloc(m*sizeof(int)); //introducere elementelor in sir printf ("Introduceti elementele in sir2: \n"); for (j=0; j<m; j++) { printf ("element %d: ", j+1); scanf ("%d", &b[j]); } //--------------------------------------------------------------------------------- //afisarea elementelor celor 2 siruri printf ("Elementele intregi ale sirului1 sunt: \n"); for (i=0; i<n; i++) { printf ("element %d = %d\n", i+1, a[i]); } printf ("Elementele intregi ale sirului2 sunt: \n"); for (j=0; j<m; j++) { printf ("element %d = %d\n", j+1, b[j]); } //--------------------------------------------------------------------------------- //sortare sir I do { gasit=0; for(i=0;i<n-1;i++) if (a[i]>a[i+1]) { aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; gasit=1; } } while(gasit); //afisare dupa sortare sir 1 printf ("Elementele sirului1 dupa sortare sunt: \n"); for (i=0; i<n; i++) { printf ("element %d = %d\n", i+1, a[i]); } //--------------------------------------------------------------------------------- //sortare sir II for(i=0;i<m-1;i++) for(j=i+1;j<m;j++) if(b[i]>b[j]) { aux=b[i]; b[i]=b[j]; b[j]=aux; } //afisare dupa sortare sir 2 printf ("Elementele sirului2 dupa sortare sunt: \n"); for (j=0; j<m; j++) { printf ("element %d = %d\n", j+1, b[j]); } //--------------------------------------------------------------------------------- //interschimbarea propriu-zisa //alocare memorie pt memorarea unui sir in mod dinamic de n elemente c=(int*) malloc((n+m)*sizeof(int)); i=j=k=0; while(i<m && j<n) if (a[i]==b[j]) //în cazul în care avem elemente comune în cei doi vectori acestea sa fie puse o singura data în vectorul interclasat { c[k++]=a[i++]; j++; } else if (a[i]<b[j]) c[k++]=a[i++]; else c[k++]=b[j++]; //sau {c[k]=b[j]; k++; j++;} if(i<m) //în caz ca mai ramân elemente neanalizate în a se copiaza în c for(j=i;j<n;j++) c[k++]=a[j]; else //în caz ca mai ramân elemente neanalizate în b se copiaza în c for(i=j;i<m;i++) c[k++]=b[i]; //afisare dupa sortare siruri printf ("Elementele sirului dupa sortare sunt: \n"); for (k=0; k<(m+n); k++) { printf ("element %d = %d\n", k+1, c[k]); } //--------------------------------------------------------------------------------- getchar(); int var; scanf("%d", &var); } Sursa
  18. Structuri: If si if-else In aceast articol vom invata cum sa facem un program care sa ia decizii. Cea mai simpla metoda de a programa o comportare este sa spui: " Daca A este adevarat, atunci executa B". Ei bine cam asa re reprezinta instructiunea if din C++. Iata forma simpla a sintaxei instructiunii if: if (conditie) instructiune; Instructiunea if mai are si o sintaxa compusa si mai preferata de unii: if(conditie){ instrctiuni; } Ce este diferit? Care este diferenta? Diferit este faptul ca in al doilea exemplu se folosesc acolade. Diferenta este faptul ca forma simpla a lui if executa doar o singura instructiune pe cand cea cu acolade executa doua sau mai multe. Multi gresesc cand programeaza si scriu mai multe instructiuni dar nu intre acolade. Ce rol au acoladele? Acoladele au rolul de a crea un bloc de instructiuni care urmeaza sa fie executate in cazul in care conditia este adevarata, pe cand daca nu avem acoladele se va executa doar prima instructiune care urmeaza dupa if. Sa luam un exemplu: ... if (a==b) cout << " a este egal cu b"; ... Mai observam ca s-au folosit de 2 ori semnul egal. De ce? C++ are doi operatori diferiti. Unul care indica atribuirea ( = ), adica copie valoarea din membrul drept in membrul stang si unul care indica verificarea egalitatii ( == ). Cand vrem sa testam o egalitate mereu trebuie sa folosim operatorul == . Se mai poate specifica si actiunile care trebuie executate in cazul in care conditia este falsa, iar aceasta foloseste cuvantul cheie else (altfel). Iata un exemplu: ... if(a==b) cout << " a este egal cu b"; else cout << "a nu este egal cu b"; ... Operatorii rationali din C++ sunt: < - mai mic > - mai mare <= - mai mic sau egal >= - mai amre sau egal == - verificarea egalitatii != - verificarea inegalitatii Sa luam ca exemplu un program care ne afiseaza daca un numar este par sau impar: #include <iostream> using namespace std; int main(){ int n; cout << " Introduceti un numar: "; cin>>n; if(n%2==0) cout << " Numarul este par."; else cout << " Numarul este impar."; return 0; } In acest program am folosit un operator nou si anume operatorul modulo ( % ). Acest operator returneaza restul imartirii, iar daca restul impartirii unui numar la 2 este 0 inseamna ca acel numar este par, iar in caz contrar este impar.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.