Другие языки программирования и технологии
Как задачу решать? объясните пожалуйста... С++
Сокращение дроби: Даны натуральные числа m и n. Найти такие два натуральных числа p и q, которые не имеют общих делителей и удовлетворяют условию p/q=m/n.
попробуй
for(unsigned int i = 2; (i <= M) && (i <= N); ++i)
погорячился - здесь все верно
не знаю, сложно в уме сооринтироваться, но может сработать
и еще нужно
if((M % i == 0) && (N % i == 0))
{
M /= i;
N /= i;
--i;
}
потому что может делиться несколько раз на один и тот же делитель
Ладно, если помощь не нужна, то я пошёл)
for(unsigned int i = 2; (i <= M) && (i <= N); ++i)
погорячился - здесь все верно
не знаю, сложно в уме сооринтироваться, но может сработать
и еще нужно
if((M % i == 0) && (N % i == 0))
{
M /= i;
N /= i;
--i;
}
потому что может делиться несколько раз на один и тот же делитель
Ладно, если помощь не нужна, то я пошёл)
У меня déjà vu
// Visual C++ 2010 console application
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int p = 1, q = 1, n, m, max, min, temp;
double x = 1, y = 1;
do
{
system("cls");
cout << endl << " m = ";
cin >> m;
cout << " n = ";
cin >> n;
if (m == n)
{
cout << endl << " Нет решений, числа n и m равны! ";
fflush(stdin);
cin.get();
}
}
while (m == n);
max = n;
if (max < m) {max = m; min = n;}
else min = m;
x = (double) min / max;
temp = max;
do
{
for (min; min > 0; min--)
{
if (y < x) continue;
for (max; max > 1; max--)
{
y = (double) min / max;
if (y < x) continue;
if (x == y)
{
p = min; q = max;
for (int k = p; k > 0; k--)
{
if (p % k == 0 && q % k == 0 && k > 1) break;
else
{
cout << endl << " p = " << p << "\n q = " << q;
fflush(stdin);
cin.get();
return 0;
}
}
}
}
max = temp;
}
cout << endl << " Нет решений! ";
fflush(stdin);
cin.get();
break;
}
while (true);
return 0;
}
// Visual C++ 2010 console application
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int p = 1, q = 1, n, m, max, min, temp;
double x = 1, y = 1;
do
{
system("cls");
cout << endl << " m = ";
cin >> m;
cout << " n = ";
cin >> n;
if (m == n)
{
cout << endl << " Нет решений, числа n и m равны! ";
fflush(stdin);
cin.get();
}
}
while (m == n);
max = n;
if (max < m) {max = m; min = n;}
else min = m;
x = (double) min / max;
temp = max;
do
{
for (min; min > 0; min--)
{
if (y < x) continue;
for (max; max > 1; max--)
{
y = (double) min / max;
if (y < x) continue;
if (x == y)
{
p = min; q = max;
for (int k = p; k > 0; k--)
{
if (p % k == 0 && q % k == 0 && k > 1) break;
else
{
cout << endl << " p = " << p << "\n q = " << q;
fflush(stdin);
cin.get();
return 0;
}
}
}
}
max = temp;
}
cout << endl << " Нет решений! ";
fflush(stdin);
cin.get();
break;
}
while (true);
return 0;
}
два раза зачем писать?
Введи в строку поиска гугла текст своей задачи.
#include <stdio.h>
int main(void)
{
unsigned int M, N;
printf("Input M and N: ");
scanf("%u %u", &M, &N);
printf("M / N = %u / %u <---> ", M, N);
for(unsigned int i = 2; (i <= M) && (i <= N); ++i)
if((M % i == 0) && (N % i == 0))
{
M /= i;
N /= i;
}
printf("P / Q = %u / %u\n", M, N);
return 0;
}
#include <stdio.h>
int main(void)
{
unsigned int M, N;
printf("Input M and N: ");
scanf("%u %u", &M, &N);
printf("M / N = %u / %u <---> ", M, N);
for(unsigned int i = 2; (i <= M) && (i <= N); ++i)
if((M % i == 0) && (N % i == 0))
{
M /= i;
N /= i;
}
printf("P / Q = %u / %u\n", M, N);
return 0;
}
Похожие вопросы
- Объясните, пожалуйста, как решить задачу по информатике...
- У Оли есть доступ к сети Интернет по высокоскоростному одностороннему радиоканалу.. . (Объясните пожалуйста как решать)
- объясните как задачу решать? С++
- Объясните пожалуйста супер чайнику как решить эту задачу
- Какие задачи решают программисты на практике?
- Программисты, объясните, пожалуйста, как компьютер выполняет задачу случайного выбора числа из ряда чисел?
- Помогите решить задачи на Си! Пожалуйста!!!
- Какого рода задачи решает программист уже работаю в индустрии?
- Для чего нужен указатель this и каков его принцип работы? Объясните пожалуйста самым простым языком, как 2+2.
- Объясните пожалуйста вот этот алгоритм в Free Pascal