Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 41
1

Бесконечный цикл

23.11.2011, 18:48. Показов 1884. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ помогите у меня зациклился цикл. Что я сделал не так вроде условие выхода есть или может другой цикл использовать? Использовал do - whule и вот попробовал while, а результат один и тот же.
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
#include <iostream>
using namespace std;
 
int main()
//Выяснить, является ли заданное число m членом геометрической прогрессии, 
//первый член которой равен g, а знаменатель – z.
{
    int g, m, z, s;
    
    cout << "Vvedite pervi chlen: ";
    cin >> g;
    cout << "Vvedite znaminatel: ";
    cin >> z;
    cout << "m= ";
    cin >> m;
    
    while (g=m)
    {   
        g*=z;
    }
    cout << m << "clen progresii!" << endl;
    
    if (g!=m);
    {   
        cout << m << "ne clen progresii!" << endl;
    }
    
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2011, 18:48
Ответы с готовыми решениями:

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

Бесконечный цикл while
Здравствуйте необходимо написать бесконечный цикл while , который при запуске программы постоянно...

Бесконечный цикл
Так. Консоль CLR Вод программа: #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot;...

бесконечный цикл
Когда пытаюсь считать строки из файла с помощью цикла, он почему то начинает повторятся бесконечно....

15
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
23.11.2011, 18:51 2
C++
1
2
3
4
Sum:=0;
for(int i = 0; i < n; i++)
  if(arr[i]%13 == 5)
    Sum += arr[i];

Не по теме:

Зачем свой код убрали?

0
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 41
23.11.2011, 18:53  [ТС] 3
Цитата Сообщение от Dekio Посмотреть сообщение
C++
1
2
3
4
Sum:=0;
for(int i = 0; i < n; i++)
  if(arr[i]%13 == 5)
    Sum += arr[i];

Не по теме:

Зачем свой код убрали?

Сори не тот кинул =)
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
23.11.2011, 19:24 4
C
1
while (g==m)
И неужто транслятор промолчал?
0
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 41
23.11.2011, 21:02  [ТС] 5
Цитата Сообщение от Байт Посмотреть сообщение
C
1
while (g==m)
И неужто транслятор промолчал?
Да да молчал в тряпочку... Спасибо за подсказку, но всё равно не решил её подскажите что упустил?

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
#include <iostream>
using namespace std;
 
int main()
//Выяснить, является ли заданное число m членом геометрической прогрессии, 
//первый член которой равен g, а знаменатель – z.
{
        int g, m, z, s;
        
        cout << "Vvedite pervi chlen: ";
        cin >> g;
        cout << "Vvedite znaminatel: ";
        cin >> z;
        cout << "m= ";
        cin >> m;
        
        while (g==m) // если является 
        {       
                g*=z;
        }
        cout << m << "clen progresii!" << endl;
        
        if (g!=m); // если не является 
        {       
                cout << m << "ne clen progresii!" << endl;
        }
        
        return 0;
Выводит мне что является и не является...
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
23.11.2011, 21:43 6
Цитата Сообщение от Kovar Посмотреть сообщение
C++
1
cout << m << "clen progresii!" << endl;
Понимаете ли вы что эту строчку вы увидите в любом случае? По логике она должна идти по ветке else в условном переходе.
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
24.11.2011, 11:00 7
Kovar, Посмотрите внимательно на свой код. Оба сообщения будут выводиться всегда.
За исключение случая, когда g==m, z==1. Тогда, естественно, будет бесконечный цикл.
0
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 41
24.11.2011, 13:24  [ТС] 8
Всё решал проблему Спасибо тем кто откликнулся
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.11.2011, 18:02 9
Цитата Сообщение от Байт Посмотреть сообщение
И неужто транслятор промолчал?
А что он должен был сказать?
Ведь все верно с точки зрения синтаксиса
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
25.11.2011, 12:20 10
Цитата Сообщение от go Посмотреть сообщение
А что он должен был сказать?
Ведь все верно с точки зрения синтаксиса
Уважающий себя компилятор должен выкинуть предупреждение на "if (a=b) ..." У BCB6 это W8060 Possible incorrect assigment Конечно, это предупреждение можно отключить, но я никому не советую этого делать. Такую описку вполне может допустить даже опытный программист, а последствия очень тяжелы и трудно обнаружаемы.
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.11.2011, 13:26 11
Цитата Сообщение от Kovar Посмотреть сообщение
то я сделал не так вроде условие выхода есть
И какое же? Успешность присваивания? Или присваивание не ноля?

Добавлено через 2 минуты
Цитата Сообщение от Kovar Посмотреть сообщение
но всё равно не решил её
Значит ((z==1)||(z==1.0))
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
25.11.2011, 15:33 12
Байт, в этом нет ничего такого, a присвоится значение b, и если b!=0, то выполнятся следующий блок команд
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.11.2011, 16:25 13
Цитата Сообщение от go Посмотреть сообщение
Байт, в этом нет ничего такого, a присвоится значение b, и если b!=0, то выполнятся следующий блок команд
Но предупреждение в этом случае должно выдаваться на случай очепятки, так как чаще всё таки подразумевают сравнение, о чём и должен каждый раз "догадываться" компилятор и намекать программисту. Если программист не реагирует, тогда и только тогда "делается вывод" о том, что имелось ввиду именно присваивание и остаётся тот код, который сгенерен при компиляции с предупреждением. Иначе программист исправит ошибку и заставит компилятор всё перекомпилить.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,959
25.11.2011, 17:04 14
Цитата Сообщение от Байт Посмотреть сообщение
Уважающий себя компилятор должен выкинуть предупреждение на "if (a=b) ..."
С чего бы это?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
    
int main(void){
    int a, b, c;
    
    a = 1;
    b = 0;
    
    if ( c = a )
        printf("C is good!\n");
    else
        printf("C is bad!\n");
    
    if ( c = b )
        printf("C is good!\n");
    else
        printf("C is bad!\n");
    
    return 0;
}
Код
C:\c_cpp\shitcode>cl abc.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

abc.c
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:abc.exe
abc.obj

C:\c_cpp\shitcode>gcc -o abc abc.c

C:\c_cpp\shitcode>abc
C is good!
C is bad!
Это у борландовского компилятора параноя, но в прочем ингода действительно может от подобных ошибок спасать...
Если ты параноик - это ещё не значит, что за тобой не следят!
(с)
1
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.11.2011, 17:39 15
Цитата Сообщение от Байт Посмотреть сообщение
Уважающий себя компилятор должен выкинуть предупреждение на "if (a=b)
Не себя, а программиста. Если же он уважает только себя, то точно промолчит, но может самостоятельно исправить, что уже ни в какие ворота не лезет.

Добавлено через 53 секунды
Цитата Сообщение от easybudda Посмотреть сообщение
Это у борландовского компилятора параноя, но в прочем ингода действительно может от подобных ошибок спасать...
У мелкомягкого тоже? Кто из них от кого заразился? Билдер от студии, или студия от билдера?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
25.11.2011, 18:12 16
Цитата Сообщение от taras atavin Посмотреть сообщение
У мелкомягкого тоже? Кто из них от кого заразился? Билдер от студии, или студия от билдера?
У студии нет таких предупреждений
Знаете, бывает удобно писать
C++
1
2
3
4
5
6
while ( stack = stack->next )
{
 
...
 
}
0
25.11.2011, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2011, 18:12
Помогаю со студенческими работами здесь

Бесконечный цикл
Здравствуйте, кто мне может объяснить почему у меня в этом участке кода бесконечный цикл, а именно,...

Бесконечный цикл
Задача: Ввести количество камней, ввести вес каждого камня, сложить камни в 2 кучки так чтобы...

Бесконечный цикл
if (!(cin &gt;&gt; Mas &gt;&gt; Rost)) { cout &lt;&lt; &quot;Ошибка\n&quot;; continue; } В общем при вводе букв...

Бесконечный цикл
#include&lt;iostream&gt; #include &quot;conio.h&quot; using namespace std; void Show(int y, int* arr) {...

Бесконечный цикл
Доброго времени суток! Написал программу в среде Visual Studio 2010 Win32 project, но в ней...

Бесконечный цикл
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!)...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru