7 nov. 2012

Citirea unei matrici

O matrice este un vector de vectori. Are un numar de linii(considerat un vector) si fiecare element din vectorul respectiv este la randul sau un vector(coloane).

#include <iostream>
using namespace std;

int main() {
 //numarul de linii si coloane
 int lines, columns;
 cout << "linii:";
 cin >> lines;
 cout << "colomns:";
 cin >> columns;
//declararea matricei
 int matrix[lines][columns];
//citirea de la tastatura a elementrlor, unul cate unul
 for (int i = 0; i < lines; i++) {
  for (int j = 0; j < columns; j++) {
   cout << "matrix[" << i << "][" << j << "]:";
   cin >> matrix[i][j];
  }
 }
//afirare in bloc a matricei
 cout << "Afisare matrice:" << endl;
 for (int i = 0; i < lines; i++) {
  for (int j = 0; j < columns; j++) {
   cout << matrix[i][j] << " ";
  }
  cout << endl;
 }
}
propuneri de enunturi

17 iul. 2012

Numarul de cifre

Sa numaram cate cifre de fiecare grad sunt intr-un numar. Cate cifre de 1, cate de 2 s.a.m.d. Varianta este de forta bruta, ar terbui folosit un vector unidimensional de lungime 10.

#include <iostream>
using namespace std;

int main() {

 int n;
 int c;
 //initializam numerul de cifre
 int i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0,
   i9 = 0;
 //citim n
 cin >> n;

 // numaram cifrele
 while (n) {
  c = n % 10;
  n = n / 10;
  switch (c) {
  case 0:
   i0++;
   break;
  case 1:
   i1++;
   break;
  case 2:
   i2++;
   break;
  case 3:
   i3++;
   break;
  case 4:
   i4++;
   break;
  case 5:
   i5++;
   break;
  case 6:
   i6++;
   break;
  case 7:
   i7++;
   break;
  case 8:
   i8++;
   break;
  case 9:
   i9++;
   break;
  }
 }
 //afizam cifrele
 cout << "Numarul are: \n";
 cout << "[" << i0 << "]" << " de 0\n";
 cout << "[" << i1 << "]" << " de 1\n";
 cout << "[" << i2 << "]" << " de 2\n";
 cout << "[" << i3 << "]" << " de 3\n";
 cout << "[" << i4 << "]" << " de 4\n";
 cout << "[" << i5 << "]" << " de 5\n";
 cout << "[" << i6 << "]" << " de 6\n";
 cout << "[" << i7 << "]" << " de 7\n";
 cout << "[" << i8 << "]" << " de 8\n";
 cout << "[" << i9 << "]" << " de 9\n";
 return 0;
}

Dupa cum se observa un astfel de program este foarte lung chiar daca este simplu de scris.
O versiune mai compacta a acestui program este urmatoarea:
#include <iostream>
using namespace std;

int main() {
 int n;
 int v[10];
 int c;

 for (int i = 0; i < 10; i++) {
  v[i] = 0;
 }

 cin >> n;

 while (n) {
  c = n % 10;
  n = n / 10;
  v[c]++;
 }

 for (int i = 0; i < 10; i++) {
  cout << "[" << v[i] << "]" << " de " << i << "\n";
 }
 return 0;
}
Resultatul este acelasi, dar codul este mai compact, si mai usor de urmarit.

30 mai 2012

O simpla scriere in fisier

Un exemplu de program care scrie un simplu text in fisier. stocare permanenta pe HDD.

#include <iostream>
#include <fstream>
using namespace std;

int main() {
 ofstream myfile;
 myfile.open("exemplu.txt");
 myfile << "Scrie in fisier";
 myfile.close();
 return 0;
}
propuneri de enunturi

Palindrom de 9 cifre

Sa se scrie un program care afiseaza toate palindroamele de 9 cifre.

#include <iostream>
using namespace std;

int invers(int n) {
 int i = 0;
 while (n > 0) {
  i = (i * 10) + n % 10;
  n = n / 10;
 }
 return i;
}

int main() {

 int nr;
 for (int i = 10010; i < 100000; i++) {
  nr = i;
  cout << i << invers(nr / 10) << endl;
 }
 return 0;
}

14 ian. 2012

Idei de probleme

     Salut,

   Pentru cei care se mai uita din cand in gand pe blogul asta si ar vrea sa mai vada solutii noi la probleme si mai noi, va rog sa lasati un comment.

  multa bafta

25 dec. 2011

Cel mai mic multiplu comun

O varianta simpla pentru problema celui mai mic multiplu comun.

#include <iostream>

using namespace std;

int main() {
 int a, b, divizor, putereA, putereB, rezultat = 1;

 cin >> a;

 cin >> b;

 int maxDiv = a / 2;
 int sqrtB = b / 2;

 if (maxDiv < sqrtB) {
  maxDiv = sqrtB;
 }

 for (divizor = 2; divizor <= maxDiv; divizor++) {
  if (a % divizor == 0 && b % divizor == 0) {
   putereA = 0;
   putereB = 0;
   while (a % divizor == 0) {
    a = a / divizor;
    putereA++;
   }

   while (b % divizor == 0) {
    b = b / divizor;
    putereB++;
   }
   if (putereA > putereB) {
    while (putereA > 0) {
     rezultat = rezultat * divizor;
     putereA--;
    }
   } else {
    while (putereB > 0) {
     rezultat = rezultat * divizor;
     putereB--;
    }
   }
  } else {
   if (a % divizor == 0) {
    while (a % divizor == 0) {
     a = a / divizor;
     rezultat = rezultat * divizor;
    }
   } else {
    if (b % divizor == 0) {
     while (b % divizor == 0) {
      b = b / divizor;
      rezultat = rezultat * divizor;
     }
    }
   }
  }
 }
 cout << "rez=" << rezultat;
 return 0;
}

O versiune mai rafinata a programului de mai sus
#include <iostream>

using namespace std;

void getDiv(int &a, int d, int &r) {
 r = 0;
 while (!(a % d)) {
  a = a / d;
  r++;
 }
}

void addRez(int &rez, int &a, int d) {
 while (!(a % d)) {
  a = a / d;
  rez = rez * d;
 }
}

int main() {
 int a, b, divizor, putereA, putereB, rezultat = 1;

 cin >> a;
 cin >> b;

 int maxDiv = a > b ? a : b;
 maxDiv /= 2;

 for (divizor = 2; divizor <= maxDiv; divizor++) {
  if (a % divizor || b % divizor) {
   getDiv(a, divizor, putereA);
   getDiv(b, divizor, putereB);

   if (putereA > putereB) {
    while (putereA) {
     rezultat = rezultat * divizor;
     putereA--;
    }
   } else {
    while (putereB) {
     rezultat = rezultat * divizor;
     putereB--;
    }
   }
  } else {
   if (!(a % divizor)) {
    addRez(rezultat, a, divizor);
   } else {
    if (!(b % divizor)) {
     addRez(rezultat, b, divizor);
    }
   }
  }
 }
 cout << "rez= " << rezultat;
 return 0;
}
propuneri de enunturi

24 dec. 2011

Setare variabila in Path in Windows 7

Pentru a folosi MinGW in windows cu un GUI precum Eclipse, trebuie setata variabila gcc in Path-ul de la windows. Dupa ce instalati MinGW executati pasii urmatori:
  1. Click pe Start
  2. Click dreapta pe Computer
  3. Din meniul contextual dati click pe Properties 
  4. Click pe 'Advanced system settings' din coltul stanga sus (Control panel Home img). 
  5. Control Panel Home
  6. Se va afisa fereatra 'System propertis'
  7. Click pe Tab-ul 'Advanced'
  8. Click pe Enviroment Variables
  9. Enviroment variables
  10. Pentru a adauga MinGW in Path selectati variabila de sistem Path si selectati 'Edit...'. Apoi adaugati in valoarea acelei variabile calea catre MinGW.
Salvati toate modificarile.

Acum puteti folosi compilatorul gcc in Eclipse folosind MinGW.