- Типы данных, переменные и константы
- Ввод с клавиатуры и вывод данных на экран
- Арифметические операции и комбинированные операторы
- Операторы выбора if и else в С++
- Оператор switch в С++
- Цикл for в C++
- Циклы while, do while, вложенные циклы
- Двумерные массивы C++
- Массивы в C++
- Функции в C++
- Указатели C++
- Указатель на указатель C++
- Классы в С++
Дополнительный сборник задач с решениями
На этой странице собраны все задачи по темам уроков, размещенных на нашем сайте. К каждой задаче прилагается наш вариант решения. Постарайтесь всё же решать их самостоятельно и только потом сравнивать наш исходный код со своим. “Хочешь научиться программировать – программируй”!
Больше практических заданий с решениями найдёте здесь.
Рекомендуем посетить Сайт для юных программистов – где вы найдете уроки по различным языкам программирования (в том числе для детей), 3D-моделированию, Linux и др.
создавать функции, в какие передавать данные, как параметры;
Извлечь из текстового файла f все строки, длина которых меньше 3. Результат записать в файл g.
#include
#include
#include
#include
статический стандарт::вектор read_file(std::string);
статическая пустота print_vector(std::вектор);
статический стандарт::вектор delete_lines(std::вектор &, размер_t);
статический недействительный save_file(std::string, std::вектор);
int main()
{
std::строка имя_файла;
std::cout <> имя файла;
std::GetChar();
std::вектор all_lines = read_file(имя файла);
print_vector(все_линии);
std::вектор out_lines = delete_lines(все_линии, 3);
print_vector(out_lines);
std::cout <> имя файла;
std::GetChar();
std::GetChar();
сохранить файл(имя файла, out_lines);
return 0;
}
статический недействительный save_file(std::строка имя_файла, std::вектор вектор)
{
std::выходной файл ofstream;
outfile.open(имя файла, std::ИОС::вне);
if (!outfile.is_open())
{
std::cout << "error open file\n";
}
else
{
for (размер_т я = 0; i < вектор размер(); i )
{
из файла << Vect[i] << std::endl;
}
}
outfile.close();
}
статический стандарт::вектор delete_lines(std::вектор & Vect, size_t длина)
{
статический стандарт::вектор result_vect;
for (размер_т я = 0; я лен)
{
результат_вект.push_back(Vect[i]);
}
}
вернуть результат_вектор;
}
статическая пустота print_vector(std::вектор вектор)
{
std::cout << "\n====================" << std::endl;
for (размер_т я = 0; i < вектор размер(); i )
{
std::cout << Vect[i] << std::endl;
}
std::cout << "\n====================" << std::endl;
}
статический стандарт::вектор read_file(std::строка имя_файла)
{
std::ломаная линия;//Невозможно прочитать свойства неопределенного (чтение «setAtlas»)
std::вектор вектор;
std::входящий файл ifstream(имя файла, std::ИОС::в);
if (!infile.is_open())
{
std::cout << "error read file\n";
}
while (!infile.eof())
{
std::getline(вводить, линия);
вектор.push_back(линия);
}
infile.close();
вернуть Вект;
}
Программа, которая по вектору A, формирует вектор B, в котором будут только парные элементы вектора A
Определить, принадлежит ли точка N(x;и) треугольнике, образованном осями AB,
AC и прямой
у = 7,6х – 3.5
Корабль может уместить в трюме N кг золота (N вычитывается с клавиатуры).
Окно конвейера, поставляющий слитки золота к нему имеет размеры W = 50см (длина) и H = 50см (высота).
Пользователь с клавиатуры вводит размеры (вес,час,L) золотых слитков, которые можно положить на конвейер.
Слитки, большие по размерам за окно конвейера к трюму не попадают и не относятся на конвейер.
Необходимо заполнить трюм корабля золотыми слитками по максимуму, но не перегрузить его.
Смоделировать процесс отбора слитков золота, которые попадают в трюм.
На экран нужно вывести:
– размеры слитков золота и их массу.
– необходимость их поворотов на конвейере для попадания в трюм или факт того, что слиток не подходит.
– остаточный вес в трюме для золота (сколько еще килограммов может вместить трюм).
Программа выполняется пока (или):
– Трюм не будет полон;
– Его заполненность будет меньше максимальной на 10-20 кг ты 3 слитки подряд не прошли до трюма.
– Пользователь не введет символ, который останавливает выполнение программы.
Дополнительно: слитки золота можно генерировать случайным образом с ромерами от 1см до 100см., при этом:
– вывод на экран должен остаться прежним.
– количество слитков, которые подряд не прошли до трюма составляет по меньшей мере 10.
1. Файл содержит 100 целых чисел. Подсчитать, сколько среди них есть
троек и сколько чисел больше десяти.
2. Файл содержит 50 действительных чисел. Подсчитать, сколько среди них есть
отрицательных чисел (вывести на экран). Вывести в другой файл номера
позиций, в которых находятся отрицательные числа и их значения.
3. Написать программу, считывающую из файла результаты некоторого
эксперимента, вычисляющего среднее значение, абсолютную и относительную
погрешность измерения и результат дописывает в данный файл
#include
#include
#include
#include
#include
константа стандартная::строка ФАЙЛ_ИМЯ = “exp_021.bin”;
постоянный размер_t MAX_LEN = 100;
пустота fill_array(int *);
недействительным print_array(int *);
логическое значение save_array(int *, размер_t , std::string);
логическое значение load_array(int *, размер_t , std::string);
size_t calculate_by_value(int *, int);
size_t calculate_by_value2(int *, int);
int main()
{
srand(time(nullptr));
int * int_array = новое целое число[MAX_LEN];
fill_array(int_array);
print_array(int_array);
save_array(int_array, MAX_LEN, ИМЯ ФАЙЛА);
load_array(int_array, MAX_LEN, ИМЯ ФАЙЛА);
print_array(int_array);
std::cout << "\nthe number of numbers is equal 3 = " << рассчитать_по_значению(int_array,3);
std::cout << "\nnumber of numbers greater than 10 = " << рассчитать_по_значению2(int_array,10);
}
size_t calculate_by_value2(int * arr, целое значение)
{
количество_размеров = 0;
for (размер_t я = 0 ; Я ценю)
{
count ;
}
}
количество возвратов;
}
size_t calculate_by_value(int * arr, целое значение)
{
количество_размеров = 0;
for (размер_t я = 0 ; i< MAX_LEN ; i )
{
if (arr[i] == значение)
{
count ;
}
}
количество возвратов;
}
логическое значение load_array(int * arr, длина size_t , std::строка имя_файла)
{
std::если поток(имя файла, std::ИОС::бинарный | std::ИОС::в);
if ( !is.is_open() )
возвращение ложным;
есть.читать(переинтерпретировать_cast(arr), std::размер потока(длина * размер(int)));
закрыто();
возвращает истину;
}
логическое значение save_array(int * arr, длина size_t, константа стандартная::строка имя_файла)
{
std::вне потока нас(имя файла, std::ИОС::бинарный | std::ИОС::вне);
if ( !os.is_open() )
возвращение ложным;
os.write(переинтерпретировать_cast(arr), std::размер потока(длина * размер(int)));
os.close();
возвращает истину;
}
недействительным print_array(int arr[])
{
std::cout << "\n==========================\n";
for (размер_t я = 0 ; i< MAX_LEN ; i )
{
std::cout << arr[i] << "\t";
if (я% 7 == 0)
{
std::cout << std::endl;
}
}
std::cout << "\n==========================\n";
}
пустота fill_array(int arr[])
{
for (размер_t я = 0 ; i< MAX_LEN ; i )
arr[i] = интервал(rand());
}
#include
#include
#include
#include
#include
Федерация конькобежного спорта решилась на необычный эксперимент. Теперь на костюмах спортсменов вместо стартовых номеров будут написаны стартовые строчки.. Планируется, что это повысит зрелищность соревнований. Тем более что строки планируется генерировать случайным образом.
Формально генерация строки выглядит следующим образом. Строка определяется последовательностью случайных символов. Каждый символ генерируется независимо от N первых букв латинского алфавита с одинаковой вероятностью и добавляется в конец существующей строки. Символ прилагается к строке до тех пор, пока в строке не встретится в качестве подстроки один из заданных шаблонов.
Необходимо найти математическое ожидание длины сгенерированной строки.
Входные данные
В первой строке записаны числа N и M (1 ≤ Н ≤ 8, 1 ≤ М ≤ 10). N – количество используемых букв в алфавите. M – количество шаблонов. Далее записано M строк, содержащие шаблоны, состоящие из N первых букв алфавита. Длина шаблонов не превышает 10.
Исходные данные
Выведите математическое ожидание длины строки с точностью два знака после десятичной точки.
В некоторой школе каждый школьник имеет свой личный номер ICQ. В школе распространено мнение, что чем меньше значение номера ICQ, тем более “продвинутим” есть школьник. Известен список всех школьников с номерами ICQ. Нужно вывести список K самих “продвинутих” школьников.
Входные данные
В первой строке содержится количество учащихся в школе N (1 ≤ Н ≤ 100) и число K (1 ≤ К ≤ Н). Далее следует N строк, в каждой строке содержится фамилия школьника (без пропусков, содержит не больше 20 строчных латинских букв) и через пропуск номер ICQ (1 ≤ ICQ ≤ 109). Номера ICQ и фамилии у школьников разные.
Исходные данные
Вывести фамилию K самих “продвинутих” школьников в лексикографическом порядке (по алфавиту). Каждая фамилия выводится в отдельной строке.
Примеры
Ниже вы найдете примеры входящих данных и ответов, которые должна вывести ваша программа.