Форум программистов, компьютерный форум CyberForum.ru

Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 - C++

Восстановить пароль Регистрация
 
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
08.10.2012, 14:11     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #1
Почему то,когда ввожу данные,результаты не выводит,где здесь ошибка и как в виде таблицы вывести,и ещё,правильно ли записал,чтобы при делении на 0 выбивало ошибку?
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от XНАЧ до XКОН с шагом dX.
f=a*x2+b2*x,при с<0 и b 0
f=x+a/x+c,при с>0 и b=0
f=x/c,в остальных случаях


где a, b, c – действительные числа. Функция F должна принимать действительное значение, если выражение (Ац И Вц) ИЛИ (Ац И Сц) не равно 0, и целое значение в противном случае. Через Ац, Вц, и Сц обозначены целые части значений a, b, c, операции И и ИЛИ – поразрядные. Значения a, b, c, XНАЧ, XКОН, dX ввести с клавиатуры.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
double Xn, Xk, a, b, c, dx, f, x;
 
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Vvedite Xn: ";cin>>Xn;
cout<<"\nVvedite Xk: ";cin>>Xk;
cout<<"\nVvedite a: ";cin>>a;
cout<<"\nVvedite b: "; cin>>b;
cout<<"\nVvedite c: "; cin>>c;
cout<<"\nVvedite hag: "; cin>>dx;
x=Xn;
while(x<=Xk)
    {  
    if((c<0) && (b!=0)) 
    { f=(a*pow(x,2))+(pow(b,2)*x);
       if((c>0) && (b==0)) 
       {if ((x+c)==0) {cout << "oshibka!!! delenie na 0!!!" << endl; x+=dx; continue;} 
          else 
             f=(x+a)/(x+c);}
       else {if (c==0) {cout << "oshibka!!! delenie na 0!!!" << endl; x+=dx; continue;} 
          else 
          f=x/c;
int Ac=static_cast<int>(a); 
int Bc=static_cast<int>(b); 
int Cc=static_cast<int>(c); 
int Fc=static_cast<int>(f);  
if ((Ac&Bc)|(Ac&Cc)!=0) cout << "pri x= " << x << ";  F= " << f <<" \n";
  else
  cout << "pri x= " << x << ";  Fc= " << Fc <<" \n";
x+=dx;
}
system("pause");
}
}
}
Добавлено через 2 часа 6 минут
up!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 14:11     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0
Посмотрите здесь:

C++ Вывести текст в виде таблицы
[C++] вывести на экран в виде таблицы C++
написать программу в Dev-C++ для поиска трехзначных чисел, которые при делении на 47 дают в остатке 43, а при делении на 43 дают в остатке 47 C++
C++ Вывести данные в виде таблицы
Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
08.10.2012, 14:24     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #2
У вас неправильно расставлены скобки в условиях.
C++
1
2
3
4
5
6
if((c<0) && (b!=0)) {
// выполнится если c < 0 и b != 0
    if ((c>0) && (b==0)() {
        // никогда не выполнится, т.к. тут обязательно c < 0 и b != 0
    }
}
И еще числа с плавающей точкой лучше сравнивать не используя оператор ==, потому что возможны ошибки связанные с погрешностью при вычислениях. Лучше сделать так:
C++
1
2
3
4
double a, b;
if (fabs(a-b) < e) // проверяется что разность между двумя числами меньше некоторой точности e. {
//
}
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
08.10.2012, 15:00  [ТС]     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #3
эмм,ну у меня просто условие такое,что с>0 и b=0,или вы имеете ввиду ,что я не правильно описал?

и ещё не можете подсказать,чтобы выводилось в виде таблицы?
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
08.10.2012, 15:40     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #4
Я имел ввиду что внутри условия c < 0 и b!=0 проверяется c>0 и b==0, которое не будет выполнено.
А в виде таблицы можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
// вывести шапку
cout << "+-------------+------------+" << endl 
       << "|        x         |        f(x)    |" << endl
       << "+-------------+------------+" << endl
// для каждого x вывести значение
cout.precision(5);
while (....) {
    //...
    cout << "|     " << x << "       |" << endl;
}
cout << "+--------+--------+" << endl
только размеры таблицы надо будет поправить
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
08.10.2012, 16:24  [ТС]     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #5
а ну там просто,нужно расставить более точно скобки,а таблицу разобрался как делать уже,спасибо за помощь)

Добавлено через 11 минут
Всёравно зависает программа,а ошибку выводить не хочет к сожалегию(((
newlam
 Аватар для newlam
2 / 2 / 0
Регистрация: 06.05.2013
Сообщений: 19
14.07.2013, 02:23     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 #6
Делаю этоже задание) . Выполнил часть задания на c++. Тестировал мало. Вопрос такой:
что значит вот это условие (
+где a, b, c – действительные числа.
-Функция F должна принимать действительное значение, если выражение (Ац И Вц) ИЛИ (Ац И Сц) не равно 0, и целое значение в противном случае.
-Через Ац, Вц, и Сц обозначены целые части значений a, b, c, операции И и ИЛИ – поразрядные.
+ Значения a, b, c, XНАЧ, XКОН, dX ввести с клавиатуры.)
\ Там где "-" - не понимаю задание.
Что значит (Ац И Вц) ИЛИ (Ац И Сц) не равно 0
Код программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    setlocale(0,"");
    float a,b,c,x,xn,xk,dx;
    cout<<"a =";cin>>a;
    cout<<"b =";cin>>b;
    cout<<"c =";cin>>c;
    cout<<"xn =";cin>>xn;
    cout<<"xk =";cin>>xk;
    cout<<"dx =";cin>>dx;
    float F;
    x=xn;
    cout<<" _______"<<endl;
    while (x<=xk) {
    if (c<0 & b!=0) {
        F=a*pow(x,2)+pow(b,2)*x;
        cout<<"| F = "<<F<<"|"<<endl;
    } else if (c>0 & b==0) {
        if ((x+c)!=0) 
        {
            F=(x+a)/(x+c);
            cout<<"| F = "<<F<<"|"<<endl;
        }
        if ((x+c)==0) cout<<"Деление на '0'"<<endl;
 
    }
    else {
        if (c!=0) {
        F=x/c;
        cout<<"| F = "<<F<<"|"<<endl;
    } 
        if (c==0) cout<<"Деление на '0'"<<endl;
    }
    x=x+dx;
    
}
    cout<<"|______|"<<endl;
    system("pause");
    return 0;
}
Добавлено через 4 часа 46 минут
Выполнил. Надеюсь все правильно понял.
Из ошибок: при х(отрицательных) округление неправильно работает.Исправлять неохота,код итак получился громоздкий.
Код c++ :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <math.h>
using namespace std;
 
bool func(float a,float b,float c)
//(Ац И Вц) ИЛИ (Ац И Сц) не равно 0
{
if ((int(a) & int(b)) | (int(a) & int(c))!=0) return(true); else return(false);
}
int main()
{
    setlocale(0,"");
    float F,a,b,c,x,xn,xk,dx;
    cout<<"a =";cin>>a;
    cout<<"b =";cin>>b;
    cout<<"c =";cin>>c;
    cout<<"xn =";cin>>xn;
    cout<<"xk =";cin>>xk;
    cout<<"dx =";cin>>dx;
    x=xn;
    cout<<"Проверка : ["<<func(a,b,c)<<"]   0=> F-целое;  1=> F-действительное;"<<endl;
    cout<<"*******************"<<endl;
    cout<<"* X *      F      *"<<endl;
    cout<<"*******************"<<endl;
    while (x<=xk) {
    if (c<0 & b!=0) {
        F=a*pow(x,2)+pow(b,2)*x;
        if (func(a,b,c)) cout<<"* "<<x<<" *      "<<int(F*100+0.5)/100.0<<endl; else cout<<"* "<<x<<" *      "<<int(F)<<endl;
    } else if (c>0 & b==0) {
        if ((x+c)!=0) 
        {
            F=(x+a)/(x+c);
            if (func(a,b,c)) cout<<"* "<<x<<" *      "<<int(F*100+0.5)/100.0<<endl; else cout<<"* "<<x<<" *      "<<int(F)<<endl;
        }
        if ((x+c)==0) cout<<"Деление на '0'"<<endl;
 
    }
    else {
        if (c!=0) {
        F=x/c;
        if (func(a,b,c)) cout<<"* "<<x<<" *      "<<int(F*100+0.5)/100.0<<endl; else cout<<"* "<<x<<" *      "<<int(F)<<endl;
    } 
        if (c==0) cout<<"Деление на '0'"<<endl;
    }
    x=x+dx;
    
}
    cout<<"*******************"<<endl;
 
    system("pause");
    return 0;
}
Yandex
Объявления
14.07.2013, 02:23     Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0
Ответ Создать тему
Опции темы

Текущее время: 23:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru