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

Найти сумму N-положительных чисел - C++

Восстановить пароль Регистрация
 
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 13:42     Найти сумму N-положительных чисел #1
Найти сумму N-положительных чисел, заданных в виде простых дробей (числитель и знаменатель - целые взаимно простые числа.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 14:18     Найти сумму N-положительных чисел #2
- в каком виде должен быть ответ: вещественное число или в виде дроби?
- в каком диапазоне может быть N, а также числители и знаменатели простых дробей?
- как осуществляется ввод исходных данных?
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 14:42  [ТС]     Найти сумму N-положительных чисел #3
В виде дроби. Диапазона нет. Все что дано , то я написал
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 20:02     Найти сумму N-положительных чисел #4
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
#include <iostream>
#include <windows.h>
using namespace std;
 
int NOK(int x, int y) 
{
    int count=(x>y) ? x : y; 
                                                      
    for (int i=count; ; i++) 
        if (!(i%x) && !(i%y)) return i; 
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int N, i, *a, *b;
    cout<<"N= ";
    cin>>N;
    a=new int[N];
    b=new int[N];
    for(i=0; i<N; i++)
    {
        cout<<"Числитель "<<i+1<<"= ";
        cin>>a[i];
        cout<<"Знаменатель "<<i+1<<"= ";
        cin>>b[i];
    }
    int temp=1;
    for(i=0; i<N; i++)
        temp=NOK(temp, b[i]);
    int sum=0;
    for(i=0; i<N; i++)
        sum+=temp/b[i]*a[i];
    cout<<"Результат: "<<sum<<"/"<<temp<<endl;  
    return 0;
}
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
26.12.2010, 20:09     Найти сумму N-положительных чисел #5
Сначала надо научиться складывать 2 числа.
Пусть они p1, q1, p2, q2
A = p1*q2 + p2*q1
B = q1*q2
Теперь надо их сократить
C
1
2
3
4
5
6
7
8
  if (A > B) C = sqrt(B);
  else        C = sqrt(A);
  for (i=2; i<C; i++) {
      while (A%i ==0 %% B%i==0) {
          A /= i;
          B /= i; 
      } 
  }
Ну а дальше, я надеюсь, все просто.

Добавлено через 1 минуту
Увы,valeriikozlov, меня опередил! И его ответ полнее.
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 20:12  [ТС]     Найти сумму N-положительных чисел #6
А через <stdio.h> не сложно будет мне переписать? я когда-то пробовал, получалось с трудом)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 20:40     Найти сумму N-положительных чисел #7
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
#include <stdio.h>
#include <malloc.h> 
#include <windows.h>
int NOK(int x, int y) 
{
    int count=(x>y) ? x : y; 
                                                      
    for (int i=count; ; i++) 
        if (!(i%x) && !(i%y)) return i; 
}
 
int main()
{
           SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        int N, i, *a, *b;
        printf("N= ");
        scanf("%d", &N);
        a=(int*) malloc(N*sizeof(int));
        b=(int*) malloc(N*sizeof(int));
        for(i=0; i<N; i++)
        {
                printf("Числитель %d =", i+1);
                scanf("%d", &a[i]);
                printf("Знаменатель %d =", i+1);
                scanf("%d" ,&b[i]);
        }
        int temp=1;
        for(i=0; i<N; i++)
                temp=NOK(temp, b[i]);
        int sum=0;
        for(i=0; i<N; i++)
                sum+=temp/b[i]*a[i];
        printf("Результат: %d/%d\n", sum, temp);      
        return 0;
}
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
27.12.2010, 17:37  [ТС]     Найти сумму N-положительных чисел #8
А можно с комментами, плиз ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 18:04     Найти сумму N-положительных чисел
Еще ссылки по теме:

Найти сумму отрицательных чисел и количество положительных чисел массива с четными индексами C++
C++ Найти сумму целых положительных чисел больших a меньших b
Найти сумму целых положительных чисел из промежутка от А до В, кратных 4 C++

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2010, 18:04     Найти сумму N-положительных чисел #9
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
#include <stdio.h>
#include <malloc.h> 
#include <windows.h>
int NOK(int x, int y) // функция вычисления наименьшего общего кратного
{
    int count=(x>y) ? x : y; 
                                                      
    for (int i=count; ; i++) 
        if (!(i%x) && !(i%y)) return i; 
}
 
int main()
{
               SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        int N, i, *a, *b;
        printf("N= ");
        scanf("%d", &N);
        a=(int*) malloc(N*sizeof(int));// выделение памяти под массив a[]
        b=(int*) malloc(N*sizeof(int));// выделение памяти под массив b[]
        for(i=0; i<N; i++)// в этом цикле заносим значения (в массив a[] числители, в массив b[] знаменатели)
        {
                printf("Числитель %d =", i+1);
                scanf("%d", &a[i]);
                printf("Знаменатель %d =", i+1);
                scanf("%d" ,&b[i]);
        }
        int temp=1;
        for(i=0; i<N; i++)// в этом цикле ищем НОК всех знаменателей
                temp=NOK(temp, b[i]);
        int sum=0;
        for(i=0; i<N; i++)// в этом цикле ищем сумму числителей дробей приведенных к общему знаменателю
                sum+=temp/b[i]*a[i];
        printf("Результат: %d/%d\n", sum, temp); // выводим результат     
        return 0;
}
Yandex
Объявления
27.12.2010, 18:04     Найти сумму N-положительных чисел
Ответ Создать тему
Опции темы

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