Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 28
1

цикл

24.06.2009, 18:56. Просмотров 517. Ответов 8
Метки нет (Все метки)

Помогите пожалуйста. Этот цикл должен уменьшать значения вектор x, если хотя бы одно из его значений , за исключением последнего, больше 1 + и увеличивать, если меньше нуля...Но этот цикл не работает в итоге.

Код
for (i = 0; i < n-1; i++)
                 {
                   if (x[i] <= 0)
                     { 
                        printf("x<=0!\n");
                        while(x[i]>0)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k + 1;
                         }
                        for (int i = 0; i < nn; i++){
                        printf ("x = %g \n",x[i]);}
                     }
                   if (x[i] >= 1)
                     {
                        printf ("x>=1\n");
                        while (x[i]<1)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k+1;
                         }
                        for (int i = 0; i < nn; i++){
                        printf ("x = %g \n",x[i]);}
                     }
                 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2009, 18:56
Ответы с готовыми решениями:

Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while.
Напишите пожалуйста код для данной задачки с помощью цикла while Вывести числа в пользовательском...

Цикл: Определить, сколько простейших организмов будет через каждый период их деления. Цикл while.
Напишите пожалуйста код к этой задачке, неделю уже ломаю себе голову как ее решить. Одноклеточная...

Цикл: цикл for вообще никак не воспринимается транслятором
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая...

Цикл: Не могу создать цикл для switch
не могу создать цикл для switch

8
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
24.06.2009, 19:29 2
А как ты делаеш так,что у тебя условие противоречит циклу while?
if (x[i] <= 0){
.....
while(x[i]>0)
..............}
if (x[i] >= 1){
......
while (x[i]<1)
...............}
И попробуй перед вторым условием поставить else:
C++
1
2
3
4
5
6
7
8
9
.........
      for (int i = 0; i < nn; i++){
                        printf ("x = %g \n",x[i]);}
                     }
                   else
                   if (x[i] >= 1)
                     {
                        printf ("x>=1\n");
.............
0
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 28
24.06.2009, 19:49  [ТС] 3
я поменяла,
теперь вообще зависает

Код
 for (i = 0; i < n-1; i++)
                 {
                   if (x[i] <= 0)
                     { 
                        printf("x<=0!\n");
                        while(x[i]<0)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k + 1;
                         }
                        for (int i = 0; i < nn; i++){
                        printf ("x = %g \n",x[i]);}
                     }
                   else if (x[i] >= 1)
                     {
                        printf ("x>=1\n");
                        while (x[i]>1)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k+1;
                         }
                        for (int i = 0; i < nn; i++){
                        printf ("x = %g \n",x[i]);}
                     }
                 }
0
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
24.06.2009, 19:54 4
Не понятно, что за переменная nn.
printf ("x = %g \n",x[i]);
я если честно ни разу не видел "%g". Может "%d"???
0
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 28
24.06.2009, 20:00  [ТС] 5
переменная задана как размер вектора..
0
0 / 0 / 0
Регистрация: 23.06.2009
Сообщений: 16
24.06.2009, 20:01 6
Цитата Сообщение от Alik-Soldier Посмотреть сообщение
Не понятно, что за переменная nn.

я если честно ни разу не видел "%g". Может "%d"???
Флаг "%g" - значение типа double.
0
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
24.06.2009, 20:21 7
ясн...значит туплю...

Добавлено через 19 минут 19 секунд
Попробуй вынести внутренний цикл из условия:
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
for (i = 0; i < n-1; i++)
                 {
                   if (x[i] <= 0)
                     { 
                        printf("x<=0!\n");
                        while(x[i]<0)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k + 1;
                         }
                      }
                   else if (x[i] >= 1)
                     {
                        printf ("x>=1\n");
                        while (x[i]>1)
                         {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k+1;
                         }
                      }
                 }
                        for (int i = 0; i < nn; i++)
                        {printf ("x = %g \n",x[i]);}
0
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 28
25.06.2009, 18:42  [ТС] 8
Я уверенна, что проблемма не в распечатке результатов..Я для контроля делаю

Добавлено через 25 минут 54 секунды
Очень странно...
Итерации по методу Ньютона идут только до этого момента. Сам цикл не выполняется. Не могу понять почему.

Код
for (i = 0; i < n-1; i++)
                 {
                   if (x[i] <= 0)
                     { 
                        printf("x<=0!\n");
                        while(x[i]<0)
                         {
                           printf("x<=0!\n");
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k + 1;
                          }
                  //for (int i = 0; i < nn; i++){
                  // printf ("x = %g \n",x[i]);}
                     }
                   else if (x[i] >= 1)
                     {
                        printf ("x>=1\n");
                         while (x[i]>1)
                          {
                           int k = 0;
                           x[i] = xold[i] + alam * p[i] * pow((1.e-1),k);
                           k = k+1;
                          }
                  //for (int i = 0; i < nn; i++){
                  //printf ("x = %g \n",x[i]);}
                     }
                 }
0
4845 / 3266 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
28.06.2009, 05:59 9
C
1
2
3
4
5
6
            while (x[i] > 1) {
                int k = 0;
                
                x[i] = xold[i] + alam * p[i] * pow(0.1, k);
                k = k+1;
            }
суть в том, что k удаляется после каждого витка, потом создаётся заново на новом витке
и я писал код, переделав его на for'ы, куда он делся - смотри в почте

аналогично будет, но уже правильно записано
C
1
2
            for (int k = 0; x[i] > 1; k++)
                x[i] = xold[i] + alam * p[i] * pow(0.1, k);
не факт, что вся бандура будет считаться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2009, 05:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Цикл for/Цикл while Помогите срочно пожалуйста...
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b...

Задание на цикл с параметром и цикл с постусловием
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу...

Цикл с параметром и цикл с условием
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и...


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

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

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