С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
1

Как оптимизировать код и реализовать последнюю функцию

03.02.2021, 13:14. Показов 601. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
//1. Имеется массив из 10 элементов. Необходимо:
//- найти среднее арифметическое всех элементов массива
//- посчитать сумму элементов между максимальным и минимальным элементом массива
//- суммировать все четные и перемножить все нечетные элементы массива.
//- найти положение максимального элемента массива и если индекс этого элемента – четный, то сдвигаем массив на 3 позиции влево, а если нечетный – на 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
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
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <time.h>
#include <cmath>
using namespace std;
int main()
{
    srand(time(NULL));
    const int N = 10; // размер массива
    int i,min_val,max_val;
    int index_min=0;
    int index_max=0;
    int sum=0;
    int nums[N];
    for(i=0;i<N;i++)
    
 
    for(i=0;i<N;i++)nums[i]=rand()% 100;
    for(i=0;i<N;i++)
    cout<<"Это элемент массива["<<i<<"]: "<<nums[i]<< endl << endl;
    
    
    
        for (int i = 0; i<N; i++){
        if (nums[i] % 2 == 0) // проверка на четность
        sum += nums[i];}
      cout << "Сумма четных элементов массива равна : " << sum << endl;
    
    
        int sum3 = sum;
        for (int i = 0; i<N; i++){
        if (nums[i] % 2 != 0) // проверка не четность
        sum3 *= nums[i];}
      cout << "Сумма не четных элементов массива перемноженая равна : " << sum3 << endl << endl;
    
    
    int sum2 = 0;
    for (i=0; i<N; i++)
    sum2+=nums[i];
    cout << "Среднее арифметическое : " << sum2 << endl;
    
    
    min_val=max_val=nums[0];
    for(i=1;i<N;i++)
    {
    if(nums[i]<min_val)
    {
    min_val=nums[i];
    index_min=i;
    }
    if(nums[i]>max_val)
    {
    max_val=nums[i];
    index_max=i;
    }
    };
    cout<<"Номер элемента массива с минимальным значением : "<<index_min<<"("<<min_val<<")"<<endl;
    cout<<"Номер элемента массива с максимальным значением: "<<index_max<<"("<<max_val<<")"<<endl;
    cout<< endl;
    
    
        int sum1 = 0;
        if(index_min<index_max)
        for( i=index_min+1;i<index_max;i++)
        sum1+=nums[i];
      else
        for(i=index_max+1;i<index_min;i++)
        sum1+=nums[i];
     cout<<"Сумма значений элементов,находящихся между элементами с минимальным и максимальным значением: "<<sum1<< endl;
    
    int temp = 0;
    temp = nums[0];
      for(int i = 0; i < 10; i++){
       if (nums[i] > temp) {
            temp = nums[i];
            temp = i;
           }
      }
    if (temp %2 ==0)
        
      cout <<" максимальный элемент массива : " << temp << endl;
    
 
            return 0;
}
//найти положение максимального элемента массива и если индекс этого элемента – четный, то сдвигаем массив на 3 позиции влево, а если нечетный – на 4 позиции вправо
здесь вообще н
ума не приложу (

Добавлено через 3 минуты
я тут такого намудрил, вроде как работает, но понимаю ,что не годиться. очень надо не просто списать ,а понять. если можно кто сможет такую задачу решить ,прокомментируйте действия пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2021, 13:14
Ответы с готовыми решениями:

Как можно оптимизировать код? Код считывает кол-во скобок
s = input() s = cheked = set() ans = 0 L = len(s) for l in range(L+1 if L % 2 else L, 1, -2):...

Реализовать "Стек" (оптимизировать код)
Ограничение по времени работы: 2 секунды Реализуйте стек, поддерживающий следующие операции: ...

как оптимизировать функцию?
Как правильно оптимизировать функцию с QCheckBox? Сейчас объясню, что бы добавить действие к...

Как немного оптимизировать функцию?
Здравствуйте всем! Сейчас писал этот функцию для проекта но немного он не оптимизирован и работает...

12
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 17:51 2
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 <cstdlib>
#include <ctime>
using namespace std;
 
void LeftShift (int *a, int n)
{    
    int temp=a[0];
    for (int i = 0; i < n-1; i++)
        a[i]=a[i+1];
    a[n-1]=temp;     
}
 
int main()
{
    srand((int)time(0));
    const int n=10;
    int a[n];
    int p=0, m=0, k, sum_even=0, local_sum=0, imax=0, imin=0;
    long long mult_odd=1LL;
    double avg=0.;    
 
    for(int i = 0; i < n; i++)
    {
        a[i]=rand()%9 + 1;
        avg+=a[i];
        if(a[i]%2==0) {p=1;sum_even+=a[i];}
        else {m=1;mult_odd*=a[i];}
        if (a[i]>a[imax]) imax=i;
        if (a[i]<a[imin]) imin=i;
        cout << a[i] << " ";
    }
    
    avg/=n;
    
    cout << "\naverage = " << avg << "\n";
    if(p==1) cout << "sum even = " << sum_even << "\n";
    else cout << "even elements are absent\n";
    if(m==1) cout << "mult odd = " << mult_odd << "\n";
    else cout << "odd elements are absent\n";    
    cout << "index max = " << imax << "\n";
    
    if(imax%2==0) k=3;
    else k=n-4;
    
    if(imax>imin) swap(imax,imin);
    
    if(imax!=imin-1 && imax!=imin)
    {    
    for (int i = imax + 1; i < imin; i++) 
        local_sum+=a[i];
    
    cout << "local sum = " << local_sum << "\n";
    }
    else cout << "Elements beetween first max and first min are absent\n";     
    
    for (int j = 0; j < k; j++)
        LeftShift(a,n);
    
    for(int i = 0; i < n; i++)       
        cout << a[i] << " ";
    cout << "\n"; 
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 18:01  [ТС] 3
Добрый человек спасибо тебе огромное) у меня чуть мозг не взорвался за два дня поиска ришения
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 18:16 4
ge17, пожалуйста. Вы в целом решали в правильном направлении, вот здесь только наверное условие не так прочитали
Цитата Сообщение от ge17 Посмотреть сообщение
Сумма не четных элементов массива перемноженая равна
нужно найти произведение нечётных, поэтому строка 29 Вашего кода не так
Цитата Сообщение от ge17 Посмотреть сообщение
int sum3 = sum;
а так:
C++
1
int sum3 = 1;
получше будет, так как произведение растёт быстро и возможно переполнения типа int
C++
1
long long sum3 = 1LL;
1
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 18:22  [ТС] 5
Спасибо огромное, я только начал учиться и мне не все понятно пока что) Ваш код вроде без ошибок, но для меня не понятно выводы(( если у вас есть время // прокомментируйте пожалуйста я хотел бы понять логику кода
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 18:29 6
ge17, в принципе тоже что и у Вас, только меньше циклов. спрашивайте, что именно не понятно
0
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 18:44  [ТС] 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
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 <cstdlib>
#include <ctime>
using namespace std;
 
void LeftShift (int *a, int n)
{    
    int temp=a[0];
    for (int i = 0; i < n-1; i++) // вот этот блок кода не понятен 
        a[i]=a[i+1];
    a[n-1]=temp;     
}
 
int main()
{
    srand((int)time(0));
    const int n=10;
    int a[n];
    int p=0, m=0, k, sum_even=0, local_sum=0, imax=0, imin=0;
    long long mult_odd=1LL; // 1LL - что это значит?
    double avg=0.;    
 
    for(int i = 0; i < n; i++)
    {
        a[i]=rand()%9 + 1;
        avg+=a[i];
        if(a[i]%2==0) {p=1;sum_even+=a[i];}
        else {m=1;mult_odd*=a[i];}
        if (a[i]>a[imax]) imax=i;
        if (a[i]<a[imin]) imin=i;
        cout << a[i] << " ";
    }
    
    avg/=n; // avg/=n; - не понимаю что это
    
    cout << "\naverage = " << avg << "\n";
    if(p==1) cout << "sum even = " << sum_even << "\n";
    else cout << "even elements are absent\n";
    if(m==1) cout << "mult odd = " << mult_odd << "\n";
    else cout << "odd elements are absent\n";    
    cout << "index max = " << imax << "\n";
    
    if(imax%2==0) k=3;
    else k=n-4;
    
    if(imax>imin) swap(imax,imin);
    
    if(imax!=imin-1 && imax!=imin)
    {    
    for (int i = imax + 1; i < imin; i++) 
        local_sum+=a[i];
    
    cout << "local sum = " << local_sum << "\n";
    }
    else cout << "Elements beetween first max and first min are absent\n";     
    
    for (int j = 0; j < k; j++)
        LeftShift(a,n); // LeftShift(a,n); такого я тоже в коде не встречал
    
    for(int i = 0; i < n; i++)       
        cout << a[i] << " ";
    cout << "\n"; 
    
system("pause");
return 0;
}

1. Имеется массив из 10 элементов. Необходимо:
//- найти среднее арифметическое всех элементов массива
//- посчитать сумму элементов между максимальным и минимальным элементом массива
//- суммировать все четные и перемножить все нечетные элементы массива.
//- найти положение максимального элемента массива и если индекс этого элемента – четный, то сдвигаем массив на 3 позиции влево, а если нечетный – на 4 позиции вправо.


Код
2 3 9 1 6 9 9 6 8 8 // это должно быть сдвиг массива
average = 6.1 // ???
sum even = 30. // это сумма четных 
mult odd = 2187 // это перемножения 
index max = 2 // ???
Elements beetween first max and first min are absent //??
1 6 9 9 6 8 8 2 3 9 //??
sh: pause: command not found. // ???
Program ended with exit code: 0
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 19:04 8
Цитата Сообщение от ge17 Посмотреть сообщение
вот этот блок кода не понятен
C++
1
2
3
4
int temp=a[0]; // запомнили первый элемент в переменной temp
for (int i = 0; i < n-1; i++) // сдвинули все элементы начиная со второго на одну позицию влево
    a[i]=a[i+1];
a[n-1]=temp; // присвоили последнему элементу значение переменной temp (т.е. значение первого элемента)
Код
2 3 9 1 6 9 9 6 8 8 // это начальный массив
average = 6.1 // среднее арифметическое значение элементов массива
sum even = 30 // это сумма чётных ДА
mult odd = 2187 // это [S]перемножения[/S] произведение нечётных ДА 
index max = 2 // индекс максимального значения (a[2]=9)
Elements beetween first max and first min are absent // элементы между первым максимальным a[2]=9 и первым минимальным a[3]=1 отсутствуют
1 6 9 9 6 8 8 2 3 9 // массив после циклического сдвига на 3 позиции влево
sh: pause: command not found. // - уберите строку system("pause");
Program ended with exit code: 0 // программа завершилась успешно
1
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 19:18  [ТС] 9
Теперь все понял) спасибо вам огромное, без вас бы я точно не справился. ДАВАЙТЕ ДРУЖИТЬ)
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 19:22 10
Цитата Сообщение от ge17 Посмотреть сообщение
long long mult_odd=1LL; // 1LL - что это значит?
Цитата Сообщение от Yetty Посмотреть сообщение
получше будет, так как произведение растёт быстро и возможно переполнения типа int
long long sum3 = 1LL;
буквы LL ставятся для обозначения числа типа long long

Цитата Сообщение от ge17 Посмотреть сообщение
LeftShift(a,n); такого я ... не встречал
обычный вызов функции. если функции ещё не проходили, уберите функцию (строки 6-12), а строки 57-58 замените:
C++
1
2
3
4
5
6
7
for (int j = 1; j <= k; j++)
{
    int temp=a[0];
    for (int i = 0; i < n-1; i++)
        a[i]=a[i+1];
    a[n-1]=temp;
}
0
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 19:28  [ТС] 11
LeftShift(a,n); так даже лучше, я стараюсь учится у таких как вы для оптимизации кода.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2021, 19:39 12
Цитата Сообщение от ge17 Посмотреть сообщение
avg/=n; - не понимаю что это
то же что и
C++
1
avg=avg/n;
переменная avg сначала используется для накопления суммы, а затем сумма делится на количество слагаемых - в результате получается среднее арифметическое

Добавлено через 4 минуты
Цитата Сообщение от ge17 Посмотреть сообщение
LeftShift(a,n); так даже лучше, для оптимизации кода
здесь как раз нет оптимизации Вы там что-то насчёт функции говорили
Цитата Сообщение от ge17 Посмотреть сообщение
реализовать последнюю функцию
у меня просто была эта функция, её и скопировал, то есть можно написать как с функцией так и без функции

я честно говоря думал, что Вы спросите как это при нечётных индексах max происходит сдвиг вправо
0
0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 105
03.02.2021, 23:10  [ТС] 13
Я уже совсем запутался в этой задаче
0
03.02.2021, 23:10
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2021, 23:10
Помогаю со студенческими работами здесь

как оптимизировать код?
Есть несколько dbf файлов. Из них в разные обьекты нужно получить список строк. Для этого написал...

Как оптимизировать код
Доброй ночи господа у меня к вам такая просьба как можно упростить данный код? #include &lt;iostream&gt;...

Как оптимизировать код?
ch : char; ... If ch='1' then Write(F2, ch); If ch='2' then Write(F2, ch); If ch='3' then...

Как оптимизировать код?
Придумал алгоритм (скорее всего, такой уже был) вычисления простых чисел на основе решета...

Как оптимизировать код?
Условие задачи(для понимания): Несколько учеников 10А класса физико-математической школы...

Как оптимизировать код?
Всем добрый день) Недавно начал изучать C# и решил написать такую программу: В 50-х годах XX века...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru