Informatică, întrebare adresată de MihaesIonut, 9 ani în urmă

pbinfo problema #391
Se dau n perechi de numere naturale nenule, fiecare reprezentând câte o fracţie. Calculaţi suma celor n fracţii, aducând rezultatul la forma ireductibilă
Programul afișează pe ecran numerele P Q, separate prin exact un spaţiu, reprezentând numărătorul şi numitorul fracţiei sumă, adusă la forma ireductibilă.
pbinfo problema #410
Se citește un număr natural n. Acest număr se “împarte” în alte două numere a și b, astfel: a este format din cifrele din prima jumătate a lui n, b este format din cifrele din a doua jumătate a lui n. Dacă n are număr impar de cifre, cifra din mijloc se ignoră. De exemplu, dacă n=9183792, atunci a=918, iar b=792. Să se determine cel mai mare divizor comun al lui a și b.
Va rog! ma puteti ajuta si pe mine?

Răspunsuri la întrebare

Răspuns de Seckar
2
Prima problema o faci usor daca iti faci o functie pentru cmmdc si o structura pentru fractie ca sa nu te mai bati cu perechi de numere la intamplare intr-un vector. 

Apoi nu ai decat sa iti parcurgi fractiile(cu un for sau ce ce doresti tu) si sa le aduni pe rand cu o fractie care initial este  \frac{0}{1} , le vei aduna asa cum ai invatat in clasa a 5a cu aducere la acelasi numitor si apoi le vei reduce impartind si numitorul si numaratorul la cmmdc dintre ei.

A doua problema este mai usor daca o abordezi cu siruri de caractere, daca ai numarul ca sirde caractere poti sa vezi direct ce lungime are, si poti sa muti direct o bucata de sir mai la stanga sau mai la dreapta ca sa elimini cifra din mijloc in caz de nevoie. 

Iti las niste exemple ceva mai avansate pentru ambele probleme in caz ca te atrage mai mult sa inveti chestii noi decat sa scrii 1000 linii de cod. Tot ce am folosit acolo se poate gasi cu o simpla cautare google sau imi poti da mesaj si iti voi spune ce sa citesti:


Anexe:
Răspuns de rossetta
5
1) #391 :

#include <iostream>

using namespace std;

int a[11];
int b[11];

int main() {
    int n;
    cin >> n;
    int p2 = 1;
   for(int i = 0; i < n; i++){
     cin >> a[i] >> b[i];
     p2 = p2 * b[i];
   }
   int s1 = 0, s2 = p2;
   for(int i = 0; i < n; i++){
     s1 = s1 + a[i] * p2 / b[i] ;
   }
   int r, rezultat1 = s1, rezultat2 = s2;
   while(s2 > 0) {
     r = s1 % s2;
     s1 = s2;
     s2 = r;
   }
   cout << rezultat1 / s1 <<" " << rezultat2 / s1;
   return 0;
}
2) #410 :

#include <iostream>
using namespace std;

int main() {
  int n;
  cin >> n;
  int nn = n, p = 1, nr= 0, r;
  int x, y;
  while (nn != 0) {
    nr++;
    nn = nn /10;
  }
  for (int i = 0; i < nr /2; i++)
    p = p * 10;
  x = n % p;
  n = n / p;
  if (nr % 2 == 0)
    y = n;
  else
    n = n / 10;
 y = n;  
 while ( y != 0) {
   r =     x % y;
   x = y;
   y = r;
 }
 
  cout<<x;
    return 0;
}



Alte întrebări interesante