Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Debert
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 31
#1

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

26.12.2010, 13:42. Просмотров 905. Ответов 8
Метки нет (Все метки)

Найти сумму N-положительных чисел, заданных в виде простых дробей (числитель и знаменатель - целые взаимно простые числа.
http://www.cyberforum.ru/cpp-beginners/thread958549.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 13:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти сумму N-положительных чисел (C++):

Найти сумму всех чисел положительных чисел файла.
Создать файл, состоящий из n вещественных чисел. Найти сумму всех чисел...

Создать файл, состоящий из п вещественных чисел. Найти сумму всех положительных чисел данного файла
:-[

Найти сумму положительных чисел
Для решения заданий следует использовать "однопроходные" алгоритмы, позволяющие...

Найти сумму положительных чисел
1. Дано пять чисел. Найти сумму положительных. 2. Дано пять чисел. Найти...

Найти сумму N-положительных чисел
Найти сумму N-положительных чисел, заданных в виде простых дробей (числитель и...

8
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 14:18 #2
- в каком виде должен быть ответ: вещественное число или в виде дроби?
- в каком диапазоне может быть N, а также числители и знаменатели простых дробей?
- как осуществляется ввод исходных данных?
0
Debert
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 14:42  [ТС] #3
В виде дроби. Диапазона нет. Все что дано , то я написал
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 20:02 #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;
}
2
Байт
Эксперт C
17764 / 11789 / 2449
Регистрация: 24.12.2010
Сообщений: 23,710
26.12.2010, 20:09 #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, меня опередил! И его ответ полнее.
1
Debert
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 20:12  [ТС] #6
А через <stdio.h> не сложно будет мне переписать? я когда-то пробовал, получалось с трудом)
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 20:40 #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;
}
0
Debert
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 31
27.12.2010, 17:37  [ТС] #8
А можно с комментами, плиз ?
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2010, 18:04 #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;
}
2
27.12.2010, 18:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 18:04
Привет! Вот еще темы с решениями:

Найти сумму целых положительных чисел
Здравствуйте. Суть задачи: Найти сумму целых положительных чисел, кратных 9 и...

Найти сумму положительных из 4-х чисел, введенных пользователем
1)Изер вводит 4 целых числа, надо найти сумму положительных из них...

Найти сумму положительных и произведение отрицательных чисел
8. Даны восемь чисел. Найти сумму положительных и произведение отрицательных...

Найти сумму и количество положительных чисел в последовательности
Найти произведение отрицательных элементов и сумму положительных .


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru