1) Что выведет эта программа при a = 4, b = 5 и c = 9? cout
1) Программа ничего не выведет, потому что она не скомпилируется из-за синтаксической ошибки.
Новые вопросы в Информатика
Безкошточні українські поштові сервіси
Сурактарға жауап берейік Ультрадыбыс датчигі дегеніміз не? Ультрадыбыс датчигінің қандай ерекшеліктері бар? 1. 2.
какие инструменты можно использовать для 3D редактирования нозвания
Родина збирається у відпустку. Підрахуйте, скільки необхідно витратити коштів на бiлети, за умови, що: 1. Їдуть двоє дорослих і дитина 2. Вартість кви … тка для дорослого-65 у. о. 3. Вартість квитка для дитини на 40% менша, ніж вартість квитка для дорослого 4. 1 у. о. = 28,37 грн Всі розрахунки виконайте в табличному процесорі Ехсеl, використовуючи формули та відносні, абсолютні і мішані посилання на клітинки. Все потрібно кинути у файлі Excel.
С++ для тех кто не шарит
Около трех лет назад, когда я пошел в девятый класс, остро встал вопрос о том, что мне делать дальше. Было несколько вариантов, но в итоге я выбрал Киевский Колледж Связи, который, по словам знакомого, лучший в Киеве из области программирования. Ожидая потока знаний в мою голову, я стал сам потихоньку углубляться в IT и ко второму курсу, когда в учебной программе наконец начали появляться специализированные предметы, уже имел некоторый, относительно неплохой багаж знаний. Окрыленный надеждой получить если не все знания этого мира, то хотя бы половину, я с разбегу ударился в стену разумных доводов о том, что не стоит ожидать от этого места чего-то заоблачного. И вот я сижу на очередной паре и вставляю спички в глаза, ибо все это я успел выучить за первые две недели целенаправленного погружения в это «болото». К концу года, когда вот-вот должна начаться сессия и практика, я окончательно осознал, что на всю группу найдется максимум 3 человека, которые все поняли и могут спокойно оперировать полученными знаниями. (Двое из этих людей и так варились в этом программистском котле, а третий очень заинтересовался где-то к концу первой четверти и достиг очень неплохого уровня за минимальный промежуток времени). Тогда у меня и родилась идея написать максимально подробную «шпаргалку» для тех, кто заинтересован в успешной сдаче сессии но не понял что происходило весь прошлый год. К сожалению мало кто пользовался ею, по этому я решил предоставить ее более широкой общественности, ибо жалко добру пропадать.
Теперь по сути
Для начала стоило бы рассказать как работает любая программа на элементарном уровне.
Любая программа, будь то на телефоне или компьютере, строится на взаимодействии с оперативной памятью устройства. Вся RAM делится на ячейки по 1 байту каждая. Но для удобного использования все эти ячейки, когда до них доходит очередь, зачастую группируются для хранения большего объема данных. Так например целое число, если не вдаваться в подробности, храниться в блоке из четырех ячеек памяти, то есть занимает 4 байта памяти. В результате 32-битное целое число, а в 4 байтах именно 32 бита, может достигать значений от -2^31 до (2^31)-1. Степень 31, а не 32 потому что первый бит отвечает за знак числа, если 0 то +, если 1 то -.
Перейдем непосредственно к тому, как это выглядит на практике. Простейший пример:
int a; a = 1;
Сразу стоит оговориться что в конце почти каждой строки, за некоторыми исключениями, следует писать ;
Строка int a; это непосредственно выделение тех четырех байт памяти под целое число. Мы взяли где-то в памяти 4 байта, присвоили им имя а и теперь можем обращаться к этой памяти как к чему-то единому, называя это целочисленной переменной.
Строка a = 1; задает нашей переменной значение равное 1 , фактически это значит, что в те 4 байта памяти запишется нечто вот такое: 00000000 00000000 00000000 00000001 . Тут 31 ноль и 1 единица в конце, это двоичное представление числа, что в нашем случае не сильно отличается от десятичного. Это действие, присвоение переменной начального значения, называется инициализацией.
Теперь немного упростим эту запись:
int a = 1;
Это абсолютно то же самое, только короче. Более того, многие среды разработки для С++ не дадут запустить код, если вы попытаетесь прочитать значение у переменной, которой не было задано значения. По этому присваивать переменным какое-то значение перед основными действиями являеться хорошим тоном.
Теперь попробуем немного похимичить:
int a = 1; int b = 2; int c = a + b;
Не сложно догадаться чему будет равно c . Это, на самом деле, и есть вся суть программирования, на основе одних данных получать другие. Все что тут произошло, можно переписать в виде 3 = 1 + 2 .
А сейчас покажу как довести учителя математики до истерики.
int c = 1; c = c + 1; c += 1; c++;
Строки со второй по четвертую на самом деле делают одно и тоже: просто к значению переменной c прибавляют 1 . Первый способ это прировнять c к этой же c только + 1 . Старая двойка, которая там была, перезапишется новым значением, в данном случае тройкой. То же самое, что мы делали в первом блоке, но теперь не просто число, а математическое выражение. Второй способ называется сложение с присваиванием. Это действие прибавляет к изменяемой переменной то число, которое написано в правой части, и потом записывает, получившийся результат, в эту же переменную — тройка перезапишется четверкой. Есть так же -= , *= , /= , думаю достаточно очевидно, что они сделают. Ну и третий способ: два плюса под ряд возле переменной — четверка перезапишется пятеркой.
++ / — меняет значение ТОЛЬКО на единицу ( — отнимает единицу).
Все три способа на программном уровне работают одинаково, и один не является более правильным, а другой менее, просто где-то удобно так, а где-то по другому.
Попробуем записать в перменную результат математического выражения 5 / 2 :
int a = 5 / 2;
На выходе мы ожидаем получить 2.5 , поскольку 5 / 2 = 2.5 Но компилятор уже спешит нас обламать и выводит в консоль ровно 2. Вернемся к битам и байтам. Наше число 5 (если обрезать левые 24 нолика) выглядит вот так: 00000101 а число 2 выглядит так: 00000010
Поговорим о типах данных. Мы все время использовали целое число, соответственно, если мы попытаемся присвоить целочисленной переменной дробное число, то компьютеру ничего не останется, кроме как записать в переменную целую часть числа, а дробную просто отбросить.
В следующем примере попробуем получить дробное число. Для этого воспользуемся типом float при создании переменной а :
float a = 5. / 2;
После 5 стоит точка для того чтобы указать компилятору что нам требуеться дробный ответ. Если же оставить там 5 / 2 то ответ все равно будет целым числом.
Ура, дробное число получено, можешь отметить этот день в своем календаре)))
Попробуем разные способы установки значений для дробных чисел:
float a = 3; a = 3.5; a = 1.;
Все выглядит вполне логично, за исключением последнего варианта. В нем мы просто не указывали дробную часть, но указали что это число дробное, тут это не особо полезно, но в других случаях это может пригодиться.
И так, мы уже знаем как создавать и работать с числовыми переменными. Но на этом много не напрограммируешь, необходимо как-то получать и обрабатывать данные из вне. Наподобие команды cout есть функция cin , которая принимает данные и записывает их в переменную.
int a; cout > a; cout bool a = true; a = 1 == 1; a = 1 == 2; a = a == false; a = !a;
Строка h = 1 == 1; . Что здесь происходит? Мы сравниваем 1 и 1 , равна ли единица единице. Разумеется что ответ правда, по этому на выходе мы получим значение true .
Вот сейчас очень важно, = это приравнивание, с помощью этого оператора мы задаем значение, а == это сравнивание, мы сравниваем два значения.
И так, переходим на третью строку: a = 1 == 2; 1 не равно 2 (как неожиданно), по этому результат сравнения будет false . Четвертая строка демонстрирует возможность сравнивать переменную с каким то значением или другой переменной. Поскольку на прошлой строке у нас получилась ложь, то сравнение false и false вернет, ожидаемо, правду. Ну и последняя строка, на которой мы берем значение обратное значению переменной a . Простыми словами это выглядит как не правда , что по другому является ложью .
Что ж, мы теперь полностью готовы к познанию того, как обрабатывать данные.
if(true)
Это, так называемое, условие if(условие) < действие >. Дословно это можно перевести так: «Если утверждение в круглых скобках правдиво, то выполнить действие в фигурных скобках». В нашем случае утверждение в скобках всегда правдиво, поскольку мы туда передаем заведомо правдивое значение.
Теперь немного усложним предыдущее условие.
bool a = false; if(a) < cout else
Вторая часть это else < действие >, которая дословно обозначает "Иначе, если условие не выполнилось, то. ". В данном случае, поскольку наша переменная a равна false , то выполниться блок else
Продолжаем познавать все прелести условий.
int a; cout > a; if(a < 5)< cout else if(i > 5) < cout 5" else
На этот раз у нас добавился блок else if(условие) < действие >, который будет выполнен в случае если первое условие не сработало. Дословно это значит "Иначе если первое условие не сработало, то проверить другое условие". Стоит заметить, что таких блоков с дополнительными условиями может быть сколько угодно, главное соблюдать порядок: if -> else if -> else .
Условия это конечно превосходно, но вся их сила раскрывается в тандеме с циклами. Всего есть три вида циклов, что на самом деле ложь, так как два из них в своей основе содержат третий. Сейчас станет понятнее.
Разберем фундаментальный вид циклов. Выглядит он так: while(условие) < действие >, и дословно значит: "Повторять действие в фигурных скобках, до тех пор, пока правдиво условие в круглых".
int a = 0; while(a != 5)< cout > a; >
Правда вот есть один нюанс, если мы поместим на место условия true , то цикл будет повторяться вечно. В нашем случае цикл будет повторяться до тех пор, пока не будет введено число 5.
А что делать если нам нужно четко установить количество повторений цикла? Нужна дополнительная переменная, которая будет выступать в роли счетчика.
int k = 0; while(k < 5)< cout for (int i = 0; i < 5; i++) < cout int i = 0; do < cout int i = 5; do < cout int A[10]; cout
В начале, как и при создании переменных, у нас стоит тип данных, в нашем случае int . После идет название массива и в квадратных скобках его длинна, то есть то, сколько значений в него можно поместить. Попробуем не вводить никаких значений, а просто вывести массив в консоль. Что ж, это немного не то, чего мы ожидали. Вместо набора из десяти случайных чисел мы получили нечто, что называется адресом. Про адреса мы поговорим чуть позже, а сейчас просто перепишем вывод так, чтоб на экран вывелисль значения из ячеек массива
Нумерация в массивах, и вообще в программировании в целом, начинается с нуля, по этому первый элемент массива это 0, а последний - его длинна минус один.
Все выглядит вполне естественно, за исключением того, что мы не задали значения ячейкам массива, и вместо них вывелось то, что лежало в тех местах памяти которую занимают ячейки массива, то есть просто мусор.
То же самое произойдет если мы выведем обычную перменную, не присваивая ей значения. Правда вот не везде программа запуститься, ибо довольно часто компиляторы запрещают использовать неинициализированные переменные.
Вот и настал тот момент, когда мы будем использовать циклы для каких-то осмысленных действий. В данном случае используем цикл for . Значения переменной i будут меняться от 0 до 9, что нам идеально подходит для использования в массиве.
for (int i = 0; i < 10; i++) < A[i] = i; >for (int i = 0; i
Первый цикл задает значения ячейкам массива, а второй их читает и выводит в консоль. Теперь это проще в написании и чтении.
Теперь вернемся к адресам. Но для начала расскажу что такое ссылки и как их использовать. Ссылочная переменная, хранит в себе исключительно ссылку на первый байт переменной, на которую он ссылается (Каждая ячейка памяти имеет свой адрес, записанный в шестнадцатеричной системе. Для доступа к значению переменной по ссылке необходимо лишь знать ее тип данных и ссылку на первый байт). Объявляется путем прибавления к имени ссылочной переменной знака & .
int a = 2; int &ref = a; cout int a = 2; int *ptr = &a; cout int a = 2; cout int A[10]; A[0] = 3; A[1] = 1; cout int const а = 6; cout int const а = 6; float const pi = 3.14; int В[a]; B[0] = 2; cout
Создавать массив можно только с целым количеством ячеек, по этому передать туда pi не получиться, хоть это и константа. Заполним массив степенями двойки и выведем его на экран. Как видим, элементов у нас 6, как и было записано в константе m .
Но что если мы попробуем при создании массива передать туда не константу, а переменную? У нас ничего не получиться, потому что при запуске нашего кода компилятору - программе, которая превращает наш текст в понятный для компьютера вид, нужно выделить под массив какое-то место, но если там стоит значение, которое может поменяться по ходу выполнения кода, то компилятор не будет знать сколько места ему выделять.
Если же нам все-таки нужен массив, с заранее не известным количеством ячеек, то мы можем воспользоваться динамическим массивом. Для его объявления воспользуемся уже изученным указателем.
int a; cout > a; int *C = new int[a]; for (int i = 0; i < a; i++) < cout > C[i]; > for (int i = 0; i
Мы создаем переменную-указатель, и помещаем в нее новый массив целых чисел (по структуре объявления думаю понятно что происходит). В квадратные скобки мы помещаем переменную a , которую мы вводили с клавиатуры. Ну и теперь можем вручную задать значения для ячеек.
Теперь давай подумаем, что если нам нужен не просто ряд чисел, а, скажем, таблица. Например, если нам нужна таблица 5 на 5, то мы можем взять массив из 25 ячеек и считать что первые пять элементов это первый ряд, вторые 5 это второй и так далее. Ну, или мы можем создать массив из 5 ячеек, а в качестве значений поместить в каждую ячейку еще по одному массиву из 5 элементов. Такая структура называется двумерный массив (таких итераций может быть сколько угодно, но на практике больше чем две не делают). Сейчас разберем как это рабоатет.
int D[5][5]; cout int D[5][5]; for (int i = 0; i < 5; i++) < for (int j = 0; j < 5; j++) < D[i][j] = (i + 1)*(j + 1); >> for (int i = 0; i < 5; i++) < for (int j = 0; j < 5; j++) < cout cout
Тут мы можем заметить кое-что новое, вложенные циклы. То есть мы запустили один цикл, внутри него запустился еще один, и уже внутри второго мы что-то делаем с массивом. Когда внутренний цикл закончиться, внешний выйдет на второй круг и опять запустит второй цикл. Вложенность у циклов и условий может быть любого уровня и сложности.
Но вернемся к массиву. Чтобы получить доступ к ряду, нам нужно в первых скобках указать номер ряда, а для доступа уже к элементу ряда, или же можно назвать это колонкой, нам нужно указать число во вторых скобках.
Что считать рядом, а что столбиком решает сам программист, но зачастую за ряды принимается первый индекс.
Ну и напоследок, заканчивая тему двумерных массивов поговорим про динамические двумерные массивы.
int a; cout > a; int **E = new int *[i]; for (int i = 0; i < a; i++)< E[i] = new int [a]; >for (int i = 0; i < a; i++) < for (int j = 0; j < a; j++) < cout cout
Мы создаем переменную E и указываем на двойную вложенность указателей.
Вообще, на самом деле, эти звездочки должны быть рядом с названием типа данных, вот так: int* , int** и тп, так как указатель это отдельный тип данных (двумерный динамический массив, это указательный тип данных от указательного типа данных, от int ), но писать * можно как рядом с названием типа данных, так и с названием переменной.
Но мы создали только внешний массив, а ведь в его ячейки нужно вложить другие динамические массивы. Сделаем это с помощью цикла.
Если мы на этом этапе установим для каждого вложенного массива свою индивидуальную длину, то такой массив будет называться зубчатым
К элементам динамических массивов так же можно обращаться с помощью ссылок и разыменовывания.
Теперь разберемся с таким понятием как функция. Вообще, все это время наш код запускался из функции которая называется main . С этой функции начинается выполнение любой программы на C++.
Разберем синтаксис функций. Функция создается почти так же как и переменная. В начале тип данных который будет возвращать функция, после идет имя функции, которое, кстати, не может совпадать с именами переменных и других функций, количество аргументов которых одинаково. Ну и рядом с именем круглые скобки с этими самыми аргументами. Тело функции окружено фигурными скобками, что создает новую область видимости.
Страшно и сложно. Посмотрим на пример
int function(int a)
Теперь посмотрим как это использовать
int function(int a) < int b = a * a; return b; >int main()< int a = function(5); cout int a = 0; std::cout
- модуль со строковым типом данных, которого в "чистом" С++ нету.
Небольшой экскурс. Строки, это на самом деле массивы символов, и чтоб не возникало возни с этим, создали модуль, который упрощает работу с ними. Если интересно как это устроенно на программном уровне, погугли "С-строки".
#include - Модуль, который позволяет взаимодействовать с WinAPI, проще говоря позволяет управлять системой виндовс. В нашем случае его можно использовать для этих двух строк.
SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8);
Первая строка задает кодировку для вывода консоли, вторая для ввода. Проще говоря, позволяет печатать на других языках по мимо английского.
Файл с кодом, приведенным в этой статье, ты можеш найти по этой ссылке на гитхаб
Заключение
Это далеко не полное руководство, ни по С++, ни по программированию в целом. Это всего лишь небольшой обзор самых основ программирования, и структуры выполнения кода в компьютере. Очень надеюсь, что мне удалось заинетерсовать тебя в дальнейшем изучении программирования.
Для дальнейшего изучения рекомендую сайт metanit. А так же можешь отдельно погуглить что-то из того что описано в этой статье, для более глубокого понимания темы.
- начинающим
- с++
- как научиться программировать
Что выведет эта программа при а 4 b 5 и c 9
Copy the app link with current input parameters. They will be displayed in the URL.
t = int ( input ( ) ) print ( t if t < 20000 else t * 0.87 ) print ( "ДА" if input ( ) == "Python" else "НЕТ" ) x , y = int ( input ( ) ) , int ( input ( ) ) print ( x if x > y else y )
n = input ( ) print ( "YES" if n == n [ : : - 1 ] else "NO" )
a , b , c , = ( int ( e ) for e in input ( ) . split ( ) ) print ( "YES" if a + b == c else "NO" )
s , t = input ( ) , input ( ) print ( "YES" if s == t [ : : - 1 ] else "NO" )
a , b , c = ( int ( input ( ) ) for _ in range ( 3 ) ) print ( "YES" if a + b > c and a + c > b and b + c > a else "NO" )
n = input ( ) . rjust ( 6 , "0" ) print ( "YES" if sum ( int ( v ) for v in n [ : 3 ] ) == sum ( int ( v ) for v in n [ 3 : ] ) else "NO" )
col1 , row1 = list ( input ( ) ) col2 , row2 = list ( input ( ) ) cols = "abcdefgh" print ( "NO" if ( cols . find ( col1 ) + int ( row1 ) + cols . find ( col2 ) + int ( row2 ) ) % 2 else "YES" )
print ( ( 'YES' , 'NO' ) [ int ( input ( ) + input ( ) , 19 ) & 1 ] )
# №1 n = int ( input ( ) ) t = 0 for i in range ( 1 , n + 1 ) : t += ( - 1 ) ** i * i print ( f"i = < i >, t = < t >" ) # №2 from math import ceil n = int ( input ( ) ) print ( n // 2 if not n % 2 else - ceil ( n / 2 ) )
a , b = int ( input ( ) ) , int ( input ( ) ) print ( ">" if a > b else " <" if b >a else " token punctuation">)">
tp = tuple ( int ( input ( ) ) for _ in range ( 3 ) ) m = tp [ 0 ] for i in tp [ 1 : ] : if i > m : m = i print ( m )
n = int ( input ( ) ) print ( 0 if n < 2 else int ( n / 2 ) if not n % 2 else n )
tp = tuple ( int ( v ) for v in input ( ) . split ( ) ) mx = mn = tp [ 0 ] for i in tp [ 1 : ] : if i > mx : mx = i elif i < mn : mn = i print ( mx - mn )
g = ( int ( v ) for v in input ( ) . split ( ) ) mx = mn = next ( g ) for i in g : if i > mx : mx = i elif i < mn : mn = i print ( mx - mn )
a , b = input ( ) . lower ( ) , input ( ) . lower ( ) print ( - 1 if a < b else 1 if b < a else 0 )
s , v1 , v2 , t1 , t2 = ( int ( v ) for v in input ( ) . split ( ) ) if ( s * v1 + t1 * 2 < s * v2 + t2 * 2 ) : print ( 'First' ) elif ( s * v1 + t1 * 2 >s * v2 + t2 * 2 ) : print ( 'Second' ) else : print ( 'Friendship' )
a , b = ( input ( ) . lower ( ) for _ in range ( 2 ) ) z = "ь" + a [ - 1 ] print ( "Good" if b [ 0 ] == a [ - 1 ] or b [ 0 ] == in ( "ь" + a [ - 1 ] ) else "Bad" )
a , b = ( input ( ) . lower ( ) for _ in range ( 2 ) ) if b [ 0 ] == a [ - 1 ] or b [ 0 ] == a [ - 2 ] and a [ - 1 ] == "ь" : print ( "Good" ) else : print ( "Bad" )
n = int ( input ( ) ) print ( "FizzBuzz" if n % 3 == 0 and n % 5 == 0 else "Buzz" if n % 5 == 0 else "Fizz" if n % 3 == 0 else n )
tp = tuple ( int ( input ( ) ) for _ in range ( 3 ) ) res = 0 for i in set ( tp ) : n = tp . count ( i ) if tp . count ( i ) - 1 : res += n print ( res )
print ( ( "Декабрь" , "Январь" , "Февраль" , "Март" , "Апрель" , "Май" , "Июнь" , "Июль" , "Август" , "Сентябрь" , "Октябрь" , "Декабрь" ) [ int ( input ( ) ) % 12 ] )
n = int ( input ( ) ) lims = ( 2 , 4 , 12 , 19 , 65 , 66 ) desc = ( "Младенец" , "Малыш" , "Ребенок" , "Подросток" , "Взрослый человек" , "Пожилой человек" ) for i , lim in enumerate ( lims ) : if n < lim : break print ( desc [ i ] )
Операторы цикла
В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием, цикл for .
Цикл while ("пока") с предусловием
Цикл while с предусловием позволяет выполнить одну и ту же последовательность действий пока проверяемое условие истинно. При этом условие записывается до тела цикла и проверяется до выполнения тела цикла.
При выполнении цикла while сначала проверяется условие. Если оно ложно, то цикл не выполняется и управление передается на следующую инструкцию после тела цикла while . Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.
Синтаксис цикла while ("пока") c предусловием такой:
while (условие)
блок инструкций
>
Следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется . Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11, поскольку именно при i==11 условие i
В следующем примере цикл используется для того, чтобы найти количество знаков в десятичной записи целочисленной переменной i .
Внутри цикла значение переменной n уменьшается в 10 раз до тех пор, пока она не станет равна 0. Уменьшение целочисленной переменной в 10 раз (с использованием целочисленного деления) эквивалентно отбрасыванию последней цифры этой переменной.
Цикл while ("пока") с постусловием
Цикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):
do
Блок инструкций
>
while (условие);
Поскольку условие проверяется после выполнения тела цикла, то блок цикла с постусловием всегда будет выполнен хотя бы один раз, независимо от истинности условия. Это может привести к ошибкам, поэтому использовать цикл while с постусловием следует только тогда, когда это действительно упрощает алгоритм.
Упражнения
Во всех задачах этого листочка основная (содержательная) часть программы должна быть оформлена в виде функции. Функция main должна считывать значения входных данных, вызывать основную функцию, решающую задачу, выводить результат на экран.
- (A) Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n. (например, при вводе 50 программа должна вывести 1 4 9 16 25 36 49 ).
- (B) Дано натуральное число n. Определите, является ли оно степенью числа 2, и выведите слово YES , если является и слово NO , если не является.
- (C) Для данного натурального числа n определите такое наименьшее целое k, что 2 k ≥n. Например, при вводе числа 7 программа должна вывести 3 .
- (D YES) В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров. Например, при вводе 10 20 программа должна вывести 9 . x и y – действительные числа, ответ – целое число.
- (E) В первый день спортсмент пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который суммарный пробег спортсмена составит не менее y километров. Например, при вводе 10 100 программа должна вывести 8 .
- (F) Дано натуральное число n. Напишите функцию int SumOfDigits (int n) , вычисляющую сумму цифр числа n. Выведите сумму цифр числа n.
- (G) Дано натуральное число n. Напишите функцию int NumberOfZeroes (int n) , определяющую количество нулей среди всех цифр числа n. Выведите результат.
- (H) Дано натуральное число n. Напишите функцию int MinDigit (int n) и int MaxDigit (int n) , определяющую наименьшую и наибольшую цифры данного числа. Выведите наименьшую и наибольшую цифры данного числа (например, при вводе 179 программа выводит 1 9 ).
- (I) Вводится последовательность целых чисел до тех пор, пока не будет введено число 0. После ввода числа 0 программа должна завершить свою работу и вывести сумму введенных чисел.
- (J) По данному натуральному числу n найдите сумму чисел 1+1/1!+1/2!+1/3!+. +1/n!. Количество действий должно быть пропорционально n. Напишите программу, которая считывает значение n и выводит результат в виде действительного числа. К чему будет стремиться эта сумма при росте числа n?
- (K) По данному числу n выведите n-e число Фибоначчи. Использовать рекурсию нельзя.
- (L) Напишите функцию int reverse(int n) , которая переставляет цифры числа в обратном порядке (например, reverse(179)==971 ). Напишите программу, которая по данному натуральному n печатает его цифры в обратном порядке.
- (M) Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите функцию bool IsPalindrome (int n) , проверяющую по данному числу n, является ли оно палиндромом. Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K. Например, при вводе 1 программа выводит 1 , а при вводе 100 программа выводит 18 .