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

Запутался в циклах - C++

Восстановить пароль Регистрация
 
maksikooo
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 37
18.11.2013, 17:15     Запутался в циклах #1
Вроде бы все сделал правильно но есть ошибка
Заполняю массив рандомными числами потом скалдываю все числа массива и записую результат в одтельный массив и вывожу в мемо все нормально но есть 3 огромных числа которых не должно быть вот код
1ая
C++
1
2
3
4
5
6
7
{int i;
for (i=0; i < 9; i++) {
a[i]=rand()%30-10;
Memo1->Lines->Add(a[i]);
}
 
}
2ая кнопка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{   int i,j,b,jp,bp,result[100],n1,n2,n3,schet;
schet=0;
n2=0;
n3=1;
for (i = 0; i < 9; i++) {
n2=n2+1;
for (b = 1; b < 9; b++) {
if (n2>b||n2==b) {
n3=n3+1;
for (j = 2; j < 9; j++) {
if (n3>j||n3==j ) {
result[schet]=a[i]+a[b]+a[j];
Memo2->Lines->Add(result[schet]);
schet=schet+1;
}
continue;
}
}
 
}
 
}}
массив a глобальный

Добавлено через 4 минуты
Если убрать проверку if n2 n3 то он будет слаживать несколько раз 1 и теже числа и всеравно будут числа которые не должны быть например 3431490
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 17:15     Запутался в циклах
Посмотрите здесь:

C++ Переменные в циклах
C++ Обьявление переменных в циклах и до
RANDOM в циклах C++
C++ для людей понимающих в циклах
задачи о вложенных циклах C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5436 / 2560 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
18.11.2013, 17:57     Запутался в циклах #2
Цитата Сообщение от maksikooo Посмотреть сообщение
3 огромных числа которых не должно быть
Это явный признак выхода за границы массива.

Вот ваша переработанная вторая кнопка в человеческом виде. Но вашу тонкую мысль я не понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int i,j,b,jp,bp,n1,n2=0,n3=1,schet=0;
int result[100] = {0};
for (i = 0; i < 9; i++)
  {
  n2 += 1;
  for (b = 1; b < 9; b++)
    {
    if (n2>b||n2==b)
      {
      n3 += 1;
      for (j = 2; j < 9; j++)
        {
        if (n3>j||n3==j )
          {
          result[schet] = a[i] + a[b] + a[j];
          Memo2->Lines->Add( result[schet] );
          schet += 1;
          }
        continue;
        }
      }
    }
  }
maksikooo
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 37
18.11.2013, 22:01  [ТС]     Запутался в циклах #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Это явный признак выхода за границы массива.

Вот ваша переработанная вторая кнопка в человеческом виде. Но вашу тонкую мысль я не понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int i,j,b,jp,bp,n1,n2=0,n3=1,schet=0;
int result[100] = {0};
for (i = 0; i < 9; i++)
  {
  n2 += 1;
  for (b = 1; b < 9; b++)
    {
    if (n2>b||n2==b)
      {
      n3 += 1;
      for (j = 2; j < 9; j++)
        {
        if (n3>j||n3==j )
          {
          result[schet] = a[i] + a[b] + a[j];
          Memo2->Lines->Add( result[schet] );
          schet += 1;
          }
        continue;
        }
      }
    }
  }
Ничего не изменилось,в цикле всеравно 3 оч больших числа
n2 n3 ввел потому что если без них то он после прохождения третего цикла добавляет к b 1 а j берет 2 тоесть дважды их слаживает

Добавлено через 10 минут
спасибо разобрался сам но с вашей подсказкой о границе массива
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
18.11.2013, 22:03     Запутался в циклах #4
C++
1
n2>b||n2==b
">=" ???
Yandex
Объявления
18.11.2013, 22:03     Запутался в циклах
Ответ Создать тему
Опции темы

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