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

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

Войти
Регистрация
Восстановить пароль
 
Sashak
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
#1

Циклы с условием окончания - C++

28.10.2012, 17:30. Просмотров 472. Ответов 5
Метки нет (Все метки)

Помогите пож-ста написать код программы
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 17:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклы с условием окончания (C++):

Циклы с условием - C++
Вот такую программу нажно написать, обьясните хотя бы с чего начать

Циклы с предварительным условием: вычисление числа Фибоначчи, не превосходящего заранее заданного N - C++
Написать программу вычисления числа Фибоначчи, не превосходящего заранее заданное число N. Числа Фибоначчи вычисляются с помощью следующих...

С++ Builder Циклы с условием (при вводе адреса цвета (например, 0 255 0) выдавать имя цвета) - C++
Help, не могу решить задачку ЛБ: нужно написать программу, при вводе адреса цвета (на пример 0 255 0 выдавал имя цвета). ...

Заменить в коде циклы for на циклы while - C++
int i, j, n; bool a; cin >> i >> n; for (i; i<n; i++) { a = true; for (j = 2; j <= i / 2; j++) if ((i%j) == 0) a =...

Условие окончания нуль - C++
#include <iostream> using namespace std; int main() { int inc; int max, i; cout << "vvedit elementu:" << endl; for...

Символ окончания строки - C++
Здравствуйте, помогите решить следующую проблему: Мне нужно чтобы программа прочитала строку, в которой содержатся числа. Строка64 58...

5
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 18:53 #2
что именно вам помочь? ведь вам требуется именно помощь а не написать за вас программу?
0
Sashak
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
28.10.2012, 20:07  [ТС] #3
Я вообщем то не очень шарю, с месяц наверно С++ изучаю только.
вот что у меня, наверно есть очень грубые ошибки. Просто я по клише делал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vcl.h>
#include <math.h>
#include <stdio.h>
#pragma hdrstop
#pragma argsused
void main()
{
double a, b, e, z, u;
int i,g,k,j;
        printf ( "\n\t * rabota # 3 * \n");
        printf ( "\n Student var 5 \n");
        scanf ("%lf", &z);
 
        a=1;
        b=2;
        z=u=a/b;
        g=50;
        e=pow(10,-15);
        for (k=0; k>=g; k++)
        for (j=0; j>=g; j++)
        for (i=0; fabs(u)<=g && fabs(u)>=e;)
        {
          i=i+1;
                a=(a*k)*(a*k);
                b=(2*(b*j));
                u=a/b;
                z=z+u;
                printf ("\n i = %3d u = %20.20lf  z = %20.20lf", i,u,z);
        };
        i=i-1;
        if (fabs(u)<=e) { printf("\n\n Ryd SXODITSY!!!\n\n i = %3d u = %20.20lf  z = %20.20lf", i,u,z);}
        if (fabs(u)>=g) { printf("\n\n Ryd NE SXODITSY!!!\n\n i = %3d u = %20.20lf  z = %20.20lf", i,u,z);}
}
так что вот
0
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 20:57 #4
Добавлено через 5 минут
ну вот совсем другая постановка вопроса =)
сразу совет, не пишите все в мэйне, делайте функции это значительно увеличит читабельность а следовательно поиск потенциальных ошибок.

вот исправленный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
#include <vcl.h>//Вот это
#pragma hdrstop//не знаю зачем подключаете
#pragma argsused//но пусть будет
 
double Fuct(int n){
    int fuct=1,buf=n;
    while(buf!=1){//соответственно нахождения факториала 
        fuct*=buf;
        buf--;
   }
    return (double)fuct;
}
void main(){
    printf ( "\n\t * rabota # 3 * \n");
    printf ( "\n Student var 5 \n");
    double eps=0.0001,res1=-2.0,res2=-1.0,n=1;
    while(abs(res1-res2)>eps){//на бесконечность программу же не заточишь =) найти как предел находить тоже не нашел, придумал по быстрому вот это, пока точность текучего и следующего значения суммы больше заданной точности находить следующее слогаемое
        res1=pow(Fuct(n++),2)/Fuct(2*n);//соответственно нахождение первого слагаемого и инкримент n
        res2=pow(Fuct(n++),2)/Fuct(2*n);//нахождение второго слагаемого и инкримент
    }
    printf ( "\n Summa ravna: %f\n",res1);//вывод результата
}
Добавлено через 5 минут
также эту разность можно запоминать и если следующая разность будет больше чем текущая - вывод что ряд не сходится и завершение цикла

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool fl=true;
double sh=10000;
while((abs(res1-res2)>eps)&&fl){
    if(abs(res1-res2)>sh)
        fl=false;
    res1=pow(Fuct(n++),2)/Fuct(2*n);
    res2=pow(Fuct(n++),2)/Fuct(2*n);
    sh=abs(res1-res2);
}
if(fl)
    printf("Ryad ne sthoditsya\n");
else
    printf("Ryad sthoditsya\n Summa ravna: %f\n",res1);
Добавлено через 12 минут
0
Sashak
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
28.10.2012, 21:23  [ТС] #5
да всё хорошо конечно вот только мы функции еще не прошли. Наверно я еще слишком плохо знаю си, т.к я половину из того, что вы написали не понял..)

Добавлено через 9 минут
Может можно как-то исправить, то что я накалякал?

Добавлено через 6 минут
Цитата Сообщение от Sashak Посмотреть сообщение
да всё хорошо конечно вот только мы функции еще не прошли. Наверно я еще слишком плохо знаю си, т.к я половину из того, что вы написали не понял..)

Добавлено через 9 минут
Может можно как-то исправить, то что я накалякал?
C++
1
2
3
g=50;
        e=pow(10,-15);
for (i=0; fabs(u)<=g && fabs(u)>=e;)
пытался ограничение набрать. Как то можно с помощью циклов решить? я пробовал, но у меня, как видите, получилось бог знает что..
0
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
28.10.2012, 21:53 #6
ну для простоты счас полностью рабочий код совмещу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <math.h>
double Fuct(int n){//Как видите функция состоит всего из 1го цикла, так что в мэйн перенести не составит большого труда =)
    int fuct=1,buf=n;
    while(buf!=1){
        fuct*=buf;
        buf--;
   }
    return (double)fuct;
}
void main(){
    printf ( "\n\t * rabota # 3 * \n");
    printf ( "\n Student var 5 \n");
    double eps=0.0001,res1=-2.0,res2=-1.0,n=1,;//задается ограничение eps 10^-4, 
//результатам присваиваю отрицательные значения и разность у них явно больше 0.0001
//это делается для того чтобы цикл запустился ну и задаю начальное n
    bool fl=true;//поднимаю флаг что функция сходится
    while((abs(res1-res2)>eps)&&fl){//идет проверка на точность найденного результата, а также сходится ли функция
       res1=pow(Fuct(n++),2)/Fuct(2*n);//ну тут вычисление как я говорил
       res2=pow(Fuct(n++),2)/Fuct(2*n);
       if(abs(res1-res2)>sh)//т.к. мы задали переменную отвечающую за предыдущую точность
//очень большую, то условие не выполнится и начнет работать уже сама сумма
           fl=false;
        sh=abs(res1-res2);//запоминает точность вычислений, соответственно при следующем проходе
//цикла если точность увеличится, то функция не сходится (это не для всех функций, но конкретно для этой подойдет).
//соответственно флаг упадет, цикл закончится
    }
    if(fl)//если флаг упавший вывести что функция не сходится
        printf("Ryad ne sthoditsya\n");
    else//если поднят вывести что ряд сходится и его сумму
        printf("Ryad sthoditsya\n Summa ravna: %f\n",res1);
}
Добавлено через 1 минуту
единственное у меня вопрос к вам, что за пресловутые
C++
1
2
3
#include <vcl.h>
#pragma hdrstop
#pragma argsused
1
28.10.2012, 21:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2012, 21:53
Привет! Вот еще темы с ответами:

количество минут до окончания суток - C++
Доброго времени суток, уважаемые ;) Есть такое вот задание: Определить функцию, возвращающую количество минут до окончания суток....

Проверка условия окончания цикла for - C++
Здраствуйте. Проблема заключается в следующем. Есть следующий цикл: for( int i=2; !((n%i||d%i)&amp;&amp;!(n%i&amp;&amp;d%i))==0 ; i++){ ...

Значение переменной после окончания цикла - C++
Чему будет равно i после окончания цикла: for (i=30;i&gt;=10;i--); тело цикла; знаю, вопрос глупый

Откуда взялся символ окончания строки? - C++
Помогите разобраться, не могу понять, откуда у меня перед getline() берется символ окончания строки? #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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