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

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

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

консольные приложения - C++

02.02.2012, 22:50. Просмотров 1020. Ответов 13
Метки нет (Все метки)

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

Многопоточные консольные приложения - C++
подскажите сайт\книжку где почитать (обязательно с примерами) про многопоточные приложения, и только с консольными примерами. в этой...

Перестали запускаться консольные приложения - C++
Сегодня открываю QtCreator, создаю консольное приложение, что-то там пишу, нажимаю F5. Build завершился, запускается отладчик - и тут...

Вопрос про консольные приложения - C++
Пару дней назад начал изучение c++, скачал несколько книг и начал читать. Все приложения выполняются в консолях, как сделать приложение...

Перестали работать консольные приложения на с++ в visual studio2013 - C++
Учу с++, не писал с месяц ничего в visual studio2013. Перестали работать консольные приложения с++, компилируется без ошибок, запускается...

В Microsoft Visual Studio Express 2012 не запускаются консольные приложения - C++
Отказывается запускать программы на С++. К примеру "Hello World"

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше? - C++
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы было оконное приложение, так что-же лучше?...

13
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
02.02.2012, 22:53 #2
Найти десять таких последовательных элементов в массиве, чтобы сумма их была максимальна.
0
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
02.02.2012, 22:57  [ТС] #3
типо чтоб при слаживание 10 чисел их сумма больше суммы других?
в масиве 100 чисел
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.02.2012, 23:03 #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
#include <iostream>
#include <algorithm>
#include <iomanip>
 
int main()
{
    std::srand(std::time(nullptr));
    const std::size_t size = 20;
    int arr[size];
    std::generate(arr, arr + size, [] { return std::rand() % 21; });
    for(const auto& it: arr)
        std::cout << std::setw(4) << it;
    std::cout << std::endl;
    int sum = 0;
    for(std::size_t i = 0; (i < 10) && (i < 10); ++i)
        sum += arr[i];
    int sumMax = sum;
    std::size_t posFirst = 0, posLast = 10;
    //std::cout << "sum between 0 and 10 = " << sum << std::endl;
    for(std::size_t i = 10; i < size; ++i)
    {
        sum += arr[i];
        sum -= arr[i - 10];
        if(sum > sumMax)
        {
            sumMax = sum;
            posFirst = i - 9;
            posLast = i + 1;
        }
        //std::cout << "sum between " << i - 9 << " and " << i + 1<< " = " << sum << std::endl;
    }
    std::cout << "max sum between " << posFirst << " and " << posLast << " = " << sumMax << std::endl;
    return 0;
}
http://liveworkspace.org/code/4bedd1cfe79aba7ee3260077c4d58638
1
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
02.02.2012, 23:10  [ТС] #5
Цитата Сообщение от soon Посмотреть сообщение
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
#include <iostream>
#include <algorithm>
#include <iomanip>
 
int main()
{
    std::srand(std::time(nullptr));
    const std::size_t size = 20;
    int arr[size];
    std::generate(arr, arr + size, [] { return std::rand() % 21; });
    for(const auto& it: arr)
        std::cout << std::setw(4) << it;
    std::cout << std::endl;
    int sum = 0;
    for(std::size_t i = 0; (i < 10) && (i < 10); ++i)
        sum += arr[i];
    int sumMax = sum;
    std::size_t posFirst = 0, posLast = 10;
    //std::cout << "sum between 0 and 10 = " << sum << std::endl;
    for(std::size_t i = 10; i < size; ++i)
    {
        sum += arr[i];
        sum -= arr[i - 10];
        if(sum > sumMax)
        {
            sumMax = sum;
            posFirst = i - 9;
            posLast = i + 1;
        }
        //std::cout << "sum between " << i - 9 << " and " << i + 1<< " = " << sum << std::endl;
    }
    std::cout << "max sum between " << posFirst << " and " << posLast << " = " << sumMax << std::endl;
    return 0;
}
http://liveworkspace.org/code/4bedd1cfe79aba7ee3260077c4d58638
спс но ксожеленью не все тут понятно=(
Апдейт : если не тяжело моежете расказать принцып ее работы?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.02.2012, 23:20 #6
CyBer_UA, все очень просто. Изначально считаем сумму первых 10 элементов. Заводим переменную для максимальной суммы, а так же для первого и последнего элемента. Затем идем по массиву до последнего элемента, прибавляя текущий элемент к сумме и вычитая (текущий - 10). Если данная сумма больше максимальной, то запоминаем промежуток и максимальную сумму.
Корректно отработает при количестве элементов >= 10. Если их меньше, то потребуются некоторые косметические правки.
2
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
02.02.2012, 23:34  [ТС] #7
а если в масиве больше чисел допустим 200 то сумму первых 20 элементов?

Добавлено через 4 минуты
смотрите создал такой массив
C++
1
2
3
4
5
6
7
8
int ar[200];
int sum;
for(int i=0;i<200;i++){
ar[i]=random(100);
sum+=ar[i];
cout<<ar[i]<<" ";
 
}
сумма допустим 4792 как сумма 10 елементов может быть больше общей?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.02.2012, 23:38 #8
Цитата Сообщение от CyBer_UA Посмотреть сообщение
а если в масиве больше чисел допустим 200 то сумму первых 20 элементов?
Сказано 10, откуда вы 20 взяли?

Цитата Сообщение от CyBer_UA Посмотреть сообщение
умма допустим 4792 как сумма 10 елементов может быть больше общей?
сумма непрерывного участка из 10 элементов, при чем тут общая?
1
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
02.02.2012, 23:48  [ТС] #9
П.с сори что туплю,просто тяжелавато дается это задание=(
Веб языки даются проще
буду разбиратся!

Добавлено через 1 минуту
а под максимальной суммой имеется ввиду сумма первых 10 элементов?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.02.2012, 23:54 #10
а под максимальной суммой имеется ввиду сумма первых 10 элементов?
Она инициализируется суммой первых элементов, но вообще под ней подразумевается максимальная сумма 10 элементов.
0
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
03.02.2012, 00:06  [ТС] #11
апдейт :все что удалено понял что не прокатит=)

Добавлено через 3 минуты
for(std::size_t i = 0; (i < 10) && (i < 10); ++i)
еще вопрос эта строчка читается :
условие верно пока i меньше 10 и i меньши 10,а почему нельзя написать i < 10
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.02.2012, 10:35 #12
soon, А почему не использовать accumulate?
Автор, можно. Это будет одно и тоже.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.02.2012, 13:08 #13
for(std::size_t i = 0; (i < 10) && (i < 10); ++i)
Вот это я отжог. По задумке там должно быть одно из условий i < size. Так, на всякий случай.

soon, А почему не использовать accumulate?
А шут его знает, почему я в циклы полез. Время позднее уже было.
0
CyBer_UA
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 30
03.02.2012, 16:16  [ТС] #14
пытался сам сделать
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
#include<time.h>
#include<stdio.h>
#include<iostream.h>
#include <stdlib.h>
#include <conio.h>
#pragma argsused
int main(){
int ar[200];
int sum=0;
int sum1,position,g=0;
for(int i=0;i<200;i++){
ar[i]=random(100);
//sum+=ar[i];
cout<<ar[i]<<" ";
 
g++;
//cout<<"g=" <<g<<"\n";
if(g==9){g=0;sum1=0;}
sum1+=ar[i];
if(i==9){sum=sum1;}
if(sum1>sum ){
sum=sum1;
position=i;
 
}
 
}
cout<<"sum=" <<sum<<"\n"; cout<<"position="<<position-9<<"\n";
for(int k=(position-9);k<(position);k++){
cout<<ar[k]<<" ";
}
        return 0;
        getch();
        }
но чет не коректно пашет
0
03.02.2012, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2012, 16:16
Привет! Вот еще темы с ответами:

консольные игры - C++
подскажите как создать игры (консольные) я вообще не представляю как их делать Добавлено через 18 минут че никто не знает ????

Консольные пятнашки - C++
Добрый день,у кого нибуть есть исходник пятнашек на с++, очень срочно надо

C++ Консольные программы - C++
Помогите кто как может!!! Задачи пишем в теме сообщения! Одно сообщение - одна задача!

Консольные команды - C++
Здравствуйте, столкнулся с небольшой проблемой. Хотел сделать так, чтобы при нажатии клавиши открывалась консоль, прописывались подряд 3...


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

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

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