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

Наименьшее общее кратное - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
temperus
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 42
09.03.2011, 17:29     Наименьшее общее кратное #1
есть одномерный массив, содержащий целые числы. нужно найти наименьшее общее кратное, которое бы удовлетворяло всем эти числам. не знаю как реализовать на си. буду очень благодарен, если оставите комментарий в коде. заранее спасибо, если кто поможет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2011, 17:57     Наименьшее общее кратное #2
temperus,
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
    srand(unsigned(time(NULL)));
    int mas[N];
    int flag,i,j,max;
    printf("Array -> ");
    for(i=0; i<N; i++)
     {
         mas[i]=rand()%10+1;
          printf("%d ", mas[i]);
     }
     max=mas[0];
      for(i=0; i<N; i++)
      {
          if(mas[i]>max)
          {
              max=mas[i];
          }
      }
     for(i=max;;i++)
     {
         flag=1;
         for(j=0; j<N; j++)
         {
             if(!(i%mas[j]))
             {
                 flag=1;
             }
             else
             {
                 flag=0;
                 break;
             }
         }
         if(flag)
         {
          printf("Result -> %d ",i);
           break;
         }
     }
     getch();
     return 0;
 
}
temperus
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 42
10.03.2011, 00:33  [ТС]     Наименьшее общее кратное #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
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
#include <stdio.h>
#include <conio.h>
int main()
{
  int a[100][100], b[100], i,j,k,M,N,x,y,max,flag;
  printf("Vvedite N,M: ");
  scanf("%d %d", &N, &M);
  printf("Vvedite x,y: ");
  scanf("%d %d", &x, &y);
  for (i=1; i<=N; i++)
      for (j=1; j<=M; j++)
          { printf("a[%d][%d]= ",i,j);
            scanf("%d",&a[i][j]); }
  j=1; k=1;
  while (j<=y)
  { b[k]=a[x][j];
    j++; k++; }
  j=y+1; i=x-1; k++;
  while (j<=M && i>=1)
  { b[k]=a[i][j];
    i--; j++; k++; }
  j=y+1; i=x+1; k++;
  while (j<=M && i<=N)
  { b[k]=a[i][j];
    k++; i++; j++; }
    
  max=b[1];
  for(i=2; i<=k; i++)
     if(b[i]>max)
        max=b[i];  
  for(i=max; ; i++)
  {
     flag=1;
     for(j=1; j<=k; j++)
     {
        if(!(i%b[j]))
           flag=1;
        else
        {
          flag=0;
          break;
        }
     }
     if(flag)
     {
       printf("Result %d ",i);
       break;
     }
  }
  getch();        
  return 0;
}
почему выкидывает ошибку ? не могу понять
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.03.2011, 00:44     Наименьшее общее кратное #4
temperus, какая ошыбка?
temperus
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 42
10.03.2011, 01:03  [ТС]     Наименьшее общее кратное #5
Цитата Сообщение от MILAN Посмотреть сообщение
temperus, какая ошыбка?
"исключение unknown software exception (0xc00000094) в приложении по адресу 0x004015de

нажмите ок для завершения приложения"

проверил вывод максимума - там все верно и ошибок нет. ошибка в алгоритме для нахождения кратного. но я не вижу её.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.03.2011, 01:07     Наименьшее общее кратное #6
temperus, выложите задание, потому что не охота в вашем коде разбиратся.
temperus
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 42
10.03.2011, 02:00  [ТС]     Наименьшее общее кратное #7
Цитата Сообщение от MILAN Посмотреть сообщение
temperus, выложите задание, потому что не охота в вашем коде разбиратся.
задание: есть матрица размером N на M. есть точка отсчета у фигуры, условно x,y(её координаты).
фигура движется как на рисунке. т.е. она идет по иксовой строке меняя столбцы до координаты y(столбца точки отсчета) и потом идет разветвление.
нужно найти наименьшее общее кратное для всех элементов из заданной области определения(аля для заштрихованных).
Миниатюры
Наименьшее общее кратное  
temperus
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 42
10.03.2011, 16:20  [ТС]     Наименьшее общее кратное #8
разветвление идет пока не упрется в какую-либо границу (или в N или в M).
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
25.05.2012, 08:56     Наименьшее общее кратное #9
MILAN, можешь объяснить что делает эта строк в твоем коде? Что проверяет?
C++
1
2
3
4
5
6
7
8
9
if(!(i%mas[j]))
 {
  flag=1;
 }
else
 {
  flag=0;
  break;
 }
Если что-то НЕ ВЫХОДИТ, то флаг = true, иначе flase и выйти из внутр. цикла?
Что конкретно делает операция "!(i%mas[j]"?
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
25.05.2012, 09:19     Наименьшее общее кратное #10
Цитата Сообщение от Shman Посмотреть сообщение
MILAN, можешь объяснить что делает эта строк в твоем коде? Что проверяет?
C++
1
2
3
4
5
6
7
8
9
if(!(i%mas[j]))
 {
  flag=1;
 }
else
 {
  flag=0;
  break;
 }
Если что-то НЕ ВЫХОДИТ, то флаг = true, иначе flase и выйти из внутр. цикла?
Что конкретно делает операция "!(i%mas[j]"?
Если остаток от деления нулевой, то условие в if будет истинным, иначе ложным
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2012, 09:44     Наименьшее общее кратное
Еще ссылки по теме:

C++ Даны натуральные числа X и Y. Вычислить их наименьшее общее кратное.
C++ Найти наибольший общий делитель и наименьшее общее кратное
Вычислить наименьшее общее кратное двух натуральных чисел C++

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

Или воспользуйтесь поиском по форуму:
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
25.05.2012, 09:44     Наименьшее общее кратное #11
yleart, Так может лучше Flag объявить как bool, а не int? Мне кажется программу можно упростить до след. вида:
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
#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
#include <time.h> 
#define N 5 // Размер массива.
int main()
{
 int mas[N]; 
 int i, j, max;
 bool flag;
 srand(unsigned(time(NULL))); 
 printf("\n Massiv iz chisel ot 1 do 10: \n"); 
  for(i=0; i<N; i++)
  {
   mas[i]=rand()%10+1;
   printf("\n Mas[%d] = %d. ", i, mas[i]);
  }
 max=mas[0]; // Первый элемент массива назначаем максимальным.
  for(i=0; i<N; i++)
  {
   if(mas[i]>max) // Если какой-нибудь другой элемент массива больше максимального, то...
   { max=mas[i]; } // назначаем его максимальным.
  }
  
  for(i=max;;i++)
  { 
   for(j=0; j<N; j++)
   { if(!(i%mas[j])) // Если остаток от деления равен 0, то...
      { flag=1; } // условие = true.
     else
      { flag=0; // иначе = false.
        break; } // Прекратить внутренний цикл.
   } 
    if(flag==1) // Если условие = true.
    { printf("\n \n NOK = %d. \n",i); // Выводим результат.
      break; }  // Прекратить цикл.
  }
      
 getch(); 
 return 0; 
}
Yandex
Объявления
25.05.2012, 09:44     Наименьшее общее кратное
Ответ Создать тему
Опции темы

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