📄 a280fraz.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 + -