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

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

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

зацикливание - C++

16.07.2013, 10:54. Просмотров 499. Ответов 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// wer.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
 
    cout << "vvedite dannie: " << endl;
    int x;
    cout << "\nShirina rulona";
    cin >> x;
    int l1;
    cout << "shirina 1 ";
    cin >> l1;
    int l2;
    cout << "Shirina 2 ";
    cin >> l2;
    int l3;
    cout << "Shirina 3 ";
    cin >> l3;
    int l4;
    cout << "Shirina 4 ";
    cin >> l4;
    int l5;
    cout << "Shirina 5 ";
    cin >> l5;
    int y;
    cout << "Min ";
    cin >> y;
    int ym;
    cout << "Max ";
    cin >> ym;
    int n;
    cout << "razrez";
    cin >> n;
 
    for (int a=0;a=(int)(x/l1);a++)
    {
        for (int b=0;b=(int)(x/l2);b++)
        {
            for (int c=0;c=(int)(x/l3);c++)
            {
                for (int d=0;d=(int)(x/l4);d++)
                {
                    for (int e=0;e=(int)(x/l5);e++)
                    {
                        int L=l1*a+l2*b+l3*c+l4*d+l5*e;
                        if ((L<=x-y) && (L>=x-ym)) {
                            cout<<"L"<<L<<endl;
                            //printf("L = %d,a = %d,b = %d,c = %d,d = %d,e = %d", L,a,b,c,d,e);
                            system("pause");
                        }
                    }
                }
            }
        }
    }
}
Пример входных данных и результатов:зацикливание
в данном(по скрину) случае результат должен выглядеть след. образом:
a b c d f
0 0 0 3 3 990
0 0 1 0 3 990
0 5 0 4 0 990
0 5 1 1 0 990
1 2 0 6 0 986
1 2 1 3 0 986
1 2 2 0 0 986
2 0 0 0 3 990
2 5 0 1 0 990
3 2 0 3 0 986
3 2 1 0 0 986
5 2 0 0 0 986
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 11:23     зацикливание #2
Цитата Сообщение от sanechka6 Посмотреть сообщение
нужного результата
а какой нужный, что считаешь?
sanechka6
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
16.07.2013, 11:26  [ТС]     зацикливание #3
soican
в данном(по скрину) случае результат должен выглядеть след. образом:
a b c d f
0 0 0 3 3 990
0 0 1 0 3 990
0 5 0 4 0 990
0 5 1 1 0 990
1 2 0 6 0 986
1 2 1 3 0 986
1 2 2 0 0 986
2 0 0 0 3 990
2 5 0 1 0 990
3 2 0 3 0 986
3 2 1 0 0 986
5 2 0 0 0 986
SatanaXIII
Супер-модератор
Эксперт С++
5581 / 2615 / 239
Регистрация: 01.11.2011
Сообщений: 6,428
Завершенные тесты: 1
16.07.2013, 12:01     зацикливание #4
Цитата Сообщение от sanechka6 Посмотреть сообщение
Оптимальный крой:
0 раз по 150
Это называется закодировался.

sanechka6, пройдите пошагово код и посмотрите где и при каких условиях происходит зацикливание. Возможно там все проще чем кажется.
Или опишите задачу и ваш алгоритм.
Или подождите того, у кого возникнет желание самому в нем разобраться.
sanechka6
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
16.07.2013, 13:04  [ТС]     зацикливание #5
Чтобы быть конкретным : уменя есть данный алгоритм который представлен след.кодом(данные взяты со скрина):
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
l1=150:l2=118:l3=300:l4=100:l5=230
for a=0 to 7
for b=0 to 8
for c=0 to 3
for d=0 to 9
for f=0 to 4
L=l1*a+l2*b+l3*c+l4*d+l5*f
if L<=990 and L>=985 then
print a,b,c,d,f,L
fi
next f
next d
next c
next b
next a
я пытаюсь переписать его под с++,нужна ваша помощь
Убежденный
Системный программист
Эксперт С++
14917 / 6735 / 1059
Регистрация: 02.05.2013
Сообщений: 11,021
Завершенные тесты: 1
16.07.2013, 13:31     зацикливание #6
Посмотрите, что у Вас творится в конструкциях "for", это нормально ?

Цитата Сообщение от sanechka6 Посмотреть сообщение
for (int a=0;a=(int)(x/l1);a++)
Где условие выхода из цикла ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 14:02     зацикливание
Еще ссылки по теме:

Зацикливание класса C++
Зацикливание C++
Cin зацикливание C++
Зацикливание C++
Зацикливание C++

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5581 / 2615 / 239
Регистрация: 01.11.2011
Сообщений: 6,428
Завершенные тесты: 1
16.07.2013, 14:02     зацикливание #7
Так вот же оно, посередине:
Цитата Сообщение от Убежденный Посмотреть сообщение
a=(int)(x/l1)
Цитата Сообщение от sanechka6 Посмотреть сообщение
Чтобы быть конкретным : уменя есть данный алгоритм который представлен след.кодом(данные взяты со скрина):

я пытаюсь переписать его под с++,нужна ваша помощь
C++
1
2
3
4
5
6
7
8
9
10
11
int l1=150, l2=118, l3=300, l4=100, l5=230;
for(a=0; a<=7; a++)
  for(b=0; b<=8; b++)
    for(c=0; с<=3; c++)
      for(d=0; d<=9; d++)
        for(f=0; f<=4; f++)
          {
          int L=l1*a+l2*b+l3*c+l4*d+l5*f;
          if(L<=990 && L>=985)
            cout << a << b << c << d << f << L;
          }
Yandex
Объявления
16.07.2013, 14:02     зацикливание
Ответ Создать тему
Опции темы

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