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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 13:00   #1
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Проверьте код с++

Код:
#include <iostream>
#include <math.h>

using namespace std;

int main ()
    {
     double a,b,c,Xstart,Xend,dX,f;
     setlocale( LC_ALL, "rus" );
     cout << "Введите значения a,b,c,Xнач.,Xкон.,dX"<< endl;
     cin >> a >> b >> c >> Xstart >> Xend >> dX;
     cout << "X                F" << endl;
     for (double i=Xstart; i<=Xend; i+=dX )
         {
         if (a>0 && c==0 && i==0) cout << i <<"               " << "не существует"<< endl;
         else {
                if ((a<0)&&(c!=0)) f=a*pow(i,2)+pow(b,2)*i;
                else if ((a>0)&&(c==0)) f=(i+a)/(i+c);
                else f=i/c;
                if (((int)a & (int)b | (int)a & (int)c )!=0)  { cout << i << "               " << f << endl;} 
                else {cout << i << "            " << (int)f << endl; }
             }
         };
     
     return 0;
    }

Задание: Вычислить и вывести на экран в виде таблицы значения функции F на интервале Хнач. до Хкон. с шагом dX

ax2+b2x при с<0 и b!=0
F= (x+a)/(x+c) при c>0 и b=0
x/c в остальных случаях
где a, b и с – действительные числа.
Функция F должна принимать действительное значения, если выражение (Ац И Вц) ИЛИ (Ац И Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц, и Сц обозначаются целые части a,b,c, операции И и ИЛИ – поразрядные. Значения a,b,c,Хнач, Хкон, dX ввести с клавиатуры.

В университет программа выдает ошибку. Помогите пожалуйста найти
Tatyana64 вне форума Ответить с цитированием
Старый 02.11.2012, 13:10   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Откомпилируйте, и скопируйте сообщение об ошибке из логов. Тут экстрасенсов нет.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 02.11.2012, 16:15   #3
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Не правильный ответ

Ошибка в том что ответы выдает только действительные числа (это при условии не равенства 0), а при условии =0 должны быть целые.
А программа и в том и в другом случае выдает только действительные
Tatyana64 вне форума Ответить с цитированием
Старый 02.11.2012, 17:11   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

При каких a, b и c испытывали? Это вообще Ваша программа?
Abstraction вне форума Ответить с цитированием
Старый 02.11.2012, 18:19   #5
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Программа моя

испытывала 1- вариант
а=2.5, в=-5.2, с=3.6 х нач=1 х кон=11 шаг2
Я так понимаю при этих значениях в ответе должны быть действительные числа
2 вариант
а=2.5, в=-3.2, с=3.6 х нач=1 х кон=11 шаг2, а в этом случае целые

ведь условие Ац и Вц или Ац и Сц
тогда в первом случае 2*(-5)+2*3 не равно нулю
а во втором 2*(-3)+2*3=0
Tatyana64 вне форума Ответить с цитированием
Старый 03.11.2012, 20:59   #6
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию вот моя ошибка

Описание ошибки
Ваша программа имеет неправильный синтаксис. Указанный компилятор не может создать выполняемой файл для вашей программы.
Сообщения компилятора
y5ca7d.cpp
C:\PROGRA~1\MICROS~1\VC98\INCLUDE\i stream(547) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify -GX
y5ca7d.cpp(11) : error C2065: 'setprecision' : undeclared identifier
Tatyana64 вне форума Ответить с цитированием
Старый 03.11.2012, 22:40   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от Tatyana64 Посмотреть сообщение
испытывала 1- вариант
а=2.5, в=-5.2, с=3.6 х нач=1 х кон=11 шаг2
Я так понимаю при этих значениях в ответе должны быть действительные числа
2 вариант
а=2.5, в=-3.2, с=3.6 х нач=1 х кон=11 шаг2, а в этом случае целые

ведь условие Ац и Вц или Ац и Сц
тогда в первом случае 2*(-5)+2*3 не равно нулю
а во втором 2*(-3)+2*3=0
1) У Вас в условии не обычные умножение и сложение;
2) (int)-3.2, если не путаю, даст -4 (даже если путаю, после пункта 1 несущественно: выражение 2&(-3) | 2&3 имеет значение 2).
Abstraction вне форума Ответить с цитированием
Старый 04.11.2012, 09:38   #8
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Спасибо

Ошибку нашла, спасибо за совет. Но теперь у меня другая проблема.
При исходных данных
а=0 в=0 с=1 получается деление на НОЛЬ и в ответе при компиляции получаю -1.#INF а должно получиться 0
Подскажите как можно обойти этот подводный камень
Tatyana64 вне форума Ответить с цитированием
Старый 04.11.2012, 10:23   #9
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Теперь код такой

Код:
#include <iostream>
#include <math.h>

using namespace std;

int main ()
    {
     float a,b,c,Xstart,Xend,dX,f;
     double j=0; 
	 cin >> Xstart >> Xend >> dX>> a >> b >> c;
	 for (float i=Xstart; i<=Xend; i+=dX )
         {
         j=j+1;
		 if ((c<0)&&(b!=0)) f=a*pow(i,2)+pow(b,2)*i;
         if ((c>0)&&(b==0)) f=(i+a) / (i+c);
                else f=i/c;
         if ((floor(a) && floor(b)) || (floor(a) && floor(c) )!=0)  { cout << j << "  " << i << "               " << f << endl;} 
                else {cout << j << "  " << i << "            " << floor(f) << endl; }
            };
          system ("PAUSE");
     return 0;
    }
Я так думаю что и при f=i/c тоже будет ошибка при "с" будет равно 0
Tatyana64 вне форума Ответить с цитированием
Старый 04.11.2012, 12:33   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Будет. А что делать, если при c=0 предлагается считать x/c? Как бы вопросы к тому, кому понадобилась такая "функция", программа ведёт себя абсолютно честно: что попросили, то и получили.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверьте код с++ mary++ Помощь студентам 0 18.12.2011 00:38
Проверьте код Ko$ Помощь студентам 4 17.03.2011 14:29
Проверьте код neomax38 Помощь студентам 2 27.12.2010 16:53
Проверьте код monty "2" Помощь студентам 2 08.04.2010 17:44
Проверьте код ! Михаил Юрьевич Общие вопросы Delphi 7 08.02.2008 09:32