Важная информация
Показано с 1 по 2 из 2

Тема: помогите с решением задачи

  1. #1 помогите с решением задачи 
    Новичок
    Регистрация
    03.02.2018
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    подскажите, в чем я ошибся. Задание: найти значения z при всех значениях x, y, b. Проблема в том, что программа использует только b=2, а должно быть еще 4, 6 и 8. и y выходит за 2 при том, что в форе я выставил границы от -2 до 2 с шагом в 1. Вот сам код:
    C++ Code:
    1. #include <iostream>
    2. #include <math.h>
    3. #include <conio.h>
    4. using namespace std;
    5. int main()
    6. {
    7.   short int y, b;
    8.   double a, k, x;
    9.   float z;
    10.   x = -1;
    11.   y = -2;
    12.   a = 1,7;
    13.   system("cls");
    14.   for (b = 2; b < 9; b = b+2) {
    15.     for (x = -1; -1 <= x <= 1; x += 0,9) {
    16.       for (y = -2; -2 <= y <= 2; y += 1) {
    17.         k = x*y;
    18.         if (k > 0)
    19.           z = log(sqrt(a*pow(x, 2) + b*pow(y, 3)));
    20.         else if (k <= 0)
    21.           z = pow(a, x) + pow(b, y);
    22.         cout.precision(3);
    23.         cout « "b=" « b « "\nx=" « x «"\ny="« y « "\nz=" « z « "\n";
    24.       }
    25.     }
    26.   }
    27.   cout « "press any key";
    28.   system("pause");
    29. }

    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Последний раз редактировалось rrrFer; 17.02.2018 в 13:32. Причина: форматирование кода
    Ответить с цитированием  
     

  2. #2  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 248 раз(а) в 164 сообщениях
    Цитата Сообщение от Roma Pentsak Посмотреть сообщение
    C++ Code:
    1. -1 <= x <= 1
    Нельзя так писать. Правильно:
    C++ Code:
    1. -1 <= x && x <= 1


    Потому что в вашем случае выполняется первая часть и возвращает bool (true или false), который подставляется во вторую часть. В результате вместо
    C++ Code:
    1. x <= 1
    выполняется
    C++ Code:
    1. true <=1
    , например.

    C++ Code:
    1. x += 0,9

    Тут записано, скорее всего не то, что вы хотели. Выполняется
    C++ Code:
    1. x+=0
    , а запятая используется как разделитель выражений. Вторым выражением является 9 (ну оно просто ни на что не влияет). С тем же успехом можно было написать, например:
    C++ Code:
    1. x += 0,"hello world"


    Ну и еще сразу в глаза бросился этот момент:
    C++ Code:
    1. z = pow(a, x) + pow(b, y);

    Это просто неэффективно. Правильно было бы не возводить в степень каждый раз, а использовать прием, который называется мемоизацией.

    Возможно это не все проблемы в коде, просто то, что сразу заметил.
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (17.02.2018), Free Admin (19.02.2018)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Срочно - Помогите расклинить мозг с решением простейшей задачи!
    от SMB в разделе Общие вопросы программирования
    Ответов: 26
    Последнее сообщение: 12.09.2014, 20:39
  2. Помогите с решением
    от Вадим Шевель в разделе QBasic
    Ответов: 2
    Последнее сообщение: 26.06.2014, 05:29
  3. Помогите решить задачи по С++
    от александр22 в разделе Общие вопросы программирования
    Ответов: 2
    Последнее сообщение: 21.05.2014, 14:00
  4. помогите решить задачи пожалуйста
    от vetal в разделе Turbo Pascal
    Ответов: 6
    Последнее сообщение: 28.04.2012, 20:36
  5. Помогите решить задачи по BASIC -y
    от Denis в разделе QBasic
    Ответов: 1
    Последнее сообщение: 19.01.2012, 06:35
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •