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

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

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

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

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

Народ помогите у меня зациклился цикл. Что я сделал не так вроде условие выхода есть или может другой цикл использовать? Использовал 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 18:48     Бесконечный цикл
Посмотрите здесь:

Бесконечный цикл C++
C++ Бесконечный цикл
C++ Бесконечный цикл
Бесконечный цикл C++
Бесконечный цикл C++
C++ Бесконечный цикл
Бесконечный цикл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 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];

Не по теме:

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

Kovar
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];

Не по теме:

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

Сори не тот кинул =)
Байт
Эксперт C
15533 / 9875 / 1484
Регистрация: 24.12.2010
Сообщений: 18,475
23.11.2011, 19:24     Бесконечный цикл #4
C
1
while (g==m)
И неужто транслятор промолчал?
Kovar
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;
Выводит мне что является и не является...
HighPredator
5453 / 1819 / 334
Регистрация: 10.12.2010
Сообщений: 5,380
Записей в блоге: 3
23.11.2011, 21:43     Бесконечный цикл #6
Цитата Сообщение от Kovar Посмотреть сообщение
C++
1
cout << m << "clen progresii!" << endl;
Понимаете ли вы что эту строчку вы увидите в любом случае? По логике она должна идти по ветке else в условном переходе.
Байт
Эксперт C
15533 / 9875 / 1484
Регистрация: 24.12.2010
Сообщений: 18,475
24.11.2011, 11:00     Бесконечный цикл #7
Kovar, Посмотрите внимательно на свой код. Оба сообщения будут выводиться всегда.
За исключение случая, когда g==m, z==1. Тогда, естественно, будет бесконечный цикл.
Kovar
0 / 0 / 0
Регистрация: 11.09.2011
Сообщений: 41
24.11.2011, 13:24  [ТС]     Бесконечный цикл #8
Всё решал проблему Спасибо тем кто откликнулся
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2011, 18:02     Бесконечный цикл #9
Цитата Сообщение от Байт Посмотреть сообщение
И неужто транслятор промолчал?
А что он должен был сказать?
Ведь все верно с точки зрения синтаксиса
Байт
Эксперт C
15533 / 9875 / 1484
Регистрация: 24.12.2010
Сообщений: 18,475
25.11.2011, 12:20     Бесконечный цикл #10
Цитата Сообщение от go Посмотреть сообщение
А что он должен был сказать?
Ведь все верно с точки зрения синтаксиса
Уважающий себя компилятор должен выкинуть предупреждение на "if (a=b) ..." У BCB6 это W8060 Possible incorrect assigment Конечно, это предупреждение можно отключить, но я никому не советую этого делать. Такую описку вполне может допустить даже опытный программист, а последствия очень тяжелы и трудно обнаружаемы.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 13:26     Бесконечный цикл #11
Цитата Сообщение от Kovar Посмотреть сообщение
то я сделал не так вроде условие выхода есть
И какое же? Успешность присваивания? Или присваивание не ноля?

Добавлено через 2 минуты
Цитата Сообщение от Kovar Посмотреть сообщение
но всё равно не решил её
Значит ((z==1)||(z==1.0))
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.11.2011, 15:33     Бесконечный цикл #12
Байт, в этом нет ничего такого, a присвоится значение b, и если b!=0, то выполнятся следующий блок команд
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 16:25     Бесконечный цикл #13
Цитата Сообщение от go Посмотреть сообщение
Байт, в этом нет ничего такого, a присвоится значение b, и если b!=0, то выполнятся следующий блок команд
Но предупреждение в этом случае должно выдаваться на случай очепятки, так как чаще всё таки подразумевают сравнение, о чём и должен каждый раз "догадываться" компилятор и намекать программисту. Если программист не реагирует, тогда и только тогда "делается вывод" о том, что имелось ввиду именно присваивание и остаётся тот код, который сгенерен при компиляции с предупреждением. Иначе программист исправит ошибку и заставит компилятор всё перекомпилить.
easybudda
Эксперт С++
9438 / 5461 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
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!
Это у борландовского компилятора параноя, но в прочем ингода действительно может от подобных ошибок спасать...
Если ты параноик - это ещё не значит, что за тобой не следят!
(с)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 17:39     Бесконечный цикл #15
Цитата Сообщение от Байт Посмотреть сообщение
Уважающий себя компилятор должен выкинуть предупреждение на "if (a=b)
Не себя, а программиста. Если же он уважает только себя, то точно промолчит, но может самостоятельно исправить, что уже ни в какие ворота не лезет.

Добавлено через 53 секунды
Цитата Сообщение от easybudda Посмотреть сообщение
Это у борландовского компилятора параноя, но в прочем ингода действительно может от подобных ошибок спасать...
У мелкомягкого тоже? Кто из них от кого заразился? Билдер от студии, или студия от билдера?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 18:12     Бесконечный цикл
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.11.2011, 18:12     Бесконечный цикл #16
Цитата Сообщение от taras atavin Посмотреть сообщение
У мелкомягкого тоже? Кто из них от кого заразился? Билдер от студии, или студия от билдера?
У студии нет таких предупреждений
Знаете, бывает удобно писать
C++
1
2
3
4
5
6
while ( stack = stack->next )
{
 
...
 
}
Yandex
Объявления
25.11.2011, 18:12     Бесконечный цикл
Ответ Создать тему
Опции темы

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