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

сумма соседних членов последовательности - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычитаем процент от числа. http://www.cyberforum.ru/cpp-beginners/thread356924.html
Вот фрагмент программки... weight = growth - 110; ideal_weight = weight - (weight * (10/100)); cout << Rus("Ваш идеальный вес ") << ideal_weight; cout << Rus(" кг.") << endl; Здесь вычисляется идеальный вес. Мне нужно вычесть из weight 10%. Но при лбом значении growth выдается одно и тоже значение для ideal_weight (5.31691е + 036). Хотя при growth 173 ideal_weight должен...
C++ Реализация динамического создания экземпляров класса. Добрый вечер. Есть программа: //HEADER.h #include <iostream> #include <conio.h> #include <string> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread356907.html
C++ #include "StdAfx.h" и проблема цикал в компиляторе
#include "StdAfx.h" #include <iostream> #include <fstream> using namespace std; int main() {
C++ АТД список. Расположение одинаковых элементов друг за другом
Здравствуйте! Подскажите, пожалуйста, как расположить одинаковые элементы друг за другом??? Например: Есть такой список: a R R d a R
C++ Алгоритмы и методы http://www.cyberforum.ru/cpp-beginners/thread356884.html
Ребят,напишите кто нибудь на Borland,легкий метод или алгорит на ваше усмотрение кроме Метода итерации,Ньютона и половинного деления...
C++ Для чего необходимо распределять память при помощи new и как оно работает Сижу вот думаю над таким куском кода и не могу понять, как он работает. Допустим мы объявляем структуру: struct nameofctruct { setofsomevar; }; Затем выделяем необходимое кол-во памяти для хранения уже объявленной структуры nameofstruct. nameofstruct *p_to_struct = new nameofstruct; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
27.09.2011, 12:43     сумма соседних членов последовательности
Цитата Сообщение от kravam Посмотреть сообщение
минимальный элемент надо искать среди следующих сумм:
61+ 92, 92+ 39, 39+ 85, 85+ 69 и так далее
Ну да тут сумма соседних чисел точно в голову влезло min(a1,a2,...an) сейчас поправлюсь

Добавлено через 24 минуты
Вот поправился(вообще же мне не нравиться что числа генерировать приходиться сейчас переделаю программму под последовательность содержащуюся в файле)
Код Си
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
64
65
66
67
68
69
70
71
72
73
74
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <math.h>
#include <time.h>
 
//Генерация случ числа по модулю меньшем чем MaxModule
int GenRandNum(int MaxModule)
{
    int ret = rand()%MaxModule;
    //Генерируем ранд минус
    ret *= int(pow(-1,rand()%(MaxModule*10)));
    while(ret < -MaxModule || MaxModule < ret)
    {
        ret = rand()%MaxModule;
        //Генерируем ранд минус
        ret *= int(pow(-1,rand()%(MaxModule*10)));
    }
    return ret;
}
 
int main()
{
    int ai,ai1,i,n,min;
    do
    {
        srand(time(NULL));//это позволит избежать повторения случ чисел от итерации к итерации
        printf("Enter num elements in sequence : ");
        scanf("%d",&n);
        printf("\tGenerated sequence\r\n"); 
        if((ai = GenRandNum(100)) < 0)
            printf("ai < 0, generation stoped\r\n");
        else
        {
            printf("a%02d = %d\r\n",1, ai);
            if((ai1 = GenRandNum(100)) < 0)
                printf("ai1 < 0, generation stoped\r\n");
            else
            {
                printf("a%02d = %d\r\n",2, ai1);
                min = ai + ai1;
                for(i = 2; i < n - 1; i++)
                {
                    if((ai = GenRandNum(100)) < 0)
                    {
                        printf("ai < 0, generation stoped\r\n");
                        break;
                    }
                    else
                    {
                        printf("a%02d = %d\r\n",i, ai);
                        if((ai1 = GenRandNum(100)) < 0)
                        {
                            printf("ai1 < 0, generation stoped\r\n");
                            break;
                        }
                        else
                        {
                            printf("a%02d = %d\r\n",(i++), ai1);
                            if(ai + ai1 < min)
                                min = ai + ai1;
                        }
                    }
                }
                printf("min sum: %d\r\n",min);
            }
        }
        printf("Press Y to new input\r\n");
        
    }
    while(toupper(getch()) == 'Y');
    return 0;
}

Enter num elements in sequence : 25
Generated sequence
a01 = 80
a02 = 39
a02 = 28
a02 = 7
a04 = 11
ai1 < 0, generation stoped
min sum: 35
Press Y to new input

Добавлено через 31 минуту
С++ реалиация
Цитата Сообщение от nikola_omsk Посмотреть сообщение
Даны числа а1, а2, a(n) Известно, что а1>0 и что среди а2, а3, a(n) есть хотя бы одно отрицательное число. Пусть а1, a2, an - члены данной последовательности, предшествующие первому отрицательному члену (n заранее не известно). Найти min(a1+a2,a2+a3,a(n-1)+a(n)). Без использования массивов. Прошу помощи.
Последовательность находиться в файле данных data.txt
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
64
65
66
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int ai,ai1,i,min;
    ifstream ifs;
    do
    {
        std::cout<<"\tInput sequence\r\n";
        ifs.open("data.txt",ios::out);
        if(!ifs)
            std::cout<<"Can't open data.txt\r\n";
        else
        {
            ifs>>ai;
            std::cout<<"a1 = "<<ai<<"\r\n";
            if(ai < 0)
                std::cout<<"a1 < 0 algorithm stoped\r\n";
            else
            if(!ifs.eof())
            {
                ifs>>ai1;
                std::cout<<"a2 = "<<ai1<<"\r\n";
                if(ai1 < 0)
                    std::cout<<"a2 < 0 algorithm stoped\r\n";
                else
                {
                    i = 3;
                    min = ai + ai1;
                    while(!ifs.eof())
                    {
                        ifs>>ai;
                        std::cout<<"a"<<i<<" = "<<ai<<"\r\n";
                        i++;
                        if(ai < 0)
                        {
                            std::cout<<"a"<<i<<" < 0 algorithm stoped\r\n";
                            break;
                        }
                        else
                        if(!ifs.eof())
                        {
                            ifs>>ai1;
                            std::cout<<"a"<<i<<" = "<<ai1<<"\r\n";
                            if(ai1 < 0)
                            {
                                std::cout<<"a"<<i<<" < 0 algorithm stoped\r\n";
                                break;
                            }
                            if(ai + ai1 < min)
                                min = ai + ai1;
                        }
                    }
                }
            }
        }
        std::cout<<"min sum: "<<min<<"\r\n";
        std::cout<<"Press Y to new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Input sequence
a1 = 1
продолжение
a2 = 5
a3 = 89
a4 = 643
a4 = 85
a5 = 14
a5 = 32
a6 = 0
a6 = 17
a7 = 256
a7 = 1024
a8 = 748

a8 = -13
a9 < 0 algorithm stoped
min sum: 6
Press Y to new input

data.txt
1 5 89 643 85 14 32 0 17 256 1024 748 -13 5 92 54 36
 
Текущее время: 00:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru