Форум программистов, компьютерный форум CyberForum.ru

Несколько значений функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ странное употребления к-го слова typedef http://www.cyberforum.ru/cpp-beginners/thread664519.html
встречаю вот такой вид употребления ключевого слова typedef: typedef struct // Создаём структуру для звезд { int tmp; } name; это аналогично стандарту struct name{ int tmp;
C++ Распечатать анкетные данные студентов, не имеющих оценок 5 и 2 по информатике и математике Распечатать анкетные данные студентов, не имеющих оценок 5 и 2 по информатике и математике. http://www.cyberforum.ru/cpp-beginners/thread664508.html
C++ Сокрытие методов при наследовании
class A { public: void Draw(double){} }; class B : public A { public: void Draw(int){} };
C++ Вычисление цепных дробей
Здравствуйте ! я начинающий по программирований с++ найдите формулу плииз если N=3; 1+(1/(2+(1/3))) очень нужно!!! заранее спасибо
C++ Не может удалить элемент из вектора http://www.cyberforum.ru/cpp-beginners/thread664497.html
#include <iostream> #include <vector> #include <ctime> // function RandomInitializationVector #include <algorithm> void PrintElementVector(std::vector <int> vector); void RandomInitializationVector(std::vector <int> &vector, int size); bool Resheto_Atkina(int number); void DeletePrimes( std::vector<int> & vec ); void primes_up(std::vector <int> &vector1, std::vector <int> &vector2);
C++ Определить класс для рациональных чисел Начало изучения понятия класса и объекта в С++, для меня много не ясного. Помогите, пожалуйста. Задача: необходимо Определить класс (Rational) для рациональных чисел. Рациональное число - число кот может быть представлено как отношение двух целых чисел: 1/2, 3/4, 64/2 и т.д. Включить конструктор с 2 аргументами, кот может быть использован для установления member переменных объекта с любыми... подробнее

Показать сообщение отдельно
Gregory_Mas
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 26
06.10.2012, 15:11  [ТС]     Несколько значений функции
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Нет же. pair — это как раз тип данных "два значения". Фактически, это структура с двумя полями: first и second, хранящими ваши два значения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <utility>
 
/* (Неэффективный и неустойчивый к дуракам) рекурсивный поиск
 * максимума в массиве array в пределах [from; to)
 */
template <typename T>
std::pair<T, size_t> rec_max(const T array[], size_t from, size_t to)
{
  if (from != to - 1) {
    std::pair<T, size_t> first(array[from], from);
    std::pair<T, size_t> rest = rec_max(array, from + 1, to);
    return first.first > rest.first ? first : rest;
  }
  else {
    return std::pair<T, size_t>(array[from], from);
  }
}
 
int main()
{
  int array[] = {1, 2, 5, 3, 4};
  std::pair<int, size_t> max = rec_max(array, 0, 5);
  std::cout << "Max: " << max.first << " @ " << max.second;
}
ох ты, целая куча нового... Можете пояснить значения template <typename T>, std:air<T, size_t> rec_max(const T array[], size_t from, size_t to) (и отдельно про size_t, так как переменную я че-то не признаю), и rest?

Добавлено через 22 минуты
Вах! Программа выводит все правильно после того, как я изменил функцию так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int rec(int i, int max, int ind)
{
    int k,x;
    bool a;
    if ((i-1)!=-1)
    {
    i=i-1;
    k=m[i];
    return m[i] > max ? rec (i,m[i],i) : rec (i,max,ind);
    }
    else 
    {
        pair<int,int> p1(max,ind);
        cout<<endl;
        cout<<p1.first;
        cout<<" "<<p1.second;
        return max;
    }
}
Благодарю за подсказку с типом pair, теперь буду знать о его существовании. Но все же после успеха пояснения нужны, мало ли, когда понадобятся.
 
Текущее время: 17:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru