Задача с собеса в Yandex
Напишите код, который вернёт медиану из трёх чисел. Уточните определение медианы, если человек не знает.
Решение:
#include <algorithm>
int median3(int v1, int v2, int v3) {
int arr[] = {v1, v2, v3};
std::sort(arr, arr + 3);
return arr[1];
}
@codeof_art
Напишите код, который вернёт медиану из трёх чисел. Уточните определение медианы, если человек не знает.
//Интерфейс
int median3(int v1, int v2, int v3)
{
//реализация
}
assert(3 == median(2,5,3))
assert(2 == median3(2,2,1))
Решение:
int median3(int v1, int v2, int v3) {
int arr[] = {v1, v2, v3};
std::sort(arr, arr + 3);
return arr[1];
}
@codeof_art
🤯22🗿5❤1
Задача с собеса в Яндекс
Что будет, если попытаться скомпидировать, а потом попытаться запустить следующую программу?
Решение:Ошибка компиляции из-за:
Неправильного оператора | между int* и 2.
Несоответствия формата %d и типа int*.
Если исправить синтаксис:
printf("%d\n", ((int*)2)+3 );
Компилятор выдаст предупреждение о несоответствии %d и int*.
При запуске — неопределённое поведение.
Верное решение:
printf("%d\n", 2 + 3); // Выведет 5
@codeof_art
Что будет, если попытаться скомпидировать, а потом попытаться запустить следующую программу?
#include <cstdio>
#include <cstdlib>
int main() {
printf("%d\n", ((int*|2)+3);
return EXIT_SUCCESS;
}
Решение:
Неправильного оператора | между int* и 2.
Несоответствия формата %d и типа int*.
Если исправить синтаксис:
printf("%d\n", ((int*)2)+3 );
Компилятор выдаст предупреждение о несоответствии %d и int*.
При запуске — неопределённое поведение.
Верное решение:
printf("%d\n", 2 + 3); // Выведет 5
@codeof_art
🗿10