Автор Тема: C++, обьясните пожалуйста  (Прочитано 2928 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zapaza

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
C++, обьясните пожалуйста
« : 13 Января 2010, 15:16:26 »
Условие:
Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе - горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, являются ли поля (k, l) и (m, n) полями одного цвета.
Код:
#include <stdio.h>

 

short int isEven(int x) { // функция проверки четности числа
 if(x % 2 == 0) return 1;
  else return 0;
}
int main()
{
 int k, l, m, n; //описание переменных, хранящих координаты полей
 printf("\n Vvedite chisla  k, l, m, n : \n");
 scanf("%d %d %d %d", &k, &l, &m, &n); // чтение координат полей
 if(isEven(k) && isEven(l) && isEven(m) && isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(!isEven(k) && !isEven(l) && !isEven(m) && !isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(!isEven(k) && !isEven(l) && isEven(m) && isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(isEven(k) && isEven(l) && !isEven(m) && !isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(isEven(k) && !isEven(l) && isEven(m) && !isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(!isEven(k) && isEven(l) && isEven(m) && !isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(isEven(k) && !isEven(l) && !isEven(m) && isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else if(!isEven(k) && isEven(l) && !isEven(m) && isEven(n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
  else printf("\n Polj (k, l) i (m, n) - raznogo chveta.\n");
 return 0;
}
есть ли в этом коде шибки? запускаю программу вроде работает но дальше ввода чисел не идет. почему?

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #1 : 13 Января 2010, 15:39:12 »
можно ветвлений меньше сделать...

если (k+l) и (m+n) четные - то одного цвета;
если (k+l) и (m+n) нечетные - то одного цвета;

соответственно меньше вероятность ошибки при написании...

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #2 : 13 Января 2010, 15:42:46 »
Т.е. типа такого:

 if(isEven(k+l) && isEven(m+n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");
 if(!isEven(k+l) && !isEven(m+n))  printf("\n Polj (k, l) i (m, n) - odnogo chveta.\n");

К сожалению синтаксиса си не знаю, поэтому может и ошибка быть...

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #3 : 13 Января 2010, 16:10:17 »
Я бы честно говоря не стал бы ввод одним scanf писать
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #4 : 13 Января 2010, 16:13:31 »
Переопределите функцию IsEven так чтобы тип возврата был bool. Возможно это поможет
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #5 : 13 Января 2010, 16:17:59 »
У вас эти ветвления наверняка провоцируют ошибки из области видимости. Перепишите  их(здесь я с Ki  полностью согласен)
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн zapaza

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: C++, обьясните пожалуйста
« Ответ #6 : 20 Января 2010, 15:25:55 »
Спасибо всем большое за помощь) с задачей разобралась)

 

Люди добрые помогите пожалуйста с решением задачки в паскале

Автор Fi

Ответов: 3
Просмотров: 4809
Последний ответ 22 Апреля 2010, 09:54:05
от Asix
Помогите решить пожалуйста. Алгоритм в виде блок схемы

Автор Кочубеев

Ответов: 0
Просмотров: 4094
Последний ответ 22 Сентября 2010, 18:31:07
от Кочубеев
Помогите пожалуйста решить задачи в паскале!!!очень срочно

Автор sergsergserg

Ответов: 2
Просмотров: 4192
Последний ответ 28 Октября 2010, 21:14:22
от domny
Добрый День помогите пожалуйста решить задачи на Паскале!!!

Автор Ramzes 1993

Ответов: 1
Просмотров: 2291
Последний ответ 31 Октября 2011, 12:13:47
от wital1984
Помогите пожалуйста решить задачу симплекс методом.

Автор MissKiss

Ответов: 5
Просмотров: 4100
Последний ответ 10 Ноября 2010, 02:01:49
от tig81