Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
#1

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

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

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

Найти сумму отрицательных чисел и количество положительных чисел массива с четными индексами - C++
1) Дан массив чисел В. Найти сумму отрицательных чисел и количество положительных чисел массива с четными индексами.

Найти сумму всех чисел положительных чисел файла. - C++
Создать файл, состоящий из n вещественных чисел. Найти сумму всех чисел положительных чисел данного файла. Обрадуюсь любой Вашей...

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

Найти сумму положительных чисел - C++
1. Дано пять чисел. Найти сумму положительных. 2. Дано пять чисел. Найти колличество чётных.

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

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

8
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 14:18 #2
- в каком виде должен быть ответ: вещественное число или в виде дроби?
- в каком диапазоне может быть N, а также числители и знаменатели простых дробей?
- как осуществляется ввод исходных данных?
0
Debert
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 14:42  [ТС] #3
В виде дроби. Диапазона нет. Все что дано , то я написал
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 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
16545 / 10815 / 1639
Регистрация: 24.12.2010
Сообщений: 20,864
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 / 0
Регистрация: 19.12.2010
Сообщений: 31
26.12.2010, 20:12  [ТС] #6
А через <stdio.h> не сложно будет мне переписать? я когда-то пробовал, получалось с трудом)
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 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 / 0
Регистрация: 19.12.2010
Сообщений: 31
27.12.2010, 17:37  [ТС] #8
А можно с комментами, плиз ?
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 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
Привет! Вот еще темы с ответами:

Найти сумму положительных и произведение отрицательных чисел - C++
8. Даны восемь чисел. Найти сумму положительных и произведение отрицательных чисел. #include &lt;stdio.h&gt; #include &lt;iostream&gt; ...

Найти сумму положительных из 4-х чисел, введенных пользователем - C++
1)Изер вводит 4 целых числа, надо найти сумму положительных из них #include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;conio.h&gt; int...

Найти сумму целых положительных чисел из промежутка от А до В, кратных 4 - C++
Доброго времени суток...нужно исправить прогу, как я понимаю её ошибка заключается в том, что она считает с первого элемента, нужно...

Найти сумму целых нечетных положительных чисел, меньших 50 - C++
по заданию нужно Найти сумму целых нечетных положительных чисел, меньших 50. Ну при запуске кода, у меня совсем другое, делал в паскале там...


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

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

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