Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2014, 14:43   #1
ЕленаPRO
Пользователь
 
Регистрация: 29.09.2014
Сообщений: 17
По умолчанию язык си не могу разобраться до конца, вот моя проба

дан одномерный массив из 15 целых элементов. посчитать суммы элементов с четными числом и произведение с нечетными. а затем написать,что больше
сумма или произведение.
Код:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int x[15],i,s=0,p=0;
  for(i=0;i<15;i++)
  {
                   printf("x[%d]=",i+1);
                   scanf("%d",&x[i]);
                   }
                   { 
                                     if(x[i]%2==0&&x[i]%1==0)
                                     s+=x[i];
                                     p*=x[i];
                                     }
                                     printf("symma=%d",s);
                                     printf("prouzvedenie=%d",p);
  system("PAUSE");	
  return 0;
}

Последний раз редактировалось ACE Valery; 28.10.2014 в 15:13.
ЕленаPRO вне форума Ответить с цитированием
Старый 28.10.2014, 14:52   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
p=0
Круто!
+Бонус тебе.

Выражение x[i] % 1 == 0 даст true всегда при x[i] != 0! Фтопку.
Особенно, если оно в тело цикла не входит и i за пределами массива.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 28.10.2014 в 15:00.
min@y™ вне форума Ответить с цитированием
Старый 28.10.2014, 15:14   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Короче, я б сделал примерно так:
Код:
/*
дан одномерный массив из 15 целых элементов. посчитать суммы элементов с четными
числом и произведение с нечетными. а затем написать,что больше
сумма или произведение.
*/

// функция расчёта суммы S чётных элементов и произведения P нечётных элементов
// массива целых чисел Х длиной Size.
// Возвращаемое значение: -1, 0, +1.
int Counter(const int* X, const unsigned int Size, long* S, long* P)
{
  *S = 0L;
  *P = 1L;

  for (int Index = 0; Index != Size; Index++)
    if (X[Index] & 1) *P *= X[Index]; // нечётный элемент
    else              *S += X[Index]; // чётный элемент
    
  if (*S == *P) return 0; // сумма равна произведению
  if (*S < *P)  return 1; // сумма меньше произведения
  return -1;              // сумма больше произведения
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 28.10.2014, 15:24   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

ЕленаPRO, я стесняюсь спросить, а деббагером пользоваться вас не учили?

Что будет, если любое число умножить на 0? Думаю, ответ знаете. Так почему вы произведение изначально обнуляете? Четное число - это число%2 == 0. Нечетное - это число%2 != 0
Код:
 if(x[i]%2==0&&x[i]%1==0)
Вот эта строка у вас значит: если число четное И число делится на единицу.
Отсутствие фигурных скобок после ифа говорит о том, что при условии, заданном в ифе, выполнится только следующая за ифом строка. Вторая строка выполнится в любом случае.

min@y™, я тоже стесняюсь спросить, но все же спрошу. Нафига давать такой код? Как будто не видно, что задание начального уровня и указатели и функции они не проходили еще. Повыделываться хочется? Так это в тематический раздел про С++, там как раз вопросы повыше уровнем встречаются.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 28.10.2014 в 15:27.
ACE Valery вне форума Ответить с цитированием
Старый 28.10.2014, 15:44   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
я тоже стесняюсь спросить, но все же спрошу.
Нинада, раз стесняешься.
Цитата:
Нафига давать такой код?
Какой код? Ах, этот код! Так я его и не давал.
Цитата:
Как будто не видно, что задание начального уровня и указатели и функции они не проходили еще.
А мне это абсолютно ультрафиолетово.
Цитата:
Повыделываться хочется?
Ни в коем случае. У меня сегодня день рождения, я сижу на работе и мне очень скучно. Жду конца рабочего дня.

Чо тебя не устраивает-то? Я просто запостил сообщение. Оно тебя оскорбило и/или нарушает правила форума? Удали, тыжмодератор. Не оскорбило и не нарушает - пройди мимо. Спрашиваю как нормального человека, а не тыжмодератора: чо прицепился? Чо не так?
Цитата:
Повыделываться хочется?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу до конца понять задание AdelinaMango Общие вопросы C/C++ 9 29.03.2014 20:49
Не могу до конца понять задание AdelinaMango Общие вопросы C/C++ 1 29.03.2014 17:03
Не могу никак дорешать до конца! На CHAR! katya36 Помощь студентам 2 28.04.2009 18:57
Не могу прочитать файл до конца... FEAR Общие вопросы C/C++ 9 04.01.2007 21:46