Каждый четный элемент массива умножить на минимальный его элемент

sorryPlzHelpME

В одномерном массиве, состоящем из n целых элементов, каждый четный элемент умножить на минимальный элемент массива, а нечетный – на максимальный.
4 ответа

sorryPlzHelpME

#include <stdio.h>
int main ()
{
int n=0, mas[n], i=0, min=0, max=0;
printf("Vvedite N:");
scanf("%i",&n);
for (i=0;i<n;i++)
{
    printf("Vvedite mas%i = ", i);
    scanf("%i", & mas[i]);
}
for (i=0, min=mas[0], max=mas[0]; i<n; i++)
{
    if(mas[i]<min) min=mas[i];
    if(mas[i]>max) max=mas[i];
}
printf("\nMin: %d\nMax: %d\n", min, max);
for (i=0; i<n; i++)
    {
       if (mas[i]%2) mas[i]*=max;
       else mas[i]*=min;
    }
for (i=0;i<n;i++)
    {
        printf("Element mas=%i\n", mas[i]);
    }
return 0;
}


sorryPlzHelpME

а почему оно считает только 4 значения а потом пишет ошибку ??


sorryPlzHelpME

а почему оно считает только 4 значения а потом пишет ошибку ??
выбивает ошибку если выше количество N больше 8, не знаю почему.можно сделать по-другому. заменить это:
int n=0, mas[n], i=0, min=0, max=0;
printf("Vvedite N:");
scanf("%i",&n);
for (i=0;i<n;i++)
на это.
int i=0, min=0, max=0;
const int n=10;
int mas[n]={0};
for (i=0;i<n;i++)
но тогда количество n будет константой.


sorryPlzHelpME

#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
int *mas, i, min, max, n;
 
printf("Input n:");
scanf("%d", &n);
mas=(int *)malloc(n*sizeof(int));
for (i=0; i<n; i++)
   {
      printf("Input mas[%i] = ", i+1);
      scanf("%d", mas+i);
      if (!i)  {min=mas[0]; max=mas[0];}
      if (mas[i]<min) min=mas[i];
      if (mas[i]>max) max=mas[i];
   }
 
printf("\nMin: %d\nMax: %d\n", min, max);
 
for (i=0; i<n; i++)
   {
       if (!(i%20)) printf("\n");
       if (mas[i]%2) mas[i]*=max;
          else mas[i]*=min;
       printf("mas[%d]= %d\n", i+1, mas[i]);
   }
free(mas);
return 0;
}
Слегка отредактировал
выбивает ошибку если выше количество N больше 8, не знаю почему.
Нет выделения памяти Почитайте про динамическое распределение памяти (wiki)