В одномерном массиве размерности n найти МАКСИМАЛЬНОЕ значение из

142
22 сентября 2019, 19:30

МАКСИМАЛЬНОЕ значение из ( максимального значения первых 3 положительных чисел массива , минимальное значение из 2 последних элементов массива ). Вывести массив подкрасив подходящие по условию эл-ты (т.е. первые 3 положит эл-та и последние 2 четных эл-та ПыСы в зеленый цвет и красный соответственно). Проблема в том , что я не могу вывести и использовать последние 2 четных эл-та. Эл-ты не на последних 2 четных позициях а именно 2 последних четных эл-та. (в задачке надо ещё 2 условия реализовать не обращайте внимания, всё в case 1 )

вот мой код

const int n = 10;
// Наш массив заданный вручную.
int a[n];
// Переменная для меню.
int choice;
// Переменные хранящие размер наших вспомогательных массивов.
int count1=0,count2=0;
int s =0;
int k = 0;
 // Для хранения первых 3х положительных значений массива и последних двух чётных чисел массива сответственно.
int x[count1],y[count2];
int max1,max2,min1,i,m=0;
int AverageValue = 0, sum = 0;
for ( int i = 0; i < n; i++)
{
    printf("a[%d]=",i);
    scanf("%i",&a[i]);
}
printf("\nEnter \n1) max(max(first 3), min(last 2 even)."); 
printf("\n2) Average even(3 elements before average element of array.");
printf("\n3) Elements who mod 5 == 0 replace to 15.");
printf("\n Enter your choice = ");
scanf("%i",&choice);

switch(choice)
{
case 1:
    for ( i = 0; i < n; i++)
    {
        if( m < 3)
        {
            if (a[i] > 0)
            {
                SetColor(2);
                printf("\t%i",a[i]);
                x[count1++] = a[i];
                m++;
                continue;
            }
            else
            {
                SetColor(15);
                printf("\t%i",a[i]);
                continue;
            }
        }
        if ((a[i] % 2 == 0)&&(k < 2))
        {
            SetColor(4);
            printf("\t%i",a[i]);
            // Записываем нужные эл-ты в массив для последущего нахождения 
            // максимального значения.
            y[count2++] = a[i];
            k++;
            continue;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
            continue;
        }
    }
    SetColor(15);
    max1 = x[0];
    for ( i = 0 ; i < 3; i++)
    {
        max1 = x[i] > max1 ? x[i] : max1;
    }
    min1 = y[0];
    for ( i = 0; i < 2; i++)
    {
        min1 = y[i] < min1 ? y[i] : min1;
    }
    max2 = max1 > min1 ? max1 : min1;
    printf("\nMax Value from %i and %i is %i",max1,min1,max2);
    break;
case 2:
    m = 0;
    i = 0;
    for ( i = 0; i < n; i++)
    {
        if(( a[i] % 2 == 0)&&(k<3)&&(i < n/2))
        {
            SetColor(2);
            printf("\t%i",a[i]);
            sum += a[i];
            // M хранит кол-во чётных элементов до середины массива.
            m++;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
        }
    }
    AverageValue = sum / m;
    printf("\nAverageValue = %i",AverageValue);
    break;
case 3:
    for ( i =0; i < n; i++)
    {
        if ( a[i] % 5 == 0)
        {
            a[i] = 15;
            SetColor(2);
            printf("\t%i",a[i]);
            // S хранит кол-во элементов делящихся на 5.
            s++;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
        }
    }
    break;
default:
    printf("enter 1 or 2 or 3!");
    goto def;
}
Answer 1
// Размер массива
const int n = 10;
// Наш массив заданный вручную.
int a[n];
// Переменная для меню.
int choice;
// Переменные хранящие размер наших вспомогательных массивов.
int count1=0,count2=0,count3=0;
int s =0;
int k = 0;
 // Для хранения первых 3х положительных значений массива и последних двух чётных чисел массива сответственно.
int x[count1],y[count2],z[count3];
int max1,max2,min1,i,m=0;
int AverageValue = 0, sum = 0;
for ( int i = 0; i < n; i++)
{
    printf("a[%d]=",i);
    scanf("%i",&a[i]);
}

def: printf("\n Enter \n 1) max(max(first 3), min(last 2 even). \n 2) Average even(3 elements before average element of array. \n 3) Elements who are devidet into 5 replace to 15.))\n Enter your choice = "); scanf("%i",&choice);

switch(choice)
{
case 1:
    for ( i = n-1; i >= 0; i--)
    {
            if (a[i] % 2 == 0)
            {
                z[count3++]=i;
            }
            continue;
    }
    for ( i = 0; i < n; i++)
    {
        if( m < 3)
        {
            if (a[i] > 0)
            {
                SetColor(2);
                printf("\t%i",a[i]);
                x[count1++] = a[i];
                m++;
                continue;
            }
            else
            {
                SetColor(15);
                printf("\t%i",a[i]);
                continue;
            }
        }
        if (( i == z[0] )||( i == z[1] ) )
        {
            SetColor(4);
            printf("\t%i",a[i]);
            // Записываем нужные эл-ты в массив для последущего нахождения максимального значения.
            y[count2++] = a[i];
            k++;
            continue;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
            continue;
        }
    }
    SetColor(15);
    max1 = x[0];
    for ( i = 0 ; i < 3; i++)
    {
        max1 = x[i] > max1 ? x[i] : max1;
    }
    min1 = y[0];
    for ( i = 0; i < 2; i++)
    {
        min1 = y[i] < min1 ? y[i] : min1;
    }
    max2 = max1 > min1 ? max1 : min1;
    printf("\nMax Value from %i and %i is %i",max1,min1,max2);
    break;
case 2:
    m = 0;
    i = 0;
    for ( i = 0; i < n; i++)
    {
        if(( a[i] % 2 == 0)&&(k<3)&&(i < n/2))
        {
            SetColor(2);
            printf("\t%i",a[i]);
            sum += a[i];
            // M хранит кол-во чётных элементов до середины массива.
            m++;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
        }
    }
    AverageValue = sum / m;
    printf("\nAverageValue = %i",AverageValue);
    break;
case 3:
    for ( i =0; i < n; i++)
    {
        if ( a[i] % 5 == 0)
        {
            a[i] = 15;
            SetColor(2);
            printf("\t%i",a[i]);
            // S хранит кол-во элементов делящихся на 5.
            s++;
        }
        else
        {
            SetColor(15);
            printf("\t%i",a[i]);
        }
    }
    break;
default:
    printf("enter 1 or 2 or 3!");
    goto def;
}
READ ALSO
Почему один код выдает &ldquo;Значение типа char(*)[4] нельзя использовать для инициализации сущности типа char**&rdquo;, а другой работает?

Почему один код выдает “Значение типа char(*)[4] нельзя использовать для инициализации сущности типа char**”, а другой работает?

Вопрос такой, почему один код выдает "Значение типа char(*)[4] нельзя использовать для инициализации сущности типа char**"

138
Открытие и считывание файла

Открытие и считывание файла

При вот таком вот способе открытия файла выдает ошибку следующего характера: (фото 1 и фото 2)Как можно исправить? Спасибо

112
Qt. Начало работы

Qt. Начало работы

Установил Qt Creator версии 48

109