Другие языки программирования и технологии
Помогите написать школьную програмку.
Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от предыдущего дня. Определить в какой день он пробежит 20 км, а в какой день суммарный пробег за все дни превысит 100км. Желательно в C++, заранее благодарю.
Твоя задача в гугле на каждом шагу.
Сумма геометрической прогрессии: s = a0+(pow(q, n)-1.0)/(q-1.0). В данном случае a0 == 10, q == 1.1
s = a0 * (pow(q, n) - 1.0) / (q - 1.0) => pow(q, n) = s * (q - 1.0) / a0 + 1.0 =>
n * log(q) = log(s * (q - 1.0) / a0 + 1.0) =>
n = log(s * (q - 1.0) / a0 + 1.0) / log(q)
Подставляешь a0, q, s, округляешь результат до целого числа дней.
s = a0 * (pow(q, n) - 1.0) / (q - 1.0) => pow(q, n) = s * (q - 1.0) / a0 + 1.0 =>
n * log(q) = log(s * (q - 1.0) / a0 + 1.0) =>
n = log(s * (q - 1.0) / a0 + 1.0) / log(q)
Подставляешь a0, q, s, округляешь результат до целого числа дней.
Игорь Ништяков
степень 1.1 не приращивает 10%
Бросай свою "Тюрягу", начинай учиться, а то так дурачком и останешься хД
Дмитрий Красноцветов
5 лет назад играл, когда в 7 классе был
логика примерно такая:
x=10;
day_number = 0;
// Начало цикла
while (x<=100)
{
day_number = day_number + 1;
x_next=x+(x*0.1) // тип double, бежит столько на каждый следующий день.
// Если 20 км - сказать какой день
if(x=20)
{
MessageBox.Show(x + "километров пробежал в " + day_number + " -й день. ");
}
if(x=100)
{
MessageBox.Show("Пробежал больше " + x + "километров в " + (day_number+1) + " -й день. ");
}
}
PS: писал с мобилы, не могу проверить на компе.
x=10;
day_number = 0;
// Начало цикла
while (x<=100)
{
day_number = day_number + 1;
x_next=x+(x*0.1) // тип double, бежит столько на каждый следующий день.
// Если 20 км - сказать какой день
if(x=20)
{
MessageBox.Show(x + "километров пробежал в " + day_number + " -й день. ");
}
if(x=100)
{
MessageBox.Show("Пробежал больше " + x + "километров в " + (day_number+1) + " -й день. ");
}
}
PS: писал с мобилы, не могу проверить на компе.
Игорь Ништяков
Твой код вроде г0вно. Он работает только для 20 км. Если поставить больше, то он не сработает
#include
#include
using namespace std;
int main(int argc, char** argv) {
int day = 1;
float range = 10;
float sumrange = range;
int firstSolution = 0, secondSolution = 0;
while(true) {
range += range * 0.1;
sumrange += range;
++day;
if (range >= 20 && firstSolution == 0)
firstSolution = day;
if (sumrange >= 100 && secondSolution == 0)
secondSolution = day;
if (firstSolution != 0 && secondSolution != 0)
break;
}
std::cout << "20 километров лыжник пробежал за " << firstSolution << " дней" << std::endl;
std::cout << "100 километров лыжник пробежал за " << secondSolution << " дней" << std::endl;
return 0;
}
#include
using namespace std;
int main(int argc, char** argv) {
int day = 1;
float range = 10;
float sumrange = range;
int firstSolution = 0, secondSolution = 0;
while(true) {
range += range * 0.1;
sumrange += range;
++day;
if (range >= 20 && firstSolution == 0)
firstSolution = day;
if (sumrange >= 100 && secondSolution == 0)
secondSolution = day;
if (firstSolution != 0 && secondSolution != 0)
break;
}
std::cout << "20 километров лыжник пробежал за " << firstSolution << " дней" << std::endl;
std::cout << "100 километров лыжник пробежал за " << secondSolution << " дней" << std::endl;
return 0;
}
Сергей Безлюдов
include cstdlib и iostream
Похожие вопросы
- Помогите написать 2 програмки на Турбо Паскале.
- помогите написать програмку (Pascal)!)
- Написала небольшую програмку, но в ней что-то не так, проверьте
- кто знает Паскаль помогите написать програмку
- Помогите написать легкую вирусную програмку
- Помогите Написать програмку на си ) Плиииз)
- Turbo Pascal . Помогите составить простенькую програмку!
- Как подписывать файлы своей ЭЦП? Хочу написать свою програмку для этого.
- Напишите пожалуйста програмку в паскале. ОООЧЕНЬ НУЖНО. Зарнее спасибо.
- Коллеги, помогите пож. , нужна програмка читающая файлы с расширением *.djvu (хотя бы ее название).