С клавиатуры вводятся четыре целочисленных числа a, b, с, d. Найти максимальное среди них. Запрещается написание функции, параметрами которой являются все четыре введённых числа.
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
//объявление переменных
long long a, b, c, d;
cout <<"Введите числа" << endl << "a b c d: ";
//ввод чисел
cin >> a >> b >> c >> d;
//сравнение и вывод максимального числа
cout <<"Максимальное число: "<< max(a, max(b, max(c, d)));
}
C/C++
Программирование на С++. Напишите мой код с использованием подпрограммы
Не понял, а как передавать тогда? Массивом? Типа того?
Ещё можно побороть глубину рекурсии, делая два вызова для половинок массива. Кстати, такой вариант ещё и лучше параллелится.
Вызывается всё это примерно так:
long long max(long long *ns) {
return max(ns[0], max(ns[1], max(ns[2], ns[3])));
}
Или там нужно рассчитывать на переменную длину? long long max(long long *ns, int count) {
if (count < 1) return LLONG_MIN;
long long m = ns[0];
for (int i = 1; i < count; i++) {
if (ns[i] > m) m = ns[i];
}
return m;
}
Или можно рекурсивно: long long max(long long *ns, int count) {
return count < 1 ? LLONG_MIN : max(ns + 1, count - 1, ns[0]);
}
long long max(long long *ns, int count, long long m) {
return count < 1 ? LLONG_MIN : max(ns + 1, count - 1, max(m, ns[0]));
}
Не знаю, современный сиплюхплюх умеет в хвостовые оптимизации или нет, но при размере учебных массивов это, наверное, неважно.Ещё можно побороть глубину рекурсии, делая два вызова для половинок массива. Кстати, такой вариант ещё и лучше параллелится.
long long max(long long *ns, int count) {
if (count < 1) return LLONG_MIN;
if (count == 1) return ns[0];
if (count == 2) return max(ns[0], ns[1]);
return max(max(ns, count / 2), max(ns + count / 2, count - count / 2));
}
Здесь глубина рекурсии log2(N) вместо N, как в предыдущем примере.Вызывается всё это примерно так:
long long *numbers = new long long[] { a, b, c, d };
cout
D.e.t ...
Ну, если не сложно, то напишите программу, которая будет призывать функцию max
D.e.t ...
А как вызвать эту функцию в основной программе ? Можете написать код полностью ? Пожалуйста!
D.e.t ...
Первая ваша программа больше подходит
Александр Тимошик
т.е. :)
D.e.t ...
Спасибо, я разобрался, но скажите, что вы делаете во втором коде ? Что такое count?
#include
using namespace std;
int imax(int number) {
static int value = numeric_limits::min();
if (value < number) value = number;
return value;
}
int main() {
cout > a >> b >> c >> d;;
mx = imax(a);
mx = imax(b);
mx = imax(c);
mx = imax(d);
cout
Телепатически вводятся 4 значения.
Методом уринотерапии вычислить максимальное из них...
Методом уринотерапии вычислить максимальное из них...
Похожие вопросы
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Программирование, с++, изменить, либо дополнить код
- Написать фрагмент кода, где формируется двумерный массив, элементы которого могут быть тру и фолс
- Программирование c++. Помогите в написании кода!
- Строки с++, не получается написать никак код
- Напишите пожалуйста код на C++ или Python
- Написать фрагмент кода на си
- Программирование С++ . Напишите код
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- Указатели. Программирование с использованием динамических двухмерным масивов.