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

НОК массива "Си" - C++

Восстановить пароль Регистрация
 
Вячеслав Строк
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 8
15.12.2010, 02:00     НОК массива "Си" #1
Помогите найти НОК всех целых чисел одномерного массива....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 02:00     НОК массива "Си"
Посмотрите здесь:

C++ "НОК трех чисел" и "Площадь треугольника"
В одномерном массиве состоящим из "N" вещественных элементов вычислить сумму элемента массива с не четными "N" C++
C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
C++ Необработанное исключение в "0x01082855" в "sort.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc"
C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 06:57     НОК массива "Си" #2
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
#include <stdio.h>
#include <math.h>
int simpl(int n)
{
        if(n==2)
            return 1;
        if(n%2==0)
            return 0;       
        for (int i=3; (i*i)<n; i+=2)
                if ((n%i)==0)
                    return 0;
        return 1;
} 
 
int main()
{
    int mas_p[51][3], i_p=0, i, mas[10], j, temp;
    for(i=2; i<200; i++)
        if(simpl(i)==1)
        {
            mas_p[i_p][1]=0;
            mas_p[i_p++][0]=i;
        }
    printf("vvod 10 elementov:\n");
    for(i=0; i<10; i++)
    {
        printf("[%d]= ", i+1);
        scanf("%d", &mas[i]);
    }
    for(i=0; i<10; i++)
    {
        for(j=0; j<51; j++)
            mas_p[j][2]=0;
        temp=mas[i];
        for(j=0; j<51 && temp>1; j++)
        {
            if(temp%mas_p[j][0]==0)
            {
                while(temp%mas_p[j][0]==0)
                {
                    temp/=mas_p[j][0];
                    mas_p[j][2]++;
                }
                if(mas_p[j][2]>mas_p[j][1])
                    mas_p[j][1]=mas_p[j][2];
            }
        }
    }
    temp=1;
    for(i=0; i<51; i++)
        temp*=(int)pow((double)mas_p[i][0], (double)mas_p[i][1]);
    printf("%d", temp);
    return 0;
}
Эта программа как образец. В ней есть некоторые ограничения. Одно из ограничений: если разложить любое число из массива на простые множители то максимальный простой множитель не должен превышать 199.
Вячеслав Строк
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 8
15.12.2010, 17:20  [ТС]     НОК массива "Си" #3
Спасибо! Чет пишет
Ошибка 2 error C3861: 'pow': identifier not found c:\Documents and Settings\Вячеслав\Мои документы\Visual Studio 2005\Projects\21243e\21243e\21243e.cpp 61
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 17:26     НОК массива "Си" #4
Вот эта строка:
#include <math.h>
в начале кода есть?
Вячеслав Строк
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 8
15.12.2010, 17:48  [ТС]     НОК массива "Си" #5
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Вот эта строка: в начале кода есть?
есть..

Добавлено через 1 минуту
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
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<stdafx.h>
#include<iomanip>
#include<conio.h>
#include<string.h>
 
 
int simpl(int n)
{
        if(n==2)
                        return 1;
                if(n%2==0)
                        return 0;       
        for (int i=3; (i*i)<n; i+=2)
                if ((n%i)==0)
                                        return 0;
        return 1;
} 
 
int main()
 
{
        int mas_p[51][3], i_p=0, i, mas[10], j, temp;
        for(i=2; i<200; i++)
                if(simpl(i)==1)
                {
                        mas_p[i_p][1]=0;
                        mas_p[i_p++][0]=i;
                }
        printf("vvod 10 elementov:\n");
        for(i=0; i<10; i++)
        {
                printf("[%d]= ", i+1);
                scanf("%d", &mas[i]);
        }
        for(i=0; i<10; i++)
        {
                for(j=0; j<51; j++)
                        mas_p[j][2]=0;
                temp=mas[i];
                for(j=0; j<51 && temp>1; j++)
                {
                        if(temp%mas_p[j][0]==0)
                        {
                                while(temp%mas_p[j][0]==0)
                                {
                                        temp/=mas_p[j][0];
                                        mas_p[j][2]++;
                                }
                                if(mas_p[j][2]>mas_p[j][1])
                                        mas_p[j][1]=mas_p[j][2];
                        }
                }
        }
        temp=1;
        for(i=0; i<51; i++)
                temp*=pow((double)mas_p[i][0], (double)mas_p[i][1]);
        printf("%d", temp);
        return 0;}
 Комментарий модератора 
Используйте теги форматирования кода.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 17:55     НОК массива "Си" #6
Вячеслав Строк,
Ну вообще-то такую ошибку выдает когда нет этой строки: #include <math.h>

Добавлено через 2 минуты
Цитата Сообщение от Вячеслав Строк Посмотреть сообщение
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<stdafx.h>
#include<iomanip>
#include<conio.h>
#include<string.h>
Замените на:
C++
1
2
3
4
5
6
7
8
#include<stdafx.h>
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<iomanip>
#include<conio.h>
#include<string.h>
И на будущее для Вашего компилятора вот эта куча строк сверху должна начинаться со строки:
#include<stdafx.h>
Вячеслав Строк
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 8
15.12.2010, 19:16  [ТС]     НОК массива "Си" #7
ок помогло, но после ввода 10 элементов прога закрывается....
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 19:18     НОК массива "Си" #8
Вот здесь обсуждается эта проблемма:
http://www.cyberforum.ru/cpp-beginners/thread10807.html
выбирайте любой вариант на свой вкус.
Вячеслав Строк
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 8
17.12.2010, 02:18  [ТС]     НОК массива "Си" #9
Спасібо помогло! А можно как нібудь переделать этот іассів в одномерный?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2010, 09:39     НОК массива "Си"
Еще ссылки по теме:

C++ Разработать класс "Массив больших чисел", который состоит из объектов класса "Большие целые числа". Найти сумму элементов массива.
C++ Переписать элементы массива "X" в массив "Y" и подсчитать их количество
Разработать класс "Cmp", обеспечивающий нахождение НОД и НОК двух чисел C++

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.12.2010, 09:39     НОК массива "Си" #10
Вячеслав Строк, Можно переделать все. А есть смысл? Все равно здесь нужно будет как минимум два массива: один для хранения простых чисел, второй для хранения максимального кол-ва простых множителей у проверенных ранее чисел.
В одном массиве mas_p[51][3] - первая строка для хранения простых чисел, вторая строка для хранения максимального кол-ва простых множителей у проверенных ранее чисел. Третья строка используется для разложения очередного проверяемого числа. В общем три в одном.
Yandex
Объявления
17.12.2010, 09:39     НОК массива "Си"
Ответ Создать тему
Опции темы

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