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

Преподаватель не принимает работу

17.01.2022, 18:54. Показов 756. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан массив y0, y1, y2,…, y2n-1. Определить сумму значений элементов массива с чётными номерами, лежащих между первым элементом с наименьшим неотрицательным значением и элементом с номером n.

Нужно пробегать по всему массиву, искать наименьшее положительное значение и от него считать до n сумму всех чётных членов. Нужно использовать тип элемента(telem=type element). Работа не принята.
Комментарий преподавателя такой:
ЛЮБОЙ(!!!) результат работы функции должен выводиться в функции main() Где сказано, что минимальный элемент лежит в левой половине массива?

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*Массивы динамические одномерные
Определить сумму значений элементов массива с чётными
номерами лежащих между первым элементом с наименьшим
неотрицательным значением и элементом с номером n.*/
 
#include<iostream>
#include<stdlib.h>
#include<locale.h>
using namespace std;
const int RAZ = 100;        //предельный размер массива
typedef int telem;          //определение типа элементов массива
typedef telem tmas[RAZ];    //определение типа массива
int nomer_min(const tmas, int);
 
void inputmas(tmas, int);
void outputmas(const tmas, int);
int obrabotka_mas(tmas, int, int);
//main_begin______________________________________________________________
int main()
{
    tmas  a;                //массив
    int   n,                //половина размера массива
    Sum = 0;                //сумма чётных элементов
 
    setlocale(LC_ALL, "Russian");
    //Ввод исходных данных
    cout << " Определить сумму значений элементов массива с чётными " << endl;
    cout << " номерами лежащих между первым элементом с наименьшим " << endl;
    cout << " неотрицательным значением и элементом с номером n.\n";
    cout << "\n Введете половину размера массива <= " << RAZ / 2 << " : ";
    cin >>  n;
    //Контроль ввода размера массива
    if (2 * n > RAZ || n <= 0)
    {
        cout << " Введено недопустимое значение размера массива" << endl;
        return 1;
    }
    //Ввод исходного массива
    inputmas(a, 2 * n);
    //Вывод исходного массива
    cout << " Исходный массив:" << endl;
    outputmas(a, 2 * n);
    cout << endl;
    int imin = nomer_min(a, n);
    Sum = obrabotka_mas(a, n, imin);
    cout << "Сумма чётных элементов:" << Sum << endl;
 
    return 0;
}
//main_end________________________________________________________________
//nomer_min_begin_________________________________________________________
//Поиск индекса элемента с наименьшим неотрицательным значением
int nomer_min(const tmas a, int n)
{
    int imin,               //индекс минимального неотр. элемента
        flag = 0;           //факт наличия неотрицательного элемента
   //Ищем первый неотрицательный элемент
    for (int i = 0; i < n; i++)
        if (a[i] >= 0)
        {
            imin = i;
            flag = 1;
            break;
        }
    if (flag)
    {
        for (int i = imin + 1; i < n; i++)
            if (a[i] >= 0 && a[i] < a[imin]) imin = i;
    }
    else {
        cout << "\n Неотрицательных элементов в массиве нет";
        exit(3);        //прекращение исполнения программы
    }
    return imin;
}
//nomer_min_end___________________________________________________________
//inputmas_begin__________________________________________________________
//Ввод исходного массива
void inputmas(tmas a, int n)
{
    cout << " Введите в одной строке элементы массива, состоящего из " << n;
    cout << "\n чисел, и нажмите <Enter>" << endl;
    for (int i = 0; i < n; i++)
        cin >> a[i];
}
//inputmas_end____________________________________________________________
//outputmas_begin__________________________________________________________
//Вывод массива
void outputmas(const tmas a, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout.width(4);  //ширина поля для вывода значения элемента массива
        cout << a[i] << " ";
    }
}
//outputmas_end____________________________________________________________
//obrabotka_mas_begin______________________________________________________
//
int obrabotka_mas(tmas a, int n, int imin)
{
    int i;  
    int summa = 0;
    for (i = imin; i < n; i++)
    if (i % 2 == 0)
    {
                  
        summa = summa + a[i]; 
    }
 
    return summa;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2022, 18:54
Ответы с готовыми решениями:

Что хочет преподаватель?
Добрый день! Собственно задача сделать библиотеку: Описание Необходимо разработать иерархию...

Нужен преподаватель MS VISUAL C++
Дорогие друзья, Есть ли кто из Киева, кто хорошо разбирается с MS VISUAL C++, знаком с основами...

Преподаватель решил помучать
Всем привет, учусь на вечерке, времени нет всем этим заниматься т.к. уже работаю давно в другой...

Описать объект Преподаватель
Друзья нужна помощь в решении задач, с использованием функций и процедур. Задание II. Объект...

14
15 / 10 / 5
Регистрация: 04.01.2021
Сообщений: 27
17.01.2022, 19:27 2
ЯСаня, Если я правильно понял условие задачи, то
У вас есть некоторый массив чисел: 6, -5, 4, -3, 2, 1,
Пользователь вводит n(позиция начального элемента): пусть будет 1
Минимальный положительный элемент: 1 (позиция в массиве - 5, если индексы от 0 будем считать)
Вывод суммы элементов от [1..5] = 4 + 2 = 6
Цитата Сообщение от ЯСаня Посмотреть сообщение
Где сказано, что минимальный элемент лежит в левой половине массива?
Скорее всего преподаватель пытался этот случай вам указать
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
17.01.2022, 19:44  [ТС] 3
Нет, не совсем так. Пользователь вводит число n, это половина массива. Программа ему отвечает что введите числа в массив размера 2n.
Допустим массив размера n=3
Введите в массив 6 чисел:
1 2 3 4 5 -6
Вы ввели массив:
1 2 3 4 5 -6
Сумма чётных членов массива: 2
Так как миним положит число 1, от него идёт рассчёт, это нулевой элемент. А нам нужны чётные, второй, четвёртый, шестой до числа n. Сумма их значений. Я программу написал, она работает, но у препод замечания есть, моя программа смотрит числа до n и сумму чётных считает до n, а надо по всему циклу искать наименьшее положительное. И в меню сделать вывод если положительных чисел нету вообще
0
15 / 10 / 5
Регистрация: 04.01.2021
Сообщений: 27
17.01.2022, 20:14 4
Цитата Сообщение от ЯСаня Посмотреть сообщение
моя программа смотрит числа до n
Поменяйте тогда цикл не от 0 до n, а от 0 до 2n для поиска минимального числа

Так как ваш программа уже не будет правильно работать с моим примером
-6 5 4 3 2 1
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
17.01.2022, 20:30 5
Цитата Сообщение от ЯСаня Посмотреть сообщение
Вы ввели массив:
1 2 3 4 5 -6
Сумма чётных членов массива: 2
Но ваша программа выдает сумму 4 на таком вводе. Откуда вы взяли 2? Вы вообще сами запускали свою программу?

Цитата Сообщение от ЯСаня Посмотреть сообщение
Комментарий преподавателя такой:
ЛЮБОЙ(!!!) результат работы функции должен выводиться в функции main() Где сказано, что минимальный элемент лежит в левой половине массива?
Так вы же сам сказали: "Нужно пробегать по всему массиву, искать наименьшее положительное значение и от него считать до n сумму всех чётных членов."

Где у вас в коде "пробегать по всему массиву, искать наименьшее положительное значение"?

Цитата Сообщение от ЯСаня Посмотреть сообщение
моя программа смотрит числа до n
Почему вдруг только до n, если вы сами сказали: "Нужно пробегать по всему массиву"???

Цитата Сообщение от ЯСаня Посмотреть сообщение
Так как миним положит число 1, от него идёт рассчёт, это нулевой элемент.
Это прекрасно. А если бы ввод был 1 2 3 4 0 -6? Минимальный неотрицательный элемент здесь 0. Т.к. он находится в правой части, считать нечего, сумма должна быть 0.

А ваша программа снова находит 1, считает от 1 и опять получает сумму 4. Это неправильно.
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
17.01.2022, 22:20  [ТС] 6
Вот и надо переделать, чтобы пробегала по всему массиву, у меня в коде она пробегает до n. И чтобы если миним положит число стоит справа от n, считала сумму чётных до n. И вот это должно выводиться из меню, а не из функции. У меня не получается из меню вывести

Добавлено через 43 секунды
cout << "\n Неотрицательных элементов в массиве нет";
exit(3); //прекращение исполнения программы
Должно из меню выводиться
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
17.01.2022, 22:44 7
Цитата Сообщение от ЯСаня Посмотреть сообщение
Вот и надо переделать, чтобы пробегала по всему массиву, у меня в коде она пробегает до n.
Не понял. У вас же в других функциях уже сделано "чтобы пробегала по всему массиву". Например, при выводе массива "пробегает по всему массиву". А почему вдруг при поиске минимум возникли какие-то сложности?
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
17.01.2022, 23:43  [ТС] 8
Это я переделал, а остальное?

Добавлено через 4 минуты
если все числа отрицательные, должно выводиться сообщение что неотрицательных чисел нет и программа останавливается

Добавлено через 2 минуты
Как сделать из меню вывод строки cout << "\n Неотрицательных элементов в массиве нет"; ?
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
18.01.2022, 10:33 9
Цитата Сообщение от ЯСаня Посмотреть сообщение
Массивы динамические одномерные
Где динам. массив?
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
18.01.2022, 10:47  [ТС] 10
21 строка tmas a
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
18.01.2022, 13:08 11
ЯСаня, операции new применяются для создания динамических массивов, у вас статический

Добавлено через 1 минуту
C++
1
int *array = new int [n]; // динамический
Добавлено через 2 минуты
пример работы с динамическим массивом
Образцы (шаблоны) программ для типовых задач
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
18.01.2022, 13:23  [ТС] 12
Динамический одномерный это же тоже самое что статический? разве нет?
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
18.01.2022, 13:26 13
ЯСаня, нет
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 8
18.01.2022, 13:38  [ТС] 14
Статический это определённый размер в памяти, а динамический можно увеличивать память под массив, так
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
18.01.2022, 13:43 15
ЯСаня, ты в угадайку играешь, что ли? Просто удели пару выходных изучению книжки по C++.
Размер статического ты определяешь при написании программы, а динамического в процессе выполнения(это не значит, что его можно увеличивать после создания, просто можно например ввести с клавиатуры или посчитать по формуле после того как программа запущена, но до того как массив создан) Ну и нюансы про стек и кучу ещё есть...
0
18.01.2022, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2022, 13:43
Помогаю со студенческими работами здесь

Преподаватель программирования (Москва)
Компьютерный центр Школа Программирования proglive.ru (Москва) осуществляет набор преподавателей по...

Нужен преподаватель по вордпресс
Привет Мне нужно немного доработать свой сайт. Для этого нужно читать и разбираться самому. Сайт...

Преподаватель математики и информатики
26 лет, высшего образования нет. 2 года назад влюбился в математику. Понимаю, что о...

Опишите структуру «Преподаватель»
Написать программу для доступа к файлу, выполняющую следующие действия: • построчную запись в файл...

Разыскивается преподаватель MATLAB
Всем привет! Наши товарищи ищут преподавателя MATLAB, который будет вести практикумы у них на...

Опишите структуры «Преподаватель» и «Студент»
Убедительно прошу помочь с решением задач: 1.Опишите структуру «Преподаватель». Поля: ФИО, стаж,...

Преподаватель на курсы по программированию, Москва
Добрый день! Образовательному центру в Москве (10 мин. пешком от ст.м. Первомайская) требуются...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru