101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
1

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

08.10.2012, 14:11. Показов 1356. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему то,когда ввожу данные,результаты не выводит,где здесь ошибка и как в виде таблицы вывести,и ещё,правильно ли записал,чтобы при делении на 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!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2012, 14:11
Ответы с готовыми решениями:

Мне нужно, чтобы когда я вводил буквы, выбивало ошибку.
let x = prompt('Введите x',''); if (x &gt; 0) { alert(x*2); } else if (x&lt;0) { alert(x*3);...

Как сделать так, чтобы в указанном код при делении на 0 не писало ошибку?
#include &quot;pch.h&quot; #include &lt;iostream&gt; using namespace std; int main() { int a, b, res;...

как сделать так чтобы при нажатии на крестик или на кнопку Завершить выбивало подтверждающих закрытия
как сделать так чтобы при нажатии на крестик или на кнопку Завершить выбивало подтверждающих...

Вложенный цикл. Найти трехзначные числа, которые при делении на 2 дают остаток 1, при делении на 3 остаток 2, при делении на 4 остаток 3
НАЙТИ С ПОМОЩЬЮ ВЛОЖЕННОГО ЦИКЛА))) найти асе трехзначные числа, которые при делении на 2 дают...

5
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
08.10.2012, 14:24 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. {
//
}
0
101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
08.10.2012, 15:00  [ТС] 3
эмм,ну у меня просто условие такое,что с>0 и b=0,или вы имеете ввиду ,что я не правильно описал?

и ещё не можете подсказать,чтобы выводилось в виде таблицы?
0
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
08.10.2012, 15:40 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
только размеры таблицы надо будет поправить
0
101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
08.10.2012, 16:24  [ТС] 5
а ну там просто,нужно расставить более точно скобки,а таблицу разобрался как делать уже,спасибо за помощь)

Добавлено через 11 минут
Всёравно зависает программа,а ошибку выводить не хочет к сожалегию(((
0
2 / 2 / 1
Регистрация: 06.05.2013
Сообщений: 34
14.07.2013, 02:23 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;
}
0
14.07.2013, 02:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2013, 02:23
Помогаю со студенческими работами здесь

Что необходимо сделать, чтобы при массив можно было вводить в виде таблицы
а не как у меня-только в столбик

Как сделать, чтобы при вводе двумерного массива он сразу отображался в виде таблицы?
Желательно использовать оператор setw().


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru