Задача по функциям C++ [закрыт]

226
26 декабря 2021, 07:10
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 2 года назад.

Улучшить вопрос

Оформить функцию поиска номера максимального элемента массива среди отрицательных элементов, В главной программе Дано 3 одномерных массива a,b,c длиной 30 элементов каждый. применить функцию для каждого из 3-х заданных массивов. найти произведение найденных номеров максимальных элементов. (в функции не должно быть операторов ввода или вывода)

почему не работает максимальное отрицательное число?

#include "iostream"
#include "ctime"
#include "cstdlib"
using namespace std;
int s(int a[], int n)
{
int s=0;
int a_max=0;
for(int i=0;i > n;i++)
{
if (i < 0 && i < a_max)
a_max=i;
}
return a_max;
}
int main(){
const int n=30;
int a[n],b[n],c[n];
srand(time(NULL));
for(int i=0; i < n; i++)
cout<<(a[i]=rand()% 100 - 50)<<' ';
cout<< endl;
for(int i=0; i < n; i++)
cout<<(b[i]=rand()% 100 - 50)<<' ';
cout<< endl;
for(int i=0; i < n; i++)
cout<<(c[i]=rand()% 100 - 50)<<' ';
cout<< endl;
cout << "1---\t" << s(a,n) << endl << "2---\t" << s(b,n) << endl << "3---\t" << s(c,n) << endl;
}

вывод:

-1 29 29 -16 7 9 -37 30 -18 40 -47 3 -48 -10 44 35 22 34 -33 -11 -11 -18 41 -12 27 -40 39 3 -15 -39
-15 20 -30 -7 48 18 -1 11 33 -21 -48 -34 7 -37 -39 44 30 -30 -20 14 31 20 -6 37 10 -25 17 35 -41 -8
-11 12 12 -22 -11 -37 47 -33 16 0 40 -23 -33 -24 48 -28 -11 7 32 40 -46 -32 -41 26 40 -27 21 6 -9 17
1---    0
2---    0
3---    0
Answer 1

У вас совершенно не верно реализована функция поиска максимума среди отрицательных.

  1. Начальная инициализация это первый отрицательный элемент. Его нужно найти.
  2. Далее обычный поиск максимума Определенная проблема есть с тем, что в массиве может не быть отрицательного элемента, тогда его номер принимаем за -1

    int numOfMax(int a[], int n)
    {
       int n_max=-1;
       for(int i=0; i < n;i++)
        {
          if (a[i] < 0 ){
           if (n_max==-1){n_max=i;}
           else{
               if (a[i]>a[n_max]){ n_max=i;}
           }
         }
    }
    return n_max;
    }
    
    using namespace std;
    int main()
    {
    const int n=30;
    int a[n],b[n],c[n];
    srand(time(NULL));
    for(int i=0; i < n; i++)
    cout<<(a[i]=rand()% 100 - 50)<<' ';
    cout<< endl;
    for(int i=0; i < n; i++)
    cout<<(b[i]=rand()% 100 - 50)<<' ';
    cout<< endl;
    for(int i=0; i < n; i++)
    cout<<(c[i]=rand()% 100 - 50)<<' ';
    cout<< endl;
    cout << numOfMax(a,n)*numOfMax(b,n)*numOfMax(c,n);
    }
    
READ ALSO
C++, приоритет операторов

C++, приоритет операторов

Рассмотрим следующий пример:

82
Как поменять &quot;e+...&quot; на знак степени &quot;10^...&quot;

Как поменять "e+..." на знак степени "10^..."

Например у меня есть число

96
c# конвертация кодировки

c# конвертация кодировки

Требуется программа которая будет текст из 1252 переводить в 1251

144
ADO.NET SCOPE_IDENTITY() Возвращает NULL

ADO.NET SCOPE_IDENTITY() Возвращает NULL

Что-то всё работало, а потом поломався! Данными база заполненаВсё работало

81