![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Заблокирован
Форумчанин
Регистрация: 22.01.2008
Сообщений: 121
|
![]()
У меня тут пара задачек, помогите, кто сможет.
1. Дана длина L окружности, найти её радиус R и площадь S круга, ограниченного сей окружностью. #include<iostream.h> #include<math> int main() { int L,R,S; const P=3.14; cout<<"L="; cin>>L; R=L/(2*P); S=P*pow(R,2); cout<<"R="<<R; cout<<"S="<<S; cin>>S; return 0; } Вроде код правильный, но ответ выводит неправильный. 2. Дано число а>1.Вывести наибольшее из целых чисел К, для которых сумма 1+1/2+,,,+1/К будет меньше а, и саму эту сумму Буду очень признателен за помощь. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Я же Вам в той теме еще написал, поменяйте int L,R,S на float L,R,S.
![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Заблокирован
Форумчанин
Регистрация: 22.01.2008
Сообщений: 121
|
![]() |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() |
![]() |
![]() |
![]() |
#6 | |
Заблокирован
Форумчанин
Регистрация: 22.01.2008
Сообщений: 121
|
![]() Цитата:
![]() Мысли-то есть. Я так понял: сначала нужно присвоить К и S значение 1. затем, увеличивая число К на один, проверять значение S - не больше ли оно десяти. к=1, s=1<10, следовательно проверяем дальше к=2, s=1+1/2 и т.д., пока сумма s не станет больше "10". как только s достигнет крайнего значения, вывести текущее значение К и S. бред, конечно, но вот до чего я додумался #include<iostream.h> #include<math> int main() { int a; cout<<"a="; cin>>a; int k=1; int s=1; while(s=a) while(k=1000000) s+=1/k; cout<<"s="<<s; cin>>s; return 0; } |
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
В принципе, почти так.
Только у Вас во-первых старая ошибка - путаете целые и вещественные типы, во-вторых S вначале должна быть равна нулю (K с единицы начинаем), в-третьих, забываем увеличивать K, в четвертых у вас перепутаны условия обоих циклов - нам надо считать пока меньше, а не пока равно - S мы вообще можем проскочить и из первого цикла никогда не выйдем (из второго вообще не вышли бы - K не увеличивалась) Вот так можно исправить Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
1.Начальное значение s=0;
2.Выполняем цикл пока s<=a. 3.Выводим не s=, а s-1/k, т.к. последняя сумма будет больше а, и не k, а k-1, т.к. k тоже будет следующий за нужным. Когда сделаешь, проверь при небольших а(1.5,1.75,2.0). |
![]() |
![]() |
![]() |
#9 |
Заблокирован
Форумчанин
Регистрация: 22.01.2008
Сообщений: 121
|
![]()
Если я правильно понял, то программа должна выглядеть так
#include <iostream.h> int main() { int a; long k=1; float s=0; cout<<"a="; cin>>a; while(s <= a) while(k < 1000000) s += 1/(float)k++; cout<<"s="<<s-1/k; cout<<"k="<<k-1; cin>>s; return 0; } только вот цикл не хочет кончаться. При любом а ответ выходит такой S=14,3574, к =999999 |
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите, пожалуйста, с решением | Akademik | Помощь студентам | 2 | 23.04.2008 23:17 |
Помогите с решением функций. | Nikopol | Помощь студентам | 6 | 15.06.2007 23:57 |
Помогите с решением задачи!Please! | Инзия | Помощь студентам | 3 | 11.03.2007 07:50 |