В одном проекте прикручиваем он-лайн компилятор к учебной платформе, компилятор должен уметь выполнять код на C++ и на python. Появилась задача- придумать пример учебной задачи и предоставить его решение на обоих языках, что бы протестить компилятор.
Я уже приводил пример задачи, решеной на C++ и на python. И решение на python выглядело более понятным и лаконичным, но в том примере это происходило скорее из-за синтаксиса, так как синтаксис C++ более формальны и перегруженный.
Приведу еще один пример задачи и решение на двух языках.
Задача.
Составить программу, которая будет генерировать случайные числа в интервале [a;b] и заполнять ими двумерный массив размером 10 на 10. В массиве необходимо найти номер строки с минимальным элементом. Поменять строки массива местами, строку с минимальным элементом и первую строку массива. Организовать удобный вывод на экран.
Решение на C++
#include <iostream>
#include <iomanip>
//#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
double a, b; // границы отрезка [a,b]
cout << "Введите число а: ";
cin >> a;
cout << "Введите число в: ";
cin >> b;
double matrix[10][10]; // матрица случайных чисел
// инициализация двумерного массива случайными числами
for (int counter_rows = 0; counter_rows < 10; counter_rows++)
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
matrix[counter_rows][counter_columns] = (double(rand()) / RAND_MAX) * (b - a) + a; // генерация случайных вещестчвенных чисел равномерно распределённых на отрезке [a,b]
cout << "\nСгенерированный массив вещественных чисел" << endl;
// вывод сгенерированного массива
for (int counter_rows = 0; counter_rows < 10; counter_rows++)
{
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
cout << setw(7) << fixed << setprecision(3) <<matrix[counter_rows][counter_columns];
cout << endl;
}
double min = matrix[0][0]; // переменная, для хранения минимального значения
int nom; // порядковый номер строки с минимальным элеиентом
// поиск минимального элемента в массиве
for (int counter_rows = 0; counter_rows < 10; counter_rows++)
{
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
{
if (matrix[counter_rows][counter_columns] < min )
{
min = matrix[counter_rows][counter_columns]; // сохраняем значение минимального элемента
nom = counter_rows; // запоминаем номер строки
}
}
}
cout << "\nНомер строки с минимальным элементом: " << (nom + 1) << endl;
cout << "Минимальный элемент: " << min << endl;
// перестановка строк
if (nom != 0) // если минимальный элемент не содержится в первой строке
{
double temp[10]; // временный массив для хранения первой строки
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
temp[counter_columns] = matrix[0][counter_columns]; // сохраняем значения первой строки во временный массив
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
matrix[0][counter_columns] = matrix[nom][counter_columns]; // сохраняем значения строки с минимальным элементом в перой строке двумерного масссива
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
matrix[nom][counter_columns] = temp[counter_columns]; // перемещаем значения из временного массива на место строки с мин элементом
// вывод массива с перестановленными строками
cout << "\nМассив с перестановленными строками" << endl;
for (int counter_rows = 0; counter_rows < 10; counter_rows++)
{
for (int counter_columns = 0; counter_columns < 10; counter_columns++)
cout << setw(7) << fixed << setprecision(3) << matrix[counter_rows][counter_columns];
cout << endl;
}
} // конец if
return 0;
}
А теперь решение этой же задачи на python
from random import uniform
a=int(input('a='))
b=int(input('b='))
n, m = 10, 10
mas = [[round(uniform(a, b),3) for j in range(m)] for i in range(n)]
for i in mas:
for i2 in i:
print(i2, end=' ')
print()
m1=(min(map(min,mas)))
print(m1)
k=0
for i in mas:
if m1 in i:
break
k+=1
print(k)
mas[0],mas[k]=mas[k], mas[0]
for i in mas:
for i2 in i:
print(i2, end=' ')
print()
Очевидно, что на python код и короче и проще. Да возможно на C++ эффективней и не смотря на длину работать будет быстрее.
Но с точки зрения ресурса программиста, кажется, что одну и туже задачу, на python решить проще и быстрее.