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

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

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

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

23.11.2011, 18:48. Просмотров 880. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бесконечный цикл (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

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

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

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

Бесконечный цикл While - C++
Здравствуйте, помогите пожалуйста с задачей. Условие - ввести массив, состоящий из х числа элементов, затем &quot;распаковать&quot; его в серию нулей...

Бесконечный цикл - C++
#include &lt;iostream&gt; using namespace std; int main() { int i=0; double ea; while(i!=-1) { ...

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

Не по теме:

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

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

Не по теме:

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

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

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

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

Бесконечный цикл - C++
Есть бесконечный цикл,благодаря которому постоянно вызываются функции. Из за этого бесконечного цикла глючит программу. Есть ли другой...

Бесконечный цикл - C++
Задача: Дед Мазай спасает зайцев. На N островках находится некоторое количество зайцев разной массы. Грузоподъемность лодки Мазая...

бесконечный цикл - C++
Когда пытаюсь считать строки из файла с помощью цикла, он почему то начинает повторятся бесконечно. Вот код: int main(int argc, char*...

Бесконечный цикл - C++
Простите что с таким лёгким вопросом, но мистика окутывает мою учёбу всё больше и больше ^^ Тут програмка которая считает сумму каждого...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
25.11.2011, 17:39
Ответ Создать тему
Опции темы

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