⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a280fraz.cpp

📁 secondo esempi vari per c++ (schema base)
💻 CPP
字号:
// nuovi elementi: /=, toupper(). ignore()
#include <iostream>

using namespace std;

void leggi(int&, int&, int&, int&);
int min_com_mul(int, int);
int mas_com_div(int, int);
void semplifica(int&, int&);
void scrivi(int, int);

int main() {
  int n1, d1, n2, d2, num, den ;
  char c;
  do {
    leggi(n1,d1,n2,d2);
    cout << endl;
    cout << n1 << "/" << d1 << " + " << n2 << "/" << d2 << " = ";
    den = min_com_mul(d1,d2);
    num = den / d1 * n1 + den / d2 * n2;
    semplifica(num,den);
    scrivi(num,den);
    cout << endl << endl;
    do {
      cout << "Ancora? (S/N)";
      c = toupper(cin.get());
      cin.ignore(80,'\n');
    } while ((c != 'S') && (c != 'N'));
    cout << endl << endl;
  } while (c == 'S');
  cout << "The End!" << endl;
}

void leggi(int& n1, int& d1, int& n2, int& d2) {
  do {
    cout << "Introduci numeratore e denominatore della prima frazione" << endl;
    cout << "diversi da 0 e separati da uno spazio" << endl;
    cin >> n1 >> d1;
  } while (n1*d1 == 0);
  cin.ignore(80,'\n');       // salta (ignora) fino a 80 caratteri o fino al newline
  do {
    cout << "Introduci numeratore e denominatore della seconda frazione" << endl;
    cout << "diversi da 0 e separati da uno spazio" << endl;
    cin >> n2 >> d2;
  } while (n2*d2 == 0);
  cin.ignore(80,'\n');
}

int min_com_mul(int d1, int d2) {
  int ma = d1, mb = d2;
  while ( ma != mb )
    ma > mb  ?  (mb += d2)  :  (ma += d1);
  return ma;
}

int mas_com_div(int nn, int dd) {
  while ( dd ) {
    int resto = nn % dd;
    nn = dd;
    dd = resto;
  }
  return nn;
}

void semplifica(int& num, int& den) {
  int mcd = mas_com_div(num,den);
  num /= mcd;
  den /= mcd;
}

void scrivi(int num, int den) {
  cout << num;
  if ( den != 1 )
    cout << "/" << den;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -