Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Xcalibur
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 11
#1

Циклические алгоритмы,Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день - C++

07.06.2014, 12:47. Просмотров 1697. Ответов 14
Метки нет (Все метки)

Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. В какой день суммарный пробег за все дни превысит M км.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2014, 12:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклические алгоритмы,Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день (C++):

Циклические алгоритмы,Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день он увелич - C++
Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. В...

Начав тренировки, лыжник в первый день пробежал 10 км - C++
Начав тренировки, лыжник в первый день пробежал 10 км. каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня....

Начав тренировки, спортсмен в первый день пробежал 10 км - C++
Короче вот задачка: Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы...

Задача на циклы. Начав тренировки, спортсмен в первый день пробежал 10 км. - C++
Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой...

Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км - C++
Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от...

В первый день спортсмен пробежал X километров, а затем он...(цикл while) - C++
В первый день спортсмен пробежал X километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу Y...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
07.06.2014, 12:51 #2
Сумма n первых членов геометрической прогрессии:

Циклические алгоритмы,Начав тренироваться, лыжник в первый день пробежал n км. Каждый следующий день

q = 1.1
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
07.06.2014, 12:52 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<cstdio>
 
double n, m;
int cnt;
 
int main()
{
  scanf("%lf%lf", &n, &m);
  while (n <= m)
  {
    n = (11 * n) / (double) 10;
    cnt++;
  }
  printf("%d\n", cnt);
}
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
07.06.2014, 12:56 #4
Долго считать будет. Задача решается без циклов намного быстрее.

+цикл написан неправильно. Нужно, чтоб сумма была меньше M, а не пробег за один день.
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
07.06.2014, 13:03 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Nekto, во-первых, в названии темы написано циклические алгоритмы, а во-вторых, http://www.cyberforum.ru/cgi-bin/latex.cgi?{1,1}^{200} это около http://www.cyberforum.ru/cgi-bin/latex.cgi?2*{10}^{8}, значит работать будет совсем быстро.
1
Xcalibur
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 11
07.06.2014, 17:13  [ТС] #6
Tchikh, а можеш помочь с методом решения и формулой ?
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
07.06.2014, 17:20 #7
Да, было чуть неправильно написано, извините

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<cstdio>
 
double n, m, sum;
int cnt;
 
int main()
{
  scanf("%lf%lf", &n, &m);
  while (sum <= m)
  {
    n = (11 * n) / (double) 10;
    cnt++;
    sum += n;
  }
  printf("%d\n", cnt);
}
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
07.06.2014, 18:53 #8
C++
1
static_cast<unsigned long long>(std::log(0.1 * m / n + 1) / std::log(1.1)) + 1;
Добавлено через 9 минут
Цитата Сообщение от Tchikh Посмотреть сообщение
Да, было чуть неправильно написано, извините

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<cstdio>
 
double n, m, sum;
int cnt;
 
int main()
{
  scanf("%lf%lf", &n, &m);
  while (sum <= m)
  {
    n = (11 * n) / (double) 10;
    cnt++;
    sum += n;
  }
  printf("%d\n", cnt);
}
n = 1, m = 1.09 -> твой код выдаст результат 1 вместо 2.
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
07.06.2014, 18:56 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<cstdio>
 
double n, m, sum;
int cnt;
 
int main()
{
  scanf("%lf%lf", &n, &m);
  while (sum <= m)
  {
    cnt++;
    sum += n;
    n = (11 * n) / (double) 10;
  }
  printf("%d\n", cnt);
}
0
Xcalibur
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 11
08.06.2014, 10:08  [ТС] #10
Tchikh, а можете решить это задачу еще раз с использованием цикла с постусловием (do … while ( )).?
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
08.06.2014, 10:14 #11
Xcalibur, попробуйте сами, это совсем просто
0
Xcalibur
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 11
08.06.2014, 10:16  [ТС] #12
мог бы сам не обращался за помощью )

Добавлено через 28 секунд
Tchikh, мог бы сам не обращался за помощью )
0
Tchikh
50 / 70 / 11
Регистрация: 23.01.2013
Сообщений: 273
08.06.2014, 10:22 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<cstdio>
 
double n, m, sum;
int cnt;
 
int main()
{
  scanf("%lf%lf", &n, &m);
  do
  {
    cnt++;
    sum += n;
    n = (11 * n) / (double) 10;
  } while (sum <= m);
  printf("%d\n", cnt);
}
1
Xcalibur
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 11
18.06.2014, 18:04  [ТС] #14
в тексте программ нет обнуления наращиваемых величин. Сможете добавить ?

Добавлено через 56 секунд
Tchikh, в тексте программ нет обнуления наращиваемых величин. Сможете добавить ?
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
18.06.2014, 22:23 #15
Цитата Сообщение от Xcalibur Посмотреть сообщение
в тексте программ нет обнуления наращиваемых величин. Сможете добавить ?

Добавлено через 56 секунд
Tchikh, в тексте программ нет обнуления наращиваемых величин. Сможете добавить ?
ты даже это не можешь сам сделать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 22:23
Привет! Вот еще темы с ответами:

День недели, выпадающий на дату d1, если известно, что в первый день нашей эры был понедельник - C++
Помогите пожалуйста!! день недели, выпадающий на дату d1, если известно, что в первый день нашей эры был понедельник.

Определить в какой день лыжник пробежит заданное расстояние (циклы) - C++
Начав тренировки лыжник в первый день пробежал N км. Каждый следующий день он увеличивал длину пробега на 10% от пробега предыдущего дня....

Следующий день - C++
Given three natural numbers a, b, c which represent the day, month and year of some date. For example: 1, 4, 1991 represents 1st April...

Выводим следующий день - C++
Нужна помощь... Нужно, чтобы когда вводишь день, месяц, год - то день отображался следующий. А также, чтобы когда 31.12.2014 число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2014, 22:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru