Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Большая просьба, на будущее научиться делать домашние задания самостоятельно, а не требовать помощи на форумах от занятых людей.
Код: Выделить весь код
#include <stdio.h>

int arrayops(int *array, int size, int *m_array, int *s_array)
{
  int i, j, tmp, mul=1, sum=0, first0=-1, last0=-1;

/* считаем, что нумерация массива начинается с 0 и что первое четное число равно 2 */
  for( i=2; i<size; i=i+2) mul *= array[i]; 
  *m_array=mul;

  for( i=0; i<size; i++){
    if( array[i] == 0 ){
      if( first0 == -1 ) first0=i;
      last0=i;
    }
  }
  if( first0 > last0 - 2 ) return 1;
  for( i=first0+1; i<last0; i++ ) sum += array[i];
  *s_array=sum;

  j = size - 1;
  for( i=0; i<j; i++) {
    while( array[j] < 0 ) j--;
    if( array[i] < 0 ) {
      array[i] = array[i] ^ array[j];
      array[j] = array[i] ^ array[j];
      array[i] = array[i] ^ array[j--];
    }
  }
  return 0;
}


void main()
{
  int i, m_array, s_array;
  int arr[]={3,5,0,1,-2,0,4,-7,0,0,-5,-5,0,-1,2};
  if( arrayops(arr, sizeof(arr)/sizeof(int), &m_array, &s_array) != 0 ) printf ("Invalid input data\n");
  printf ("mul = %d, sum = %d", m_array, s_array);
  for( i=0; i< sizeof(arr)/sizeof(int); i++) printf (", arr[%d] = %d", i, arr[i]);
  printf(".\n");
}
Не могу сказать, что код оптимальный - набросал первый попавшийся.

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:36, 23-11-2012 | #4