Решение модуля 1.12 Введение в программирование C++

Модуль 1.12 (Стандартные алгоритмы STL)  в данном модуле будут изучены  разные алгоритмы, которые есть в стандартной библиотеке C++.
Ниже представлены примеры задач с решением на C++ на тему Стандартные алгоритмы STL.

Отсортируйте массив.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector <int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    sort(a.begin(), a.end());
    for (auto now : a) {

        cout << now << " ";
    }
    return 0;
}

В обувном магазине продается обувь разного размера. Известно, что одну пару обуви можно надеть на другую, если она хотя бы на три размера больше. В магазин пришел покупатель. Требуется определить, какое наибольшее количество пар обуви сможет предложить ему продавец так, чтобы он смог надеть их все одновременно.

#include <iostream>
#include <set>
using namespace std;

int main() 
{
    int n, size;
    cin>>size;
    cin>>n;
    set <int> s ;
    
    for (int i=0; i<n; i++){   
        int x;
        cin>>x;
        s.insert(x);
    }
    
    int i=0;
    int cnt=0;

    for (auto now=s.begin(); now!=s.end(); now++){
        if (*(now)-size>=0&&cnt==0){
            cnt++;
            size=*(now);
            i++;
        }

        else if(*(now)-size>=3||*(now)==size){
            cnt++;
            size=*(now);
            i++;
        }
            
        else
            i++;
    }
    
    cout<<cnt<<endl;
            
  return 0;
}

Во время проведения олимпиады каждый из участников получил свой идентификационный номер – натуральное число. Необходимо отсортировать список участников олимпиады по количеству набранных ими баллов.

#include <iostream>
#include <algorithm>
#include <set>
#include <utility>
#include <vector>

using namespace std;

struct olympiad {
    int member_number; // Номер участника олимпиады
    int num_of_points; // Количество баллов
};

bool sort_func (olympiad a, olympiad b)
{
    if (a.num_of_points != b.num_of_points) {
        return a.num_of_points > b.num_of_points;
    } else {
        return a.member_number < b.member_number;
    }
}

int main()
{
    int n;
    cin >> n;
    vector <olympiad> vect(n);
    
    for (int i = 0; i < n; i++) {
        int temp_member_number, temp_num_of_points;
        cin >> temp_member_number >> temp_num_of_points;
        olympiad struct_temp;                         
        struct_temp.member_number = temp_member_number; 
        struct_temp.num_of_points = temp_num_of_points; 
        vect[i] = struct_temp;
    }
    cout << endl;
    
    sort(vect.begin(), vect.end(), sort_func);
    for (auto now : vect) {
        cout << now.member_number << ' ' << now.num_of_points << endl;
    }
    
    system("pause");
    return 0;
}

Выведите все исходные точки в порядке возрастания их расстояний от начала координат. 

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

struct point {
  int x, y;
  float l;
};

bool cmp(point a, point b) {
  return a.l < b.l;
}

int main()
{
  int N, x, y;
  cin >> N;
  vector <point> a(N);
  for (int i = 0; i < N; i++)
  {
    cin >> x >> y;
    a[i].x = x;
    a[i].y = y;
    a[i].l = sqrt(float(x*x + y*y));
  }
  sort(a.begin(), a.end(), cmp);
  for (int i = 0; i < N; i++)
  {
    cout << a[i].x << " " << a[i].y << endl;
  }
    return 0;
}

Выведите фамилии и имена учащихся в порядке убывания их среднего балла.

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;

struct student {
	string name;
	int subj_1, subj_2, subj_3;
	int subj_mean;
};

bool cmp(student a, student b) {
	return a.subj_mean > b.subj_mean;
}

int main()
{
	int N, subj_1, subj_2, subj_3;
	string first_name, last_name;
	cin >> N;
	vector <student> a(N);
	for (int i = 0; i < N; i++)
	{
		cin >> first_name >> last_name >> subj_1 >> subj_2 >> subj_3;
		a[i].name = first_name + ' ' + last_name;
		a[i].subj_1 = subj_1;
		a[i].subj_2 = subj_2;
		a[i].subj_3 = subj_3;
		a[i].subj_mean = subj_1 + subj_2 + subj_3;
	}
	stable_sort(a.begin(), a.end(), cmp);
	for (int i = 0; i < N; i++)
	{
		cout << a[i].name << endl;
	}
	return 0;
}

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Andrew
Andrew
7 месяцев назад

Выведите все исходные точки в порядке возрастания их расстояний от начала координат. 
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

struct Point {
  int x;
  int y;
  double distance;
};

bool comparePoints(const Point &p1, const Point &p2) {
  return p1.distance < p2.distance;
}

int main() {
  int n;
  cin >> n;
   
  vector<Point> points(n);
   
  for (int i = 0; i < n; i++) {
    cin >> points[i].x >> points[i].y;
    points[i].distance = sqrt(pow(points[i].x, 2) + pow(points[i].y, 2));
  }
   
  sort(points.begin(), points.end(), comparePoints);
   
  for (int i = 0; i < n; i++) {
    cout << points[i].x << » » << points[i].y << endl;
  }
   
  return 0;
}

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x